OverTheWire Krypton Level 2 → Level 3

Reading time ~1 minute

题目传送门在此

这一关终于不想前几关那么水了,不过也不难。题目给了3个加密后文本用来破解,然后明确表示是频率分析,于是乎,就按照要求来吧。

首先找到频率表:

A

B

C

D

E

F

G

H

I

J

0.082

0.015

0.028

0.043

0.127

0.022

0.020

0.061

0.070

0.002

K

L

M

N

O

P

Q

R

S

T

0.008

0.040

0.024

0.067

0.075

0.019

0.001

0.060

0.063

0.091

U

V

W

X

Y

Z

0.028

0.010

0.023

0.001

0.020

0.001

字母可分为五组:

  • E:0.127

  • TAOINSHR:0.06~0.09

  • DL:0.04

  • CUMWFGYPB:0.015~0.023

  • VKJXQZ:小于0.01

最常见的两字母组合,依照出现次数递减的顺序排列:TH、HE、IN、ER、AN、RE、DE、ON、ES、ST、EN、AT、TO、NT、HA、ND、OU、EA、NG、AS、OR、TI、IS、ET、IT、AR、TE、SE、HI、OF。

最常见的三字母组合,依照出现次数递减的顺序排列:THE、ING、AND、HER、ERE、ENT、THA、NTH、WAS、ETH、FOR、DTH。

频率表准备好了然后就可以开工了,首先对给出的文本统计频率:

l = len(s)
for j in xrange(3):
    d = {}
    for i in xrange(l - j):
        c = s[i:i+j+1]
        if c in d:
            d[c] += 1
        else:
            d[c] = 1
    ans = sorted(d.items(), key=lambda d:d[1])
    fp.write('n'.join([str(one) for one in ans]) + 'n')

分别对三个文本统计之后,感觉单字母频率差不多,于是三个放到一起又统计了一遍,按照三个一起的统计结果来做。

首先看最高的几个三字母:

('JDQ', 15)
('CBG', 15)
('JSN', 16)
('CGE', 16)
('SNS', 19)
('DCU', 19)
('DSN', 22)
('SQN', 23)
('QGW', 27)
('JDS', 61)

JDS明显高出其它很多,似乎就是the,然后又看到SNS,那基本就肯定JDS是the、SNS是ere了。

然后QGW我首先猜测是ing,但替换了一下感觉不太对劲,然后SQN对应eir似乎也不太说的过去,于是猜测QGW对应and,这样SQN对应ear也似乎稍微好点。

然后查看双字母:

('QG', 46)
('JS', 47)
('UJ', 47)
('SQ', 48)
('SW', 52)
('DQ', 52)
('CG', 53)
('QN', 54)
('NS', 54)
('SU', 63)
('SN', 68)
('DS', 83)
('JD', 96)

由SU、UJ感觉U是s。

接着我在文本中发现了CnsteadBXthe,感觉就是instead of the了。

这样,观察三字母,CGE就应该是ing了。

查看单字母:

('W', 129)d
('V', 130)
('Z', 132)
('D', 210)h
('C', 227)i
('G', 227)n
('N', 240)r
('B', 246)o
('U', 257)s
('J', 301)t
('Q', 340)a
('S', 456)e

对比单字母频率表会发现,最高频的字母ETAOINSHR正好对应上了这边的频率,紧接着的DL中,L应该就是对应着VZ当中的一个了。

在三字母和双字母中查找V和Z,发现似乎只有在双字母的中等频率中能见到他们,如下:

('ZS', 24)
('VQ', 24)
('UQ', 24)
('NJ', 24)
('ZB', 25)
('ZQ', 25)
('QV', 25)

首先尝试将Z替换成l,然后查看替换后的文本,感觉很多地方似乎看起来不太像个单词了,于是乎改成将V替换成l。

查看第二个文本的开头发现althoMghnoattendanZereZordsfortheYeriods,就应该是although no attendance records for the,带回去看频率也挺符合。

这时候,文本基本已经解密的差不多了,但由于本人英语太烂,实在不想看了,于是乎,将第二个文本的开头(although no attendance records for theYeriodsur)拿到搜索引擎中一搜,就发现是关于莎士比亚的一段话,于是得以解决~~~

对应表如下(密文 -> 明文):

[('A', 'b'), ('B', 'o'), ('C', 'i'), ('D', 'h'), ('E', 'g'), ('F', 'k'), ('G', 'n'), ('H', 'q'), ('I', 'v'), ('J', 't'), ('K', 'w'), ('L', 'y'), ('M', 'u'), ('N', 'r'), ('O', 'x'), ('P', 'z'), ('Q', 'a'), ('R', 'j'), ('S', 'e'), ('T', 'm'), ('U', 's'), ('V', 'l'), ('W', 'd'), ('X', 'f'), ('Y', 'p'), ('Z', 'c')]

然后便可以解得密码~~~

不得不说,这关简直太符合频率分析,按照频率来,一猜一个准~~~

挂载网络文件夹后网络故障时文件操作命令卡死

挂载 NFS 或者 Samba 的时候,经常会由于网络故障导致挂载好的链接断掉。此时如果尝试进行 ls、cd、df 等各种命令,只要与此目录沾上边,就会卡住。如果使用了类似 oh-my-zsh 这种配置的,只要在网络目录中,弹出命令提示符前就会直接卡住。这个时候第一反应就是...… Continue reading

路由折腾记 第四弹

Published on September 02, 2017