一、原题
[原题链接]
从前有个很厉害的人物演讲了一堆很厉害的东西,可是我读书少,认识人不多,你知道这个人叫啥不。。
答案格式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), (