一个CRC32爆破的例子

先给题目:

   

给出这麽一个文件,解压要密码,然后密码位数10位+,求问如何还原1-7的txt中的内容?



解题:

思路很明确,压缩文件密码太长,不可爆破,而文件才4个字节,其中对应的ASCII码的值是可琼举的,那我把它全部穷举然后算一下CRC32码,跟原来的比一下不久完事了吗?

好,思路清楚了,我们下面写代码就完事了

代码如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-
import datetime
import binascii

def showTime():

    print datetime.datetime.now().strftime("%H:%M:%S")  

def crack():
    crcs = set([0xE761062E, 0x2F9A55D3, 0xF0F809B5,
        0x645F52A4, 0x0F448B76, 0x3E1A57D9, 0x3A512755])
    r = xrange(32, 127)
    for a in r:
        for b in r:
            for c in r:
                for d in r:
                    txt = chr(a)+chr(b)+chr(c)+chr(d)
                    crc = binascii.crc32(txt)
                    if (crc & 0xFFFFFFFF) in crcs:
                        print txt


if __name__ == "__main__":

    showTime()

    crack()

    showTime()

代码超级简单,随便看看就能看懂了,就不过多解释了

然后下面就是跑出来的运行截图


你可能感兴趣的:(CTF)