Misc 数据编码
一、神奇的进制
二进制
众所周知在计算机的脑海里只有二进制,而二进制却通过各种变化变成我们所看到的各种事物
例:
- 二进制转ASCLL码
- 二进制转morse码
- 二进制转二维码(绘图)
- 二进制转图片(hex)
什么是二进制?
二进制是世界上第一台计算机上用的算法,最古老的计算机里有一个个灯泡,当运算的时候,比如要表达“一”,第一个灯泡会亮起来。要表达“二”,则第一个灯泡熄灭,第二个灯泡就会亮起来。
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。
(1)二进制转ASCLL码
例:
01101110 01100101 对应的ASCLL码就是 n 、和 e
详见参考网站:https://tool.oschina.net/commons?type=4
转换参考网站:https://coding.tools/cn/binary-to-text
(2)二进制转morse码
例如:二进制:10111000
Morse:.----/-.-.-./-----/-.-.-./.----/-.-.-./.----/-.-.-./.----/-.-.-./-----/-.-.-./-----/-.-.-./-----
转换参考网站:https://www.qtool.net/morsecode
(3)二进制转二维码
利用Python进行转换代码如下:
from PIL import Image
MAX = 25
pic = Image.new("RGB",(MAX,MAX))
str ="输入需要转换的二进制"
i=0
for y in range (0,MAX):
for x in range (0,MAX):
if(str[i]=="1"):
pic.putpixel([x,y],(0,0,0))
else :
pic.putpixel([x, y], (255, 255, 255))
i=i+1
pic.show()
pic.save("flag.png")
(4)二进制转图片(hex)
-
先将二进制转化成十六进制
转换参考网站:https://coding.tools/cn/binary-to-text
-
利用010enditor/winhex打开利用图片的格式保存(010enditor使用见上篇笔记)
二、常见的编码
- Ascll
- Base家族
- Morse
- Shellcode
- Urlencode
- Unicode
- aaencode
- jjencode
- uuencode
- Jsfuck
- brainfuck
- ook!
- 敲击码
- 二维码
(1) ASCLL码
ASCII是基于拉丁字母的一套电脑编码系统,它主要用于显示现代英语。
附图:
(2) base 码
base64:
编码原理:Base64编码要求把3个8位字节转化为4个6位的字节,之后在6位的前面补两个0,形成8位一个字节的形式,6位2进制能表示的最大数是2的6次方是64,这也是为什么是64个字符(A-Z,a-z,0-9,+,/这64个编码字符,=号不属于编码字符,而是填充字符)的原因,这样就需要一张映射表,如下:
举个例子(base64):
源文本:T h e
对应ascll码:84 104 101
8位binary:01010100 01101000 01100101
6位binary:010101 000110 100001 100101
高位补0:000010101 00000110 00100001 00100101
对应十进制:21 6 33 37
查表:V G h l
参考网站:http://ctf.ssleye.com/base64.html
base32、16:
Base32编码是使用32个可打印字符(字母A-Z和数字2-7)对任意字节数据进行编码的方案,编码后的字符串不用区分大小写并排除了容易混淆的字符,可以方便地由人类使用并由计算机处理,tips:末尾最多有6个=
The --> KRUGK===
Base16使用数字0-9和字母A-F共计16个ASCII可打印字符对任意字节数据进行编码,tips:不会出现=
The --> 546865
参考网站:http://ctf.ssleye.com/base64.html
base 36:
Base36包含0~9的数字,加上所有26个字母,不区分大小写,不包含任何标点,所有的字母要不全大写,要不全小写。所以加起来就是 “0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",或者”0123456789abcdefghijklmnopqrstuvwxyz“
7758521 --> 4maih
特点:
密文由36个字符(0-9,a-z)组成,加密仅支持整数数字,解密仅支持字符串,不支持中文
密文由36个字符(0-9,A-Z)
base 58:
采用的字符集为“123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ”,从这不难看出,Base58是纯数字与字母组成而且去掉了容易引起视觉混淆的字符(0:数字零,O:大写O,I:大写i,l:小写L)。9个数字+49个字母=58个。
我是小垃圾 --> 7s5uRnPhgjrS84QWMG8kC
特点:
Base58不使用数字”0”,字母大写”O”,字母大写”I”,和字母小写”l”,以及”+”和”/”符号
base 62:
同样的还有 base62编码,就是26个字母的大小写再加上0-9,一共62个字符。
相比于base64只是去掉了两个符号(+和/)
我是小垃圾 --> UpwxA5UpAxEZUlI1wZUlAVwdUlANIV
特点:
密文由62字符(0-9,a-z,A-Z)组成
base 85:
Base85是一种类似于Base64的二进制文本编码形式,通过使用五个ASCII字符来表示四个字节的二进制数据。例如,它用于将图像嵌入到Adobe PDF文件中。
我是小垃圾 --> :k(o/^R’5VUO6)scjda$
base 91、92:
Base91
特点:由91个字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}”)组成
abcd --> #G(IZ
Base92
特点:比base91 多一个字符
abcd --> =D8<rF
参考网站:https://www.tooleyes.com/app/base91_encode.html
参考网站:http://www.atoolbox.net/Category.php?Id=27
(3)Morse
摩尔斯电码(英语:Morse code)是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号。是由美国人艾尔菲德·维尔与萨缪尔·摩尔斯在1836年发明。
摩尔斯电码是一种早期的数字化通信形式。
(4)shellcode
shellcode是一段用于利用软件漏洞而执行的代码,shellcode为二进制的机器码,因为经常让攻击者获得shell而得名,经常使用如下所示的16进制格式来表示,我们也可以用16进制格式来表示其他隐写信息
例子:
\x54\x68\x65\x7f\x71\x75\x69\x63\x6b\x7f\x62\x72\x6f\x77\x6e\x7f\x66\x6f\x78\x7f\x6a\x75\x6d\x70\x73\x7f\x6f\x76\x65\x72\x7f\x74\x68\x65\x7f\x6c\x61\x7a\x79\x7f\x64\x6f\x67
解密后:
The quick brown fox jumps over the lazy dog
(5)urlencode
url编码又叫百分号编码,是统一资源定位(URL)编码方式。
URL地址(常说网址)规定了常用的数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。
编码方法很简单,在该字节ascii码的的16进制字符前面加%. 如 空格字符,ascii码是32,对应16进制是’20’,那么urlencode编码结果是:%20。、
例子:
%77%65%6C%63%6F%6D%65%20%74%6F%20%74%68%65%20%4E%65%70%6E%65%70%20%53%74%75%64%69%6F
解密后:
The quick brown fox jumps over the lazy dog
参考网站:https://tool.chinaz.com/tools/unicode.aspx
(6)unicode
Unicode,中文又称万国码、国际码、统一码、单一码,是计算机科学领域的业界标准。它整理、编码了世界上大部分的文字系统,使得电脑可以用更为简单的方式来呈现和处理文字。 Unicode伴随着通用字符集的标准而发展,同时也以书本的形式对外发表。Unicode至今仍在不断增修,每个新版本都加入更多新的字符。
例子:
\u6211\u662f\u5c0f\u5783\u573e
解密后:
我是小垃圾
参考网站:https://tool.chinaz.com/tools/unicode.aspx
(7)aaencode
以将JS代码转换成常用的网络表情,也就是我们说的颜文字js加密。
例子:
゚ω゚ノ= /`m´)ノ ~┻━┻ //´∇`/ [’’]; o=(゚ー゚) ==3; c=(゚Θ゚) =(゚ー゚)-(゚ー゚); (゚Д゚) =(゚Θ゚)= (o_o)/ (o_o);(゚Д゚)={゚Θ゚: ‘’ ,゚ω゚ノ : ((゚ω゚ノ==3) +’’) [゚Θ゚] ,゚ー゚ノ :(゚ω゚ノ+ ‘’)[o_o -(゚Θ゚)] ,゚Д゚ノ:((゚ー゚==3) +’’)[゚ー゚] }; (゚Д゚) [゚Θ゚] =((゚ω゚ノ3) +’’) [c_o];(゚Д゚) [‘c’] = ((゚Д゚)+’’) [ (゚ー゚)+(゚ー゚)-(゚Θ゚) ];(゚Д゚) [‘o’] = ((゚Д゚)+’’) [゚Θ゚];(゚o゚)=(゚Д゚) [‘c’]+(゚Д゚) [‘o’]+(゚ω゚ノ +’’)[゚Θ゚]+ ((゚ω゚ノ3) +’’) [゚ー゚] + ((゚Д゚) +’’) [(゚ー゚)+(゚ー゚)]+ ((゚ー゚3) +’_’) [゚Θ゚]+((゚ー゚3) +’’) [(゚ー゚) - (゚Θ゚)]+(゚Д゚) [‘c’]+((゚Д゚)+’’) [(゚ー゚)+(゚ー゚)]+ (゚Д゚) [‘o’]+((゚ー゚3) +’’) [゚Θ゚];(゚Д゚) [’’] =(o_o) [゚o゚] [゚o゚];(゚ε゚)=((゚ー゚3) +’’) [゚Θ゚]+ (゚Д゚) .゚Д゚ノ+((゚Д゚)+’’) [(゚ー゚) + (゚ー゚)]+((゚ー゚3) +’_’) [o_o -゚Θ゚]+((゚ー゚3) +’’) [゚Θ゚]+ (゚ω゚ノ +’’) [゚Θ゚]; (゚ー゚)+=(゚Θ゚); (゚Д゚)[゚ε゚]=’\’; (゚Д゚).゚Θ゚ノ=(゚Д゚+ ゚ー゚)[o_o -(゚Θ゚)];(o゚ー゚o)=(゚ω゚ノ +’’)[c_o];(゚Д゚) [゚o゚]=’"’;(゚Д゚) [’’] ( (゚Д゚) [’’] (゚ε゚+/´∇`/(゚Д゚)[゚o゚]+ (゚Д゚)[゚ε゚]+(o゚ー゚o)+ ((o_o) +(o_o))+ ((o_o) - (゚Θ゚))+ (゚Θ゚)+ (゚Θ゚)+ (゚Д゚)[゚o゚]) (゚Θ゚)) (’’);
解密后:
我是小垃圾
参考网站:http://www.atoolbox.net/Tool.php?Id=703
(8)jjencode
jjencode代码,就是将正常的js代码转换成复杂的只有符号的字符串编码,进行加密 如:[KaTeX parse error: Expected group after '_' at position 2: ._̲_]+KaTeX parse error: Expected group after '_' at position 2: ._̲+",\"+ . . .+KaTeX parse error: Expected group after '_' at position 2: ._̲__+"\\"+. + + +.__ + + +这样的组合。
参考网站:https://www.qtool.net/decode
(9)uuencode
Uuencode是二进制信息和文字信息之间的转换编码,也就是机器和人眼识读的转换。Uuencode编码方案常见于电子邮件信息的传输,目前已被多用途互联网邮件扩展(MIME)大量取代。
例:
/YHB1YIBOY;"/Y9Z#Y9R^
解密后:我是小垃圾
参考网站:http://www.atoolbox.net/Tool.php?Id=731
(10)jsfuck
JSFuck 可以让你只用 6 个字符 ! +来编写 JavaScript 程序
例:
(![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qUOGqYJv-1612418887336)(!+[]+!+[]+[+!+[]])]+(![]+[])[+!+[]]+(+[![]]+[+(+!+[]+(!+[]+[])[!+[]+!+[]+!+[]]+[+!+[]]+[+[]]+[+[]]+[+[]])])[+!+[]+[+[]]]
解密后:okay
参考网站:http://ctf.ssleye.com/jsfuck.html
(11)brainfuck
例子
++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>++++++++++++++++++++++++++>++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>-.----.<+.>>-------.
解密后:okay
参考网站:http://ctf.ssleye.com/brain.html
(12)Ook
例:
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook!
Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook! Ook! Ook! Ook!
Ook! Ook? Ook. Ook? Ook! Ook. Ook? Ook! Ook! Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook! Ook. Ook? Ook. Ook. Ook. Ook.
Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook?
Ook.
解密后: okay
参考网站:https://www.splitbrain.org/services/ook
(13)敲击码
敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于 5 ×5 方格波利比奥斯方阵来实现的,不同点是是用 K 字母被整合到 C 中。
例:24 15 15 22 22 14 14 23
解密后:i(I) e(E) g(G) d(D)
参考网站:http://ctf.ssleye.com/tapcode.html
(14)二维码
- 用某种特定几何图形按一定规律在平面分步的黑白相间的图形记录数据符号信息
- 堆叠式 / 行排式二维码又称堆积式二维条码或层排式二维条码,其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。 Code 16 k、Code 49、PDF417
- 矩阵式二维码:QR CODE ,矩阵式二维码,最流行莫过于QR CODE ,我们常说的二维码就是它了。矩阵式二维条码(又称棋盘式二维条码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维条码有:Code One、MaxiCode、QR Code、 Data Matrix、Han Xin Code、Grid Matrix 等。
二维码的特点
QR码的特点
存储大容量信息
传统的条形码只能处理20位左右的信息量,与此相比,QR码可处理条形码的几十倍到几百倍的信息量。
另外,QR码还可以支持所有类型的数据。(如:数字、英文字母、日文字母、汉字、符号、二进制、控制码等)。一个QR码最多可以处理7089字(仅用数字时)的巨大信息量。
在小空间内打印
QR码使用纵向和横向两个方向处理数据,如果是相同的信息量,QR码所占空间为条形码的十分之一左右。(还支持Micro QR码,可以在更小空间内处理数据。)
QR码的基本结构
QR(Quick-Response) code是被广泛使用的一种二维码,解码速度快。
格式信息:纠错等级
版本信息:即二维码的规格,QR码符号共有40种规格的矩阵
三、稀奇古怪的编码
(1)社会主义核心价值观
例:
诚信自由公正爱国爱国敬业民主诚信自由公正敬业爱国诚信富强友善敬业诚信自由平等友善平等富强爱国友善敬业友善爱国平等敬业诚信自由爱国和谐诚信自由平等敬业诚信文明诚信民主诚信自由
解密后:
我是小垃圾
参考网站:http://ctf.ssleye.com/cvencode.html
(2)与佛论禅
例:
佛曰:奢逝老皤利缽實諳不侄竟怯一楞缽他殿冥特數皤顛呐藐怖侄沙
解密后:
我是小垃圾
参考网站http://www.keyfc.net/bbs/tools/tudoucode.aspx
(3)与熊论道
例:
熊曰:呋食洞取山肉雜誒我肉和氏嗚肉和啽偶取擊呱現取襲
解密后:
我是小垃圾
参考网站:http://hi.pcmoe.net/
四、总结
CTF的世界很大,需要仔细的去学习:
好用的解密网站总结:
(1)
http://www.atoolbox.net/Category.php?Id=27
(2)
https://www.tooleyes.com/list/chengxu/
(3)
https://www.qtool.net/
(4)
http://ctf.ssleye.com/
(5)
https://www.splitbrain.org/services/ook
(专解密okk)
(6)
http://hi.pcmoe.net/index.html