得到无底洞的加密zip,密码就是文件名
看题目,可能有1000个。。。。。。
用脚本
import zipfile
import os
def extract_nested_zip(zip_path, extract_dir):
try:
# 检查路径是否存在
if not os.path.exists(zip_path):
print(f"文件不存在: {zip_path}")
return
# 打印当前处理的ZIP文件路径
print(f"正在处理: {zip_path}")
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
# 获取ZIP文件的密码(即文件名)
password = os.path.splitext(os.path.basename(zip_path))[0]
# 解压ZIP文件
zip_ref.extractall(path=extract_dir, pwd=password.encode('utf-8'))
# 获取解压后的文件列表
extracted_files = os.listdir(extract_dir)
# 遍历解压后的文件
for file_name in extracted_files:
file_path = os.path.join(extract_dir, file_name)
# 如果文件是ZIP文件,递归解压
if file_name.endswith('.zip'):
extract_nested_zip(file_path, extract_dir)
except Exception as e:
print(f"处理文件时出错: {zip_path}")
print(f"错误信息: {e}")
# 初始ZIP文件路径
initial_zip_path = r'D:\\CTF\\重生之我是工商做题人\\attachment (2)\\0573.zip'
# 解压目录
extract_dir = r'D:\\CTF\\重生之我是工商做题人\\attachment\\gin1friend'
# 确保解压目录存在
if not os.path.exists(extract_dir):
os.makedirs(extract_dir)
# 开始解压
extract_nested_zip(initial_zip_path, extract_dir)
# 最后,输出解压目录中的内容
print("最终解压目录中的内容:")
for root, dirs, files in os.walk(extract_dir):
for file in files:
print(os.path.join(root, file))
得到qr.txt
再利用脚本
from PIL import Image
# 读取文件内容
with open('qr.txt', 'r') as file:
lines = file.readlines()
# 解析RGB值
pixels = [tuple(map(int, line.strip('()\\n').split(','))) for line in lines]
# 假设图像是正方形的,计算图像的尺寸
size = int(len(pixels) ** 0.5)
img = Image.new('RGB', (size, size))
# 填充图像像素
img.putdata(pixels)
# 保存图像
img.save('qr_code.png')
print("二维码图像已生成并保存为 qr_code.png")
得到二维码,扫码得到flag