CRC32碰撞用于绕过压缩包密码获取内部文本信息。内部文件必须为小文件(<10B)
一、无脑for枚举法
实测,大于4B的文件python运算效率极低。。 语言:python2
#coding:utf-8
import zipfile
import string
import binascii
def CrackCrc(crc):
for i in dic :
for j in dic:
for p in dic:
for q in dic:
for m in dic:
for n in dic:
#文件大小为6B的6重循环
s=i+j+p+q+m+n
if crc == (binascii.crc32(s) & 0xffffffff):
print s
#return
def CrackZip():
for I in range(2,3):
file = 'crc.zip'
f = zipfile.ZipFile(file, 'r')
GetCrc = f.getinfo('crc/ad71bf43131c4b3fa27066a3b408f843/'+str(I)+'.txt')
crc = GetCrc.CRC
#以上3行为获取压缩包CRC32值的步骤
CrackCrc(crc)
dic = string.digits+string.ascii_letters+"+="
CrackZip()