解题

得到无底洞的加密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

{CC44566E-2952-4AA8-A1A5-A7D3011B03B5}.png

再利用脚本

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

{C3F66DCC-7495-4E17-9891-99E9BFF43D28}.png