攻防世界-crypto-Decrypt-the-Message(Poem Codes-诗歌密码)
题目来源:su-ctf-quals-2014
题目描述:解密这段信息!
下载附件,内容如下
The life that I have
Is all that I have
And the life that I have
Is yours. The love that I have
Of the life that I have
Is yours and yours and yours. A sleep I shall have
A rest I shall have
Yet death will be but a pause. For the peace of my years
In the long green grass
Will be yours and yours and yours. decrypted message: emzcf sebt yuwi ytrr ortl rbon aluo konf ihye cyog rowh prhj feom ihos perp twnb tpak heoc yaui usoa irtd tnlu ntke onds goym hmpq
里面是一首诗,最后给出需要解密的信息。
这道题考察Poem Codes,知道了原理后,我们可以使用工具进行解密。
C:\Users\Administrator\Desktop\诗歌密码>python poemcode.py poem.txt cip.txt
...
ifytuothikcrnyptorapyisheansnweroyoturprbletheyoulodnotnowkwhatourrobemiuasbcdfgheijklnoprst
ifyouthinkcryptographyistheanswertoyourproblemthenyoudonotknowwhatyourproblemisabcdefghijklmnopqrstu
pakprictiyorhftyselorohyphurbeewterunhwooaywtooonrbpofjhsgkeilncmbrt
...
在众多生成的结果中寻找一个通顺的句子那便是flag。
注意:
1.将诗歌与密文分别存为poem.txt,cip.txt并移到与poemcode.py同目录下,使用工具破解
2.使用python2运行脚本
3.必须把一些特殊的字符去掉,比如诗歌中的“.”,如果不去掉,运行的时候会报错:IndexError: list assignment index out of range
扩展:Poem Codes——诗歌密码
诗歌密码在第二次世界大战中被广泛使用,它的工作方式如下:
首先,你需要先记住一首诗歌,它不需要太长,也不需要完整。比如下面这句截取自尤利西斯诗歌的片段就可以。
for my purpose holds to sail beyond the sunset, and the baths of all the western stars until I die.
然后,从中选择五个词作为关键字:比如“ for”,“ sail”,“ all”,“ stars”,“ die”。
接着,将它们串在一起,然后给字母编号,以“ a”开头为1,第二个“ a”开头为2,依此类推;如果没有第二个“ a”,则“ b”的编号为2;或者 如果没有“ b”,则“ c”被标记为2,依此类推,直到我们为所有字母编号。结果:
现在,假设我们要对下面这个消息进行加密:We have run out of cigars, situation desperate.
由于我们在诗歌中选中了18个字母,因此我们以18个字母为一组写出该消息,并用无用的字母填充结尾,如下所示:
注意,在第一个表格(关键字表格)中,第一个字母“f”,它的下面是6;第二个字母是“o”,下面是12。
相对应地,在第二个表格(我们填充的分组的消息)中,第六列字母是“eud”,而第12列是“tdk”。
我们一般按照五个字母为一组发送加密消息,这样可以减少(但当然不能消除)传输错误。
因此,我们信息的第一部分将是eudtd koekc pmwrt
尝试手动加密整个消息!您会发现这很容易做到,您还将看到错误在何处以及如何产生。
当然,我们还必须告诉接收方,我们选择了哪五个词作为关键字,分别是第1个,第6个,第14个,第17个和第20个。最简单的方法是替换字母,因此:“afnqt”将被附加到加密的消息上。然后,接收者可以(大致)遵循相反的步骤来解密消息。
当然,在以上的简短讨论中我们忽略了所有的细微差别。但要知道,用诗歌密码加密的短消息是很难破解的,尤其是当诗歌很少被用于加密或仅用其加密一次。如果这首诗是经常使用的,或者是众所周知的,那么破解用它加密的消息就不难了。另外,诗歌密码具有易用性和易记性的优点,并且不需要任何计算设备。
参考:
http://wmbriggs.com/post/1001/
https://github.com/abpolym/crypto-tools/tree/master/poemcode
最新文章
- ruby 基础知识(二)
- 【Debian】非法关机后无法联网 connect: network is unreachable
- docker和shipyard使用问题
- pthread clean up
- UESTC 1215 (思维题 旋转)
- 戴文的Linux内核专题:06配置内核(2)
- About Inside the Azure Storage Outage of November 18th
- 你尽力了么===BY cloudsky
- git 秘钥的生成
- Linux进程间通信——使用数据报套接字
- wind安装selenium
- openstack VM可以ping外部网络,但是外部网络ping不通VM
- C++统计代码注释行数 &; 有效代码行数 &; 代码注释公共行 &; 函数个数
- web前端开发工程师
- 无组件客户端js图片压缩
- 《Thinking in Java》学习笔记(一)
- mac 下 clang++ 找不到头文件 stdlib.h
- 欲善其工必先利其器-----ThinkPad E430加装SSD固态硬盘和内存
- java之搭建webservice服务端
- python接口自动化测试十八:使用bs4框架爬取图片
热门文章
- 八、数据拟合分析seaborn
- thymeleaf+Springboot实现自定义标签
- linux环境下jmeter安装和运行
- 作为一名双非本科毕业的Java程序员,我该如何在日益严重的内卷化中避免被裁?
- 太神奇了!GIF的合成与提取这么好玩
- 一款基于SpringBoot+SpringSecurity的后台管理系统,强烈推荐
- csp-s模拟测试56(10.2)Merchant「二分」·Equation「树状数组」
- DOS命令行(1)——Windows目录与文件应用操作
- Hadoop - 彻底解决警告:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
- Ubuntu18.04下安装Docker并配置SSL证书加密远程连接