解压得到out0.zip---out67.zip68个zip文件,
但是里面压缩包加密的data.txt都比较小,都为4字节,尝试crc32爆破
借用大神脚本,我做注释
这段Python脚本的功能是破解一个包含多个zip文件的文件夹中的每个zip文件的CRC32校验值,并将破解成功的结果写入到一个名为"out.txt"的文件中。
具体的实现逻辑如下:
1. 导入了zipfile、string、binascii和os模块。
2. 定义了一个文件路径filepath,并将当前工作目录更改为该路径。
3. 定义了一个函数CrackCrc,用于破解给定的CRC32校验值。该函数通过四层嵌套循环遍历一个字符集合dic的所有可能组合,将每个组合转换为字节流并计算其CRC32校验值,然后与给定的crc进行比较,如果相等则将该组合写入到文件f中并返回。
4. 定义了一个函数CrackZip,用于破解每个zip文件的CRC32校验值。该函数通过一个循环遍历68个zip文件,获取每个zip文件中名为"data.txt"的文件的CRC32校验值,并调用CrackCrc函数进行破解。
5. 定义了一个字符串dic,包含了大小写字母、数字和字符"+/=",用于生成可能的组合。
6. 打开一个名为"out.txt"的文件f,用于存储破解成功的结果。
7. 打印"CRC32begin"。
8. 调用CrackZip函数进行破解。
9. 打印"CRC32finished"。
10. 关闭文件f。
import zipfile # 导入zipfile模块,用于处理zip文件
import string # 导入string模块,用于生成字母和数字
import binascii # 导入binascii模块,用于进行CRC32校验
import os # 导入os模块,用于文件操作
filepath = r'./' # 设置文件路径
os.chdir(filepath) # 切换当前工作目录为指定路径
def CrackCrc(crc):
# 定义一个函数用于破解CRC32校验值
for i in dic:
for j in dic:
for k in dic:
for h in dic:
s = i + j + k + h # 生成四个字符的组合
if crc == (binascii.crc32(s.encode())): # 判断CRC32校验值是否匹配
f.write(s) # 将匹配的字符串写入文件
return
def CrackZip():
# 定义一个函数用于破解zip文件
for i in range(0, 68):
file = 'out' + str(i) + '.zip' # 构造zip文件名
crc = zipfile.ZipFile(file, 'r').getinfo('data.txt').CRC # 获取zip文件中data.txt的CRC32校验值
CrackCrc(crc) # 调用破解CRC32校验值的函数
print('\r' + "loading:{:%}".format(float((i + 1) / 68)), end='') # 打印加载进度
dic = string.ascii_letters + string.digits + '+/=' # 定义字符集,包括大小写字母、数字和'+/='符号
f = open('out.txt', 'w') # 打开一个文件用于写入破解结果
print("\nCRC32begin") # 打印开始破解提示
CrackZip() # 调用破解zip文件的函数
print("CRC32finished") # 打印破解完成提示
f.close() # 关闭文件
out.txt里是base64编码,去解码
点击右下方的unkown文件,下载,winhex打开,怀疑是rar文件,添加rar文件头:52 61 72 21 1A 07 00,保存为flag.rar