目录
- 一、题目原题
- 二、解题步骤
- 1.去掉01串中的空格
- 2.把01二进制串转换成十进制数
- 3.将十进制整数转换成bytes
- 三、后记
一、题目原题
题目给了一串01和一个png图片,打开看了提示说“图文无关”:
图片附件如下:
二、解题步骤
1.去掉01串中的空格
想到先把01串转换成字符串看看,于是复制01二进制串,粘贴时发现有很多空格,浅写一句Python的replace函数把空格去掉:
c='01000100 01010011 01111001 00110011 01001010 01111001 01001011 01110110 01010000 01000011 01010000 01101101 01001000 00110100 01010111 01000011 01111010 00101011 01010100 01101000 01010111 01101001 00110010 01000110 01100111 01001011 01101111 00111001 01100101 01010011 01010000 01010101 00110100 01100101 00110101 01100111 00101011 01101010 01011010 01010101 00110011 01000110 01110010 01010111 01001110 01110110 01001100 01001101 00110101 00110101 01101011 01000101 01100110 00110001 01101000 01000101 01101101 01001110 01110010 01110101 00101011 01001110 01000101 00110011'
c=c.replace(' ','')
效果如下:
2.把01二进制串转换成十进制数
用Python的int(c,2)函数,将上面内容是01二进制的字符串c转换成十进制整数:
num=int(c,2)
3.将十进制整数转换成bytes
调用n2s函数,将十进制整数转换成bytes,其实就是每8个bit转换成一个字符
from libnum import *
n2s(num)
得到了一串字符如下:
DSy3JyKvPCPmH4WCz+ThWi2FgKo9eSPU4e5g+jZU3FrWNvLM55kEf1hEmNru+NE3
看起来像base64但无法解码得到像flag的结果。
到这里就不会了,看图片不知道代表了啥,而hint又说和图片无关……用百度识图得知图片上的是玛雅数字,但是还是不会做,去搜了别的师傅写的wp,得知原来这串字符是AES加密的结果,密钥是20121221,借助在线工具做了AES解密,得到flag。
flag: flag{第13个伯克盾将会结束}
三、后记
偶然看到的一道题,感觉很需要脑洞
顺便感慨一下,20121221真的已经好遥远了啊……当时看《2012》还是初中,是和几个同学一起在英语的课外兴趣班上看的,那个年龄真的是天真烂漫,有好多梦想……现在呢,学也学不会,躺又躺不平,担心被裁员,认识到自己有好多做不到的事情(哭
速写这篇文章的原因……主要是想要那个3.8妇女节的电子勋章,结果一看质量分66不足70(