一道 3DES 的暴力破解题

mysterytwisterc3 的一道 LVII 的题, 很简单
brute_force_attack_on_triple_des_with_reduced_key_space

题目

key 的前几个字符给出了提示, 是在 2006 年发明用于攻击 DES 密文的暴力破解机器,这个机器攻击 DES key (56 Bit) 仅仅花费不到一周。

这个机器的名字就是 key 的前几位,后面还加上了 6 位数字。
然后将这个字符串 Hex 后, 作为 3DES 加密使用的 Key。

一番寻找后, 在 wiki 百科上找到了这个机器的名字:
COPACOBANA
剩下的就直接暴力好了

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from Crypto.Cipher import DES3
import re

with open('1.txt','rb') as fp:
data = ''.join(fp.read().split())

print len(data)
N = 0
for k in range(999999):
iv = str(k).zfill(6)
key = 'COPACOBANA'+iv
cipher = DES3.new(key, DES3.MODE_CBC, IV=('0'*16).decode('hex'))
m = cipher.decrypt(data.decode('hex')[:2352])
n = len(re.findall('[a-zA-Z]',m))
if N < n:
N = n
M = m
K = key

print 'The key is:',K
print 'The M is:',M
print '+'*50

结果

结果

坑点

在 PyCrypto 的官方文档里,关于 DES3 的示例有点问题。。。


来呀快活呀


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!