最近遇到一道CTF的一道题,大意是:
一个被压缩的Zip压缩包,在无法使用加密口令解压的情况下,如何获取其中文本文件的内容。
思路:对于文件大小<6B的文件,可以利用CRC32的校验值,爆破文本内容。
我自己做了一个压缩包,没有使用密码加密,测试一下(以4字节的文件为例):
from binascii import crc32
import string
import zipfile
dic=string.printable
def CrackCrc(crc):
for i in dic :
# print (i)
for j in dic:
for p in dic:
for q in dic:
s=i+j+p+q
# print (crc32(bytes(s,'ascii')) & 0xffffffff)
if crc == (crc32(bytes(s,'ascii')) & 0xffffffff):
print (s)
return
def getcrc32(fname):
l=[]
file = fname
f = zipfile.ZipFile(file, 'r')
global fileList
fileList =f.namelist ()
print (fileList)
# print (type(fileList))
for filename in fileList:
Fileinfo = f.getinfo(filename)
# print(Fileinfo)
crc = Fileinfo.CRC
# print ('crc',crc)
l.append(crc)
return l
def main (filename=None):
l = getcrc32(filename)
# print(l)
for i in range(len(l)):
print(fileList[i], end='的内容是:')
CrackCrc(l[i])
if __name__ == "__main__":
main ('test.zip')
对于6字节文件的CRC32爆破,在GitHub上有爆破脚本,使用截图如下:
使用命令:python crc32.py reverse 0x93C2BE07反推出(所有可能的)6位长度的文本内容。
下载地址:GitHub - theonlypwner/crc32: CRC32 tools: reverse, undo/rewind, and calculate hashesCRC32 tools: reverse, undo/rewind, and calculate hashes - GitHub - theonlypwner/crc32: CRC32 tools: reverse, undo/rewind, and calculate hasheshttps://github.com/theonlypwner/crc32
版权归原作者 01Dr1ver 所有, 如有侵权,请联系我们删除。