IDF实验室-伟人的名字

本文介绍了如何使用词频分析解决IDF实验室的一个挑战,涉及凯撒密码和维吉尼亚密码的破解方法。通过对密文进行词频统计,找到高频词并计算偏移量,最终确定密钥,成功解密出美国总统肯尼迪的就职演说,得出flag:wctf{Kennedy}。
摘要由CSDN通过智能技术生成

一、原题

[原题链接]
从前有个很厉害的人物演讲了一堆很厉害的东西,可是我读书少,认识人不多,你知道这个人叫啥不。。

答案格式wctf{名字}

友情提示1、外国人,只要名字就可以了,就别要姓了,首字母大写。

友情提示2、说过我读书少,外国人的名字和姓我是分不清的,反正答案就是大家最常叫的那个。。

以下就是这个人讲话的节选:

EB BMQF KYJRD, IM ICHZZZ YWELXABD, ICCH PVLQ EB PGJS, UEZW PAGE RDS IGJOW QQQNHQO ZU BOTOSNS RD CFU YCFUQA. VGJQP RDWD AKIYWPU HDQ TZXLZSO, AONK CSYHPWHTRL CQ YISCLAWBD FWG ECAB VSIAZQCZ ER CWGH PSDWGICYB PC LRO YDRECYDJ ZZBYHHJ. PVP ENOGHQ CQ WKIYJ WAPUGYOYV SVZ YJGHHPAR WFA NDJH ER OSCYGYS VSNFZXLZ EKC UWRZA.

YRU HSH PFFPNAH VSIAZQQ ID YCOTQ - YRR OD Y QLOJ HZ ZAOC YNAD, PVZXED LUKO HH JSPG; BZW WG D YOWO PC EYPHWH, HSRSCV HKXOEWJAR ZC OCH - MXR O FYHZ WM PPDP HSH XICGCJ ZI W WRLC EZGHWRKR GEUSCUWH, MPDP WY YJR BCWF RSP, “PAXZLAEBR GJ SRNA, SYPWPQR WY RNWMXJWHTRL” - Y GEUSCUWH WULLLOH WFA NRKICY CJSXLCO ZI IOY: PMCDLJM, NKJPURU, GGOSLVC, LQB KLU EHDHJB.

NDL KP DKFRH WULLLOH WFAGP CJSXLCO L ENOYG WBO EHCMDJ OWOGWBNH, BZURD LQB GZXRD, HYOH DLZ HHQP, WFWH FYJ LVQQFP Y AZUC TCXGPTFO HWQH BCC YHZ PYJYTQB? HLJH JRS XZLL WY RDOE FEGERPEQ HDBCCW?

EB WFA WRLC SLQPCCB KT WFA HRPHR, MJZJ Y TPZ CSYHPWHTRLO SDTA MHCJ RUYJHPG PVP PKZP MB OHDABOLLC QUCARZP EB LRO SRSN ZI IOILKQA GYJUPU. W GM BZW OVLQI TCRK HSLQ FPVNKBDLZEZTWW - L SSWFMIS LR. T BK YRR PPOGAJP RDOE YJM RD ID UKIWG ALNKYJUP NHONHQ KTWF OYB KHSHP DPRNHS RP OYB KHSHP UPQCNOELMJ. WFA PQCNUJ, PVP DWWEK, HSH ZSGRRECY UDWNK SS EPEBR RK EKGO PQBAOGRSN HLJH WLEDH RSN NRSJHCB WBO YHZ ZFK DHPRS LR – YJR WFA ROMS QUMI EKYP QLPA NDL HCXJU WLEDH WFA HRPHR.

DLZ DR, AJ DAZWRU OXHPEQLQQ: LVI BZW SVLW UCFU YCFQRNM FYJ OR BCC WKI - WGV UDOE WKI FYJ OR BCC WKIC AKIYWPU.

XB BSWOMS NLRENPQQ CQ RDS ZMNZO: WGV LKH ZFWH DKAFTFY KTOJ RZ DKF BMQ, ESP HKYP EREAHSHP KP AWB GM TZU PVP DNSPGMI ZI IOY.

DEBLOJU, ZFAHSHP MZX WFP AEHTCCJG RD OXHPEQL MN NLRENPQQ CQ RDS ZMNZO, WGV MB FV PVP QWAP FEUS QPOYGYNRD MB DWPABRWF OYG OONUGBWNH SVTFF KP YOY RD MZX. KTWF O JMKR FMJGNLCJQP MQF RLHM VSNS UCSOCG, KTWF VTVRKFJ RDS IGJOW HQRRH KT RSN OHCZG, JAH XQ UZ DKFEK PC OCWR WFA WDLZ HH HCGH, ODNGJU KGO MOCOGTQE OYG DWD FAZA, XIE IJCHLLC EKYP SHPA ZQ AOCWF UZG’O HRPG XXQP EUSHM EC CFU KKY.


二、writeup

1、凯撒密码

分析题目,原文是英文,密文也全都是英文字母,很明显的古典密码。
这里有一个介绍古典密码的链接:[古典密码]
先考虑最简单的[凯撒密码],即简单的对全部字母进行移位,如把全部字母后移两位,那么对于原文:

abcdef

对应的密文将是:

cdefgh

这种简单的加密方式十分容易破解,因为英文中每个字母出现的频率是相对固定的,只要对于足够长的密文,统计其中字母出现的频度,与标准频度表进行比对,就可以轻易地发现原文字母与密文字母的对应关系。
标准频率表如下:

stdFreq = {
'A':8.2 ,'N':6.7,
'B':1.5, 'O':7.5,
'C':2.8, 'P':1.9,
'D':4.3, 'Q':0.1,
'E':12.7, 'R':6.0,
'F':2.2, 'S':6.3,
'G':2.0, 'T':9.1,
'H':6.1, 'U':2.8,
'I':7.0, 'V':1.0,
'J':0.2, 'W':2.4,
'K':0.8 ,'X':0.2,
'L':4.0 ,'Y':2.0,
'M':2.4 ,'Z':0.1
}

做字频统计尝试破解,字母频度分布较为均匀,没有结果,猜测使用了凯撒密码的进阶版,[维吉尼亚密码],即采用某密钥,循环对字母进行移位。

2、维吉尼亚密码

于是进一步采用了经典的维吉尼亚密码的解法,首先通过重复序列的间隔推断出密码长度,进而将密文分组进行频度分析,得出密钥。具体方法百科里有介绍:[维吉尼亚密码]
在这一步的工作中写了大段的代码进行分析,包括下面使用的词频统计的代码都是在这一步中写的,可以说这一步是得到正确答案的基础,可事实上在这一步并没有得出结果,原因是自己走了一个弯路:

在解密之前去掉了密文的所有标点、空格和换行符

因为自己一直沿着经典思路解题,同时做了不必要的处理,导致耽搁了较长时间,后来转过这个弯,决定采用自己的思路进行分析,答案就显而易见了。

3、粗糙解法

对于本题,单词间隔和标点符号都给出的情况下,字频分析已经不是十分必要了,更有效的方法是词频分析。
词频分析要注意的主要是两个方面:

1、在维吉尼亚加密中,由于采用一定长度的密钥循环加密,所以一个单词会被加密为不同的形式,而只有那些出现频率极高的单词才会重复地出现,而英语中出现频率最高的一个词是’the’
2、英文中有比较特殊的一个单词——’a’,它只有短短的一个字母,另外的单字母单词还有’I’,但其出现频率显然没有’a’高

于是在统计中,我们重点查看三字母单词和单字母单词的出现的状况。
词频统计python程序如下:

article = """
EB BMQF KYJRD......
"""
import re
#利用非字母字符拆分单词
pattern = re.compile(r'[^A-Za-z]+')
words = re.split(pattern,article)

#统计单词出现的次数
wc = {}
for w in words:
    wc.setdefault(w,0)
    wc[w] += 1

#根据出现的次数进行排序
sortedWc= sorted(wc.items(), key=lambda e:e[1],reverse=True)
print sortedWc

输出为:

[('WFA', 8), ('PVP', 5), ('CQ', 4), ('RD', 4), ('ZI', 4), ('EB', 4), ('RDS', 4), ('Y', 4), ('WY', 3), ('HSH', 3), ('BCC', 3), ('PC', 3), ('O', 3), ('MB', 3), ('WGV', 3), ('BZW', 3), ('KTWF', 3), ('KP', 3), ('FYJ', 3), ('', 2), ('WLEDH', 2), ('EKYP', 2), ('HLJH', 2), ('RDOE', 2), ('L', 2), ('GM', 2), ('MZX', 2), ('IGJOW', 2), ('CJSXLCO', 2), ('OR', 2), ('OYG', 2), ('HH', 2), ('KHSHP', 2), ('LQB', 2), ('W', 2), ('WULLLOH', 2), ('LRO', 2), ('YHZ', 2), ('DLZ', 2), ('ER', 2), ('WKI', 2), ('NDL', 2), ('AKIYWPU', 2), ('GEUSCUWH', 2), ('YRR', 2), ('WRLC', 2), ('ZMNZO', 2), ('YJR', 2), ('KT', 2), ('HRPHR', 2), ('NLRENPQQ', 2), ('WBO', 2), ('IOY', 2), ('OYB', 2), ('LR', 2), ('ID', 2), ('RSN', 2), ('CFU', 2), ('WG', 1), ('UZG', 1), ('IJCHLLC', 1), ('RUYJHPG', 1), ('WM', 1), ('FWG', 1), ('BK', 1), ('ZFK', 1), ('SS', 1), ('YRU', 1), ('QLOJ', 1), ('MJZJ', 1), ('YOWO', 1), ('YISCLAWBD', 1), ('RP', 1), ('YDRECYDJ', 1), ('AONK', 1), ('HRPG', 1), ('SDTA', 1), ('DWD', 1), ('KYJRD', 1), ('WDLZ', 1), ('HKYP', 1), ('SRSN', 1), ('TPZ', 1), ('ENOYG', 1), ('DPRNHS', 1), (
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值