第十七届全国大学生信息安全竞赛CISCN2024——古典密码write up

题目内容:

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}

反思:

此题也是后知后觉,本来写个脚本跑一下就能出答案的简单题真却没有发现大小写字母的端倪,在多次尝试后在考试中选择了放弃,这次也是总结了经验,不要过分相信现成的加解密工具

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值