Skip to content

Latest commit

 

History

History
61 lines (47 loc) · 1.67 KB

README.md

File metadata and controls

61 lines (47 loc) · 1.67 KB

zipzipzip

The solution consists of extracting each of the 25,000 layers, with each layer containing a password.txt file and a new .zip file. By scripting this process you can do it in a reasonable amount of time.

Solution using 7-zip:

import subprocess
import os

def unzip_with_7z(zip_path: str, output_dir: str, password: str):
    result = subprocess.run(
        [
            "7z",
            "e",
            f"-p{password}",
            "-o" + output_dir,
            zip_path,
            "-aoa",
        ],
        capture_output=True,
        text=True,
    )

def main():
    initial_zip = "zip-25000.zip"
    initial_password = "Mo0YAEJs"
    output_dir = "./unzip_temp"
    current_password = initial_password

    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    unzip_with_7z(initial_zip, output_dir, initial_password)

    iteration = 1
    while True:
        print(f"Processing layer {iteration}, pass: '{current_password}'...")

        zip_files = sorted([f for f in os.listdir(output_dir) if f.endswith(".zip")])
        password_file = "password.txt"

        if not zip_files:
            print("No more .zip files found. Exiting.")
            break

        current_zip = os.path.join(output_dir, zip_files[-1])
        password_path = os.path.join(output_dir, password_file)
        if os.path.exists(password_path):
            with open(password_path, "r") as f:
                current_password = f.read().strip()

        unzip_with_7z(current_zip, output_dir, current_password)
        os.remove(current_zip)
        iteration += 1

if __name__ == "__main__":
    main()

Flag: TCP1P{1_TH1NK_U_G00D_4T_SCR1PT1N9_botanbell_1s_h3r3^_^}