打开压缩文件,发现是加密的,且3个小文件大小是6k,就需要用github上crc32.py破解,对于小于6K的,可以参考以下代码:
import string
import binascii
import zipfile
'''
对于文件大小<6B的文件,可以利用CRC32的校验值,爆破文本内容。
对于6字节文件的CRC32爆破,在GitHub上有爆破脚本,:
python crc32.py reverse 0x93C2BE07反推出(所有可能的)6位长度的文本内容
https://github.com/theonlypwner/crc32/blob/main/crc32.py
'''
dic = string.ascii_letters + string.digits + '+/='
def crash_CRC32(crc):
for a in dic:
for b in dic:
for c in dic:
for d in dic:
s = a + b + c + d
encoded_s = s.encode('utf-8') # 编码后的 s
if binascii.crc32(encoded_s) & 0xffffffff == crc:
return s
return 0
def get_CRC32(zip_file_name):
# 打开 zip 文件
with zipfile.ZipFile(zip_file_name, 'r') as zip:
# 使用字典来存储文件名与其 CRC32 值的映射
crc_values = {}
# 遍历 zip 文件中的每一个条目
for zip_info in zip.infolist():
# 将文件名和对应的 CRC32 值存入字典
crc_values[zip_info.filename] = zip_info.CRC
return crc_values
zip_name=r'F:\ctf\c5d9e626.zip'
crc_list=get_CRC32(zip_name)
str=''
for j in crc_list.items():
# 将获取的CRC32放入函数进行破解,然后将值进行拼接
#print(j)
crc = j[1]
crc = crash_CRC32(crc)
if crc == 0:
print('发生未知错误')
exit(0)
str += crc
print(str)
print(str)
python crc32.py reverse 0XCC86365B
python crc32.py reverse 0XBCEE7ED5
python crc32.py reverse 0XCCCA7E74
最连贯的结果:
forum_91ctf_com_66
解压后发现convert.txt是01构成的,猜测是二维码,将二进制转为字符,是base64编码的图像。base64解码保存为图像,打开如图,扫码得到 flag{owid0-o91hf-9iahg}