破解Zip加密文件常用的几种方法(3)

pkcrack还有一个重要的选项是-d,后面跟一个文件名,比如decrypt.zip,表示解密后的zip文件输出。据说这个命令可以加快解密时间,我尝试过以后发现并没有快多少,所以我花了两个小时还没跑出来密码QAQ

05.CRC32碰撞

CRC32:CRC本身是“冗余校验码”的意思,CRC32则表示会产生一个32bit(8位十六进制数)的校验值。

在产生CRC32时,源数据块的每一位都参与了运算,因此即使数据块中只有一位发生改变也会得到不同的CRC32值,利用这个原理我们可以直接爆破出加密文件的内容~

具体算法实现参考百度百科:https://baike.baidu.com/item/CRC32/7460858?fr=aladdin

我们看个CRC32碰撞的例子:

flag是4位数,且CRC32值为56EA988D

我们可以写出如下脚本:

#coding=utf=8 import binascii real = 0x56EA988D for y in range(1000,9999): if real == (binascii.crc32(str(y)) & 0xffffffff): print(y) print('End')

在 Python 2.x 的版本中,binascii.crc32 所计算出來的 CRC 值域为[-2^31, 2^31-1] 之间的有符号整数,为了要与一般CRC 结果作比对,需要将其转为无符号整数,所以加上& 0xffffffff来进行转换。如果是 Python 3.x 的版本,其计算结果为 [0, 2^32-1] 间的无符号整数,因此不需额外加上& 0xffffffff 。

脚本的运行结果如下,即为压缩文件的内容:

破解Zip加密文件常用的几种方法

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/46cac40e65517efb7514a0adb752a060.html