一道 3DES 的暴力破解题

Author Avatar
Tr0y 10月 06, 2017 20:58:31 本文共 268 字
  • 文为知己者书
  • 在其它设备中阅读本文章

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
剩下的就直接暴力好了

代码

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 的示例有点问题。。。

End

What do you think?

本文标题: 一道 3DES 的暴力破解题
原始链接: http://www.tr0y.wang/2017/10/06/Crypto2/
发布时间: 2017.10.06-20:58
最后更新: 2019.05.31-16:36
版权声明: 本站文章均采用CC BY-NC-SA 4.0协议进行许可。转载请注明出处!