查看: 1095|回复: 3

[Crypto] 致敬经典题解

[复制链接]
发表于 2019-6-5 20:47:07 | 显示全部楼层 |阅读模式
本帖最后由 Gu-f 于 2019-6-5 21:07 编辑

一开始做这道题的时候首先反应的是凯撒密码,但是经过凯撒爆破之后发现不太对
123.png

爆破的结果并没有flag

然后转换思路,开始从附带的图片中寻找思路
找了半天也没发现图片中有什么有效的信息

然后看那一段密文猜测是凯撒的一个变型
然后我写出来flag和lrua的ASCII码进行比较
flag 102 108  97    103
lrua 108 114  117   97
差值 -6   -6   -20   +6
然后我们知道z的ascii是122
显然是117+6-122为1对应a
于是猜测变换规则为循环字母,即当加到z的时候开始从a加
所以有以下规律:
flag 102 108  97    103
lrua 108 114  117   97
差值 -6   -6   -6   +6

观察下面这两行数据发现
lrua 108 114  117   97
差值 -6   -6   -6   +6

偶数为-6,奇数为+6
于是得到规律
偶数为左循环偏移6,奇数为向右循环偏移6

然后我们就可以写代码了
但是这里有个小小的坑,就是数字不需要变换,一开始怎么提交都不对,然后发现flag有未知符号,才意识到0-9数字不需要变换,只进行字母的变换,这里好坑!!!

下面是我写的脚本,供参考:
jingdian.zip (364 Bytes, 下载次数: 1, 售价: 1 学币)
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
发表于 2019-6-7 22:51:09 来自手机 | 显示全部楼层
很详细!看来是自己认真做的

0

主题

6

帖子

0

精华

中级会员

Rank: 8Rank: 8

学币
198
荣耀
0
rank
820
违规
0

    发表于 2019-10-5 15:47:33 | 显示全部楼层
    根据楼主的解答写出的脚本
    1. import string

    2. s ='lrua{1uy3yj9l-yw9u-48j2-uuj8-36h03706y7u7}'
    3. s1 = ''

    4. for i in range(len(s)):
    5.         if s[i].isdigit() or ord(s[i]) == 123 or ord(s[i]) == 125 or ord(s[i]) == 45:
    6.                 s1 += s[i]
    7.         else:
    8.                 if (ord(s[i]) + 6 > 122):
    9.                         s1 += chr(ord(s[i]) + 6 - 122 + 96)
    10.                 elif (ord(s[i]) % 2 == 0):
    11.                         s1 += chr(ord(s[i])-6)
    12.                 else:
    13.                         s1 += chr(ord(s[i])+6)

    14. print(s1)
    复制代码
     楼主| 发表于 2019-11-21 19:03:15 | 显示全部楼层
    isdof 发表于 2019-10-5 15:47
    根据楼主的解答写出的脚本

    感谢大佬分享
    关闭

    论坛公告上一条 /1 下一条

    快速回复 返回顶部 返回列表