moectf是对ctf小白入门非常友好的一个网站,若对ctf感兴趣,可以一起加油进步
练习网址:https://ctf.xidian.edu.cn/training
强壮密码人
古典密码与编码
1. Augustine's Way
凯撒密码解密。
2. Augustine's Way#2
直接放入随波逐流CTF编码工具一键解码。
3. Ex Viginere?
根据重合指数爆破出密钥长度,计算k1和k2,就可以还原明文。在足够长的英文文本中,每个字母出现的频率有一个确定的值,重合指数就是根据这一统计规律来计算的。
[code]import gmpy2f = open(r'C:\Users\lvqiyun\Desktop\cipher','r')c = f.read()f.close()# 我们已经知道,维吉尼亚密码可以被分解为若干组平移密码来破译,# 而一个明文足够长的平移密码的重合指数接近 0.0687。# 换言之,如果我们选取某个 l 值,使得分组后的密文的重合指数接近 0.065,# 则说明选取的 t 值与密钥的长度是一致的。best_index = 0.065sum = 0dic_index = {'a': 0.08167,'b': 0.01492,'c': 0.02782,'d':0.04253,'e': 0.12702,'f':0.02228,'g': 0.02015,'h':0.06094,'i':0.06966,'j':0.00153,'k':0.00772,'l':0.04025,'m':0.02406,'n':0.06749,'o':0.07507,'p':0.01929,'q':0.00095,'r':0.05987,'s':0.06327,'t':0.09056,'u':0.02758,'v':0.00978,'w':0.02360,'x':0.00150,'y':0.01974,'z':0.00074}def IndCo(s): # 计算字符串的重合指数(所有字母出现频率的平方和) # 输入 s # 输出 重合指数 alpha = 'abcdefghijklmnopqrstuvwxyz' freq = {} for i in alpha: freq = 0 for i in s: freq = freq + 1 index = 0 for i in alpha: index = index + (freq*(freq - 1 )) / (len(s) * (len(s) - 1 )) return indexdef IndCo_m(s): # 计算明文 s 中的各字母频率和英文字母中的频率吻合程度 # 输入:明文 s # 输出:吻合程度 alpha = 'abcdefghijklmnopqrstuvwxyz' freq = {} for i in alpha: freq = 0 for i in s: freq += 1 index = 0 for i in alpha: index += freq / len(s) * dic_index return indexdef get_keylen(c): # 求出最符合统计学的 m,n 的最小公倍数,方法通过爆破足够大的周期样本,观察成倍出现的周期 # 计算方法是解出每一个子密文段的重合指数然后求平均值 在和最佳重合指数相减 误差小于 0.01 # 输入:密文 # 输出:公共周期列表 keylen = [] for i in range(1,100): average_index = 0 for j in range(i): s = ''.join(c[j+i*x] for x in range(0,len(c)//i)) index = IndCo(s) average_index+=index average_index = average_index/i - best_index if abs(average_index)导出对象->HTTP,将两个upload文件保存下来。
1个只有1kb,一个有3617kb
打开1kb的内容如下,提示压缩包文件上传成功。
看来压缩包在另外一个文件中,利用kali的foremost命令分解,得到压缩包,解压得到MP3、gif和zip文件。MP3文件用audacity软件打开,没有发现。stegsolve打开gif文件,查看每一帧,在第30帧看到一个密码。
尝试用这个密码去解压缩包,密码不多,看来这密码是用于MP3文件的,利用MP3Stego软件解密。
Decode.exe -X -P C5EZFsC6 brainfuck.mp3
打开brainfuck.mp3.txt,发现是brainfuck编码方式,brainfuck解码一下。
拿到密码解压,拿到三个txt文件,全是1和0组成的字符串。根据提示,是福尔摩斯小人编码。
根据福尔摩斯小人密码表对照得到flag。
moectf{PEOPLE_DANCING_HAPPILY}</p>未完待续。。。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |