[逆向破解] 2018安恒杯月赛 _Crypto›GO

[复制链接]
查看6804 | 回复1 | 2020-7-12 21:12:56 | 显示全部楼层 |阅读模式
这题略带脑洞,解压出的密文为
ilnllliiikkninlekile
长度为20
并且发现提示
The length of this plaintext: 10
密文长度是明文的2倍,然后密文只有5个字母出现,本能想到多表加密,但是不知道表的边缘的排序方式
例如:
ilnkeiklne.....
因为排序规则不同,就涉及对应的字母不同,所以这里我选择爆破一发
import itertoolskey = []cipher = "ilnllliiikkninlekile"for i in itertools.permutations('ilnke', 5):    key.append(''.join(i))for now_key in key:    solve_c = ""    res = ""    for now_c in cipher:        solve_c += str(now_key.index(now_c))    for i in range(0,len(solve_c),2):        now_ascii = int(solve_c)*5+int(solve_c[i+1])+97        if now_ascii>ord('i'):            now_ascii+=1        res += chr(now_ascii)    if "flag" in res:        print now_key,res
得到结果
linke flagisherelinek flagkxhdwd
一看就是第一个,结果交了不对。。。
后来发现要交md5,得到flag
flag{eedda7bea3964bfb288ca6004a973c2a}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

2

主题

2

帖子

39

积分

打谱CTF

Rank: 3Rank: 3

积分
39