题目内容:
AnU7NnR4NassOGp3BDJgAGonMaJayTwrBqZ3ODMoMWxgMnFdNqtdMTM9
题目分析:
既然题目名称是“古典密码”那就先从古典密码入手,但是看给出的密文却十分像base64加密,猜测不单纯是古典加密,其中一环应该会有一层base64的加密。解题思路方面的目前只能想到暴力一点一点尝试
解题过程:
直接将密文丢进“随波逐流”软件将base64、与各种古典密码解密的初步结果保存下来继续尝试
在漫长的尝试中发现一些信息:
base64绝对不是用在第一层,很可能是第二层或最后一层
以下两种古典密码解出的结果发现再次解密base64解密会出两个括号“{}”
猪圈密码解密结果:
JeY7EeI4EjwwFPg3KMApJPfeDjAjuXsiKhV3FMDfDStpDeOmEhxmDXD9
继续base64解密:
%f;b8<0x7(@)$w^0#9{"*w@_ +i c&f p}
埃特巴什解密结果:
zmf7mmi4mzhhltk3ywqtztlmnzqzbgdiyja3lwnlndctnmuwmjgwngn9
继续base64解密:
Ng{h88aY7K-NYf:3nbJ67 eW-k080 }
这里发现问题,虽然可以发现括号,但是这个形式不像是base64,出现乱码原因多半在这里,应当带上大小写字母进行解密,网上搜索后发现能搜到的埃特巴什解密工具都会默认大写或小写,无奈只能手写脚本:
c = input("输入密文:")
p = []
a = ord('a')
A = ord('A')
z = ord('z')
Z = ord('Z')
for i in c:
i = ord(i)
if i >= a and i <= z:
p.append(chr(27 - (i - a + 1) + a - 1))
elif i >= A and i <= Z:
p.append(chr(27 - (i - A + 1) + A - 1))
else:
p.append(chr(i))
for i in p:
print(i,end = '')
ZmF7MmI4MzhhLTk3YWQtZTlmNzQzbGdiYjA3LWNlNDctNmUwMjgwNGN9
再进行base64解密:
已经没有乱码,看形式已经很明显了,最后一层依然是简单的换位加密:
fa{2b838a-97ad-e9f743lgbb07-ce47-6e02804c}
直接再次丢入“随波逐流”进行查看:
发现flag,最后一层加密是分为2栏的栅栏密码
flag{b2bb0873-8cae-4977-a6de-0e298f0744c3}
反思:
此题也是后知后觉,本来写个脚本跑一下就能出答案的简单题真却没有发现大小写字母的端倪,在多次尝试后在考试中选择了放弃,这次也是总结了经验,不要过分相信现成的加解密工具