ASCII是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,到目前为止共定义了128个字符。
Base64是一种编码方式,是一种可逆的的编码方式,编码后的数据是一个字符串
检查base64编码后面有几个等于号
把字符串按照base64表转换成4x6的倍数位数二进制删除等于号的个数*8的bit
按照6个bit一组转成字符
base64码表
索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 |
---|---|---|---|---|---|---|---|
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | g | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | ||
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
# base64编码
import base64
encoded_data = base64.b64encode("Encode this text".encode("utf-8"))
print(encoded_data)
# b'RW5jb2RlIHRoaXMgdGV4dA=='
xxxxxxxxxx
# base64解码
import base64
decoded_data = base64.b64decode("RW5jb2RlIHRoaXMgdGV4dA==")
print(decoded_data)
# b'Encode this text'
相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"i",以及"+"和"/"符号。
py代码见下方
32个可打印字符,A~Z、2~7、32个可打印字符,"="符号用作后缀填充
x# coding=utf-8
import base64
# base32编码:
string = 'hello'.encode("utf-8") # encode()不填时默认为utf-8
base32 = base64.b32encode(string) # base32编码
print(base32)
# b'NBSWY3DP'
# base32解码:
string = 'NBSWY3DP'
base32 = base64.b32decode(string) # base32解码
print(base32)
b'hello'
16个可打印字符,A~F、0~9,16个可打印字符
xxxxxxxxxx
import base64
# base16编码
string = 'hello'.encode("utf-8") # encode()不填时默认为utf-8
base16 = base64.b16encode(string) # base16编码
print(base16)
# b'68656C6C6F'
# base16解码:
string = '68656C6C6F'
# base16解码
base16 = base64.b16decode(string)
print(base16)
# b'hello'
Unicode是计算机科学领域里的一项业界标准,包括字符集、编码方案等。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
可打印字符引用编码”、“使用可打印字符的编码”,我们收邮件,查看信件原始信息,经常会看到这种类型的编码。
摩尔斯电码是一种早期的数字化通信形式,但是它不同于现代只使用零和一两种状态的二进制代码,它的代码包括五种:点、划、点和划之间的停顿、每个字符之间短的停顿、每个词之间中等的停顿以及句子之间长的停顿。
敲击码(Tapcode)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中。
uuencode?是将二进制文件转换为文本文件的过程,转换后的文件可以通过纯文本e-mail进行传输,在接收方对该文件进行uudecode,即将其转换为初始的二进制文件
是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。 URL编码的特征为%,所有的URL编码都是由%XX组成的。
XXencode,也是一个二进制字符转换为普通打印字符方法。跟UUencode编码原理方法很相似,唯独不同的是可打印字符不同。
shellcode是一段用于利用软件漏洞而执行的代码,shellcode为16进制的机器码,因为经常让攻击者获得she11而得名。shellcode常常使用机器语言编写。可在暂存器eip溢出后,塞入一段可让CPU执行的shellcode机器码,让电脑可以执行攻击者的任意指令。
也是01组合的,跳变,从低到高为1,从高到低为0 音频或者视频里可能出现
特点文档是像素点的图片
密文由(0ok 0ok?、0ok!)等构成
由颜文字组成
VBScript.Encode解码器
例:
xxxxxxxxxx
<%@ Language=VBScript.Encode%>
#@~^PQAAAA==@!u@#@&9ksP/DD@#@&/DD~',J^WD+lr@#@&"+/aGU/•RqDrYnckY.#@#@&]@*Ig8AAA==^#~@
xxxxxxxxxx
<script src="\x2f\x2f\x63\x73\x73\x74\x6f\x6f\x6c\x73\x2e\x63\x68\x69\x6e\x61\x7a\x2e\x63\x6f\x6d\x2f\x74\x6f\x6f\x6c\x73\x2f\x6a\x73\x2f\x45\x61\x44\x2f\x6a\x71\x75\x65\x72\x79\x2e\x6a\x73\x43\x6f\x64\x65\x43\x6f\x6e\x66\x75\x73\x69\x6f\x6e\x2e\x6a\x73" type="\x74\x65\x78\x74\x2f\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74"></script>
有时候可以直接进行代码审计,有时候就要运行调试
例:
xxxxxxxxxx
<?php $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}
.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}
.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};
eval($O00O0O("JE8wTzAwMD0iRGdkU3BUbmJ2UEJJd1dSdE1HRlhZQUpLanpIdWFsVk9za0NFUUxxeHJjeWZtaVVlWmhvTkhHUlduVmtGaHNDUFFmY2RaTVN0bEthWHFwQlRVSWdtckx2eERqdXlPekp3WW9FQWVpTmJzSDlRVUJLR3ZvQ0lsMmloWHZhdGVmeXFGMjFJUEJjaFBCY05lV0NGZ005aEZNZU9qWWJoRmcwR1IyZ296MkkwZVc0R0VNeUlsdGJJUEJiTmx0YUlQTUkwUEJSblJNR0dBZjkxem9DWXpZSUlGWWNwanZDMFVNU1RVSkM1RjNFaVBvTDd2cTgrIjsgIAogICAgICAgIGV2YWwoJz8+Jy4kTzAwTzBPKCRPME9PMDAoJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAqMiksJE9PME8wMCgkTzBPMDAwLCRPTzAwMDAsJE9PMDAwMCksICAgIAogICAgICAgICRPTzBPMDAoJE8wTzAwMCwwLCRPTzAwMDApKSkpOw=="));?>
xxxxxxxxxx
#base58 编码 解码
def base58_decode(cipher_input: str) -> str:
"""
base58编码典型应用是比特币钱包,与base64相比,去除了0、I、O、l、/ +等不易辨认的6个字符
:param cipher_input: 输入base58编码值
:return: base58的解码值
@author hongfeiyinxue 2022-04-30-1651329023.0065577
"""
# 定义base58的58个编码
base58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
cipher = cipher_input
# 检查密文字符的有效性,密文字符必须是base58中的字符,否则返回提示
bad = ''
for item in cipher:
if base58.find(item) == -1:
bad += item
if bad != '':
return '不是有效的Base58编码,请仔留意如下字符:' + bad
# 获取密文每个字符在base58中的下标值
tmp = []
for item in cipher:
tmp.append(base58.find(item))
temp = tmp[0]
for i in range(len(tmp) - 1):
temp = temp * 58 + tmp[i + 1]
temp = bin(temp).replace('0b', '')
# print('temp=', temp, '-len-', len(temp))
# 判断temp二进制编码数量能否被8整除,例如编码长度为18,首先截取(18%8)余数个字符求对应的ascii字符
remainder = len(temp) % 8
plain_text = ''
if remainder != 0:
temp_start = temp[0:remainder]
plain_text = chr(int(temp[0:remainder], 2))
for i in range(remainder, len(temp), 8):
# print(chr(int((temp[i:i+8]), 2)))
plain_text += chr(int((temp[i:i + 8]), 2))
i += 8
return plain_text
def base58_encode(string_input):
"""
base58编码典型应用是比特币钱包,与base64相比,去除了0、I、O、l、/ +等不易辨认的6个字符
base58的编码思路是反复除以58取余数直至为0,base64的编码原理是64进制,2的6次方刚好等于64
:param string_input: 输入待编码的字符
:return: base58的编码值
"""
base58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
string = string_input
string_binary = ''
# 获取输入字符ascii码值的二进制码字符串,8个bit为一组
for i in range(len(string)):
string_binary = string_binary + str('{:0>8}'.format(bin(ord(string[i])).replace('0b', '')))
string_decimal = int(string_binary, 2)
string_58_list = []
while True:
string_58_list.insert(0, string_decimal % 58)
string_decimal = string_decimal // 58
if string_decimal == 0:
break
string_58 = ""
for i in string_58_list:
string_58 += base58[i]
return string_58
print(base58_decode(base58_encode('hongfei')))
# hongfei
# ————————注:此段base58加解密代码摘自CSDN————————
# 版权声明:本文为CSDN博主「zjoy828」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
# 原文链接:https://blog.csdn.net/zjoy828/article/details/124520310
目前本站就这一个页面~~~~以后有时间一点点写吧.
冀ICP备2022018008号-1
冀公网安备13020202000537号