CTF常见编码与其他编码总结(实战 AFCTF 2018 BASE)
一、常见编码最常见的机器编码就是ASCII编码,ASCII编码大致可以分为二部分第一部分:ASCII非打印控制字符(0~31)第二部分:ASCII打印字符(32~127)编码表如下图所示:Base编码,一类编码的统称,如Base16、Base32、Base 64,这类编码方式大都是为了让数据编码到指定的码表中,用来表示、传输、存储各类二进制编码。1. Base 16编码将二进制文本转换成由以下16个字符组成的文本:0123456789ABCDEF例题:666c61677b6261736531365f656e636f64655f7d2. Base 32编码将原数转换成8为二进制串,转换后使用A-Z、2-7三十二个字符和填充符=编码。如原文a先转换成:011000010110001001100011每次取8组,每组只需要5个字节,不够则填充0,同时填充=:01100 00101 10001 00110 00110得出来的数不是8组的倍数,所以末尾要补充0:01100 00101 10001 00110 00110 00000 00000 00000最后三组0,是填充字符,要转化成=,最终编码:MFRGG===例题:MZWGCZ33MRXV66LPOVPWW3TPO5PWEYLTMUZTEX3FNZRW6ZDFPU======3. Base 64编码原理和base32一样,将原数转换成8为二进制串,每次取4组,六个比特位按表转换为字符,不够则填充0,同时填充=。例题:ZmxhZ3tkb195b3Vfa25vd19iYXNlNjRfZW5jb2RlfQ==4. Base64 URLSafe传统base64中+/会被url转义,因此产生了一种新的编码方式,用-_代替传统base64中的+/两个字符。例题:ZmxhZ3t-dXJsfnNhZmV-ZW5jb2RlfQ==5. Base85 编码用5个ASCII字符来表示4个字节,将4个二进制数组成一个32位的数,让后将其转换成85进制,最后每一位对应的值加32转换为字符。例如原字符sure变成二进制:01110011011101010111001001100101通过转换成32位,得到:1937076937转换为85进制得到:37 * 85^4^ +9 * 85^3^ +17 * 85^2^ + 44* 85+22每一位加32,转到ASCII中,得到:F*2M76. URL编码前面和base64类似,但3、*8字节转为4*6字节之后对每个数加32,这样结果刚好在ascii