在ctf中crypto题中,需要用到大量的各种编码解码,而且基本上需要使用python编写,因此,希望记录下来,方便日后查看。
ASCII
|
|
BASE64/32/16
可以将8位字节转化为6位,5位,4位。常用的为64位编码。模块为base64
|
|
/x??
十六进制编码,对应的其实是ascii码,写成这样是为了避免不必要的截断。在python当中使用正则表达式匹配,转化为十进制值,在使用chr
即可。
XXencode/UUencode
这两个编码原理都是一样的,以三个字节作为分组,共24bit,24bit分为四组,每组6bit,对应0~63中某个值。两者的区别在于这64个值的对应表不一样。UUencode对应关系为+32
的ascii码,XXencode自行谷歌。
URL编码
url编码又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。原理其实就是ascii对应的hex前面加上%。
至于中文的url编码问题,不具体展开,有兴趣请移步这里
Unicode编码
python当中所有原始字符串都是由unicode字符组成的,我们看到的比如utf-8,其实都是这些unicode字符encode而来的。在python当中,unicode字符的格式为\u????
。因此,当遇到一些非python的unicode字符格式时,可以通过正则提取然后在加以转换。
由于这在python当中处理有一定困难,可用在线工具替代。
HTML编码
HTML对某些特殊符号会进行编码。