Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: DGPMAJ en Marzo 02, 2025, 09:21:01 AM

Título: Recuperar contraseña fichero ZIP con Python
Publicado por: DGPMAJ en Marzo 02, 2025, 09:21:01 AM
Buenos días.
Llevo muy poco tiempo intentando programar en Python con ayuda de internet y con algún que otro manual.
He creado un fichero ZIP con contraseña  1234
He comprobado que se puede descomprimir con esa contraseña.

Tengo este programa para poder recuperar la contraseña de otro fichero ZIP (la cual he olvidado, y que es muy importante para mí).

A modo de prueba, a la variable  chars le he asignado el valor de la contraseña chars = "1234"
He ejecutado el programa e imprime en pantalla las contraseñas que genera pero al terminar da el mensaje No se encontró la contraseña.

¿Cual puede ser el motivo?.
Gracias anticipadas.

import zipfile
import itertools
import string

def extract_zip(zip_file, password):
    try:
        zip_file.extractall(pwd=password.encode('utf-8'))
        return True
    except (RuntimeError, zipfile.BadZipFile, zipfile.LargeZipFile):
        # Maneja errores de contraseña incorrecta o archivo ZIP corrupto
        return False
def brute_force_zip(zip_path, max_length):
    with zipfile.ZipFile(zip_path) as zip_file:
       
        # chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$%&*_-" # Caracteres a probar
        chars = "1234"
       
        for length in range(1, max_length + 1):
            for attempt in itertools.product(chars, repeat=length):
                password = ''.join(attempt)
               
                print(f"Probando: {password}")
               
                if extract_zip(zip_file, password):
                    print(f"¡Contraseña encontrada!: {password}")
                    return password
        print("No se encontró la contraseña.")
        return None

# Ruta al archivo ZIP
# zip_path = "C:\\python\\072023JULIO2023.ZIP" # "ruta/al/archivo.zip"

zip_path = "C:\\python\\INMERSION EN PYTHON 3.zip" # "ruta/al/archivo.zip"

# Longitud máxima de la contraseña a probar
max_length = 15

# Ejecutar la fuerza bruta
brute_force_zip(zip_path, max_length)