202208CRYPTO_PolarDN_CTF_你知道M型栅栏密码吗

打开文件,我们直接得到一个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}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值