打开文件,我们直接得到一个txt文件
H7b D97 B00110111 D57 H37 H67 D55 B00110100 D52 H31 H62 O65 O65 H33 H7d D97 D101 H66 H39 O143 B00110110 D98 H32 H65 O154 O67 B01100100 D98 H36 H30 O67 O145 D53 O146 D51 H61 H61 O145
你知道M型栅栏密码吗?
观察到文件中的大写字母不外乎B、D、H、O,所以基本可以判定,这些字母表示的是各种不同的进制。那么这里的文本就表示在不同进制下所转换的文本形式。
我们利用脚本将不同进制的内容转换为文本内容
import binascii
text = "H7b D97 B00110111 D57 H37 H67 D55 B00110100 D52 H31 H62 O65 O65 H33 H7d D97 D101 H66 H39 O143 B00110110 D98 H32 H65 O154 O67 B01100100 D98 H36 H30 O67 O145 D53 O146 D51 H61 H61 O145"
result = ''
text2 = text.split(' ')
for i in text2:
if i[0] == 'B':
result += chr(int(i[1:], 2))
if i[0] == 'O':
result += chr(int(i[1:], 8))
if i[0] == 'D':
result += chr(int(i[1:]))
if i[0] == 'H':
result += chr(int(i[1:], 16))
print(result)
得到结果
{a797g7441b553}aef9c6b2el7db607e5f3aae
按照一般理性而言,没喝过核废水的flag是不会长成这个样子的,所以这段内容一定是一段秘文,
结合题目问题“你见过M型栅栏密码吗”,就能知道,这应该是M型栅栏密码
摘自百度:M型栅栏密码原理
原理介绍 栅栏密码按照排列的顺序将明文(去掉空格)写入 m 行 n 列的数组,按照行的顺序将字符重新组合得到密文,这种方法称为 m 栏栅栏密码。 比较常见的是 2 栏栅栏密码。
貌似网上没有M型栅栏密码的在线解密网站,所以,解密就只能靠自己了(悲
{ a 7 9 7
g 7 4 4 1 b 5 5 3 }
a e f 9 c 6 b 2 e
l 7 d b 6 0 7 e 5
f 3 a a e
于是得到flag{7e73df4a49ba6c17b60a7b5952ee5e37}