Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Recuperar contraseña fichero ZIP
#1
Buenas tardes.
Llevo poco tiempo aprendiendo PYTHON.
Tengo un problema con un fichero ZIP del cuál no recuerdo la contraseña.
He localizado este programa pero no logro que funcione.
El fichero esta en la siguiente localización:  c:\072023JULIO2023.ZIP
Utilizo SPYDER.
Por favor rogaría que lo reviséis.
Muchas gracias.

# -*- coding: utf-8 -*-

# Nombre del archivo ZIP protegido con contraseña
archivo_zip = "c:/072023JULIO2023.zip"

# Lista de caracteres que se usarán para realizar el ataque de fuerza bruta (puedes personalizarla según tus necesidades)
caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-+=[]{}|;:,.<>?`~"

# Longitud máxima de la contraseña a probar
longitud_maxima = 25

def fuerza_bruta():
    for longitud in range(1, longitud_maxima + 1):
        intento = [0] * longitud
        while True:
            # Generar la contraseña actual basada en el intento actual
            contraseña = ''.join([caracteres[i] for i in intento])

            try:
                with zipfile.ZipFile(archivo_zip, "r") as zf:
                    zf.extractall(pwd=bytes(contraseña, 'utf-8'))
                print(f"Contraseña encontrada: {contraseña}")
                return
            except Exception as e:
                # Continuar con el siguiente intento
                pass
           
            # Aumentar el intento
            posicion = 0
            while True:
                if posicion == longitud:
                    break
                intento[posicion] += 1
                if intento[posicion] == len(caracteres):
                    intento[posicion] = 0
                    posicion += 1
                else:
                    break

if __name__ == "__main__":
    fuerza_bruta()
Responder
#2
Buenas, ¿qué es exactamente lo que no funciona?

Por otro lado, te advierto que un script de fuerza bruta como este puede tardar años en encontrar la contraseña correcta.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Muchas gracias por tu tiempo.
Al depurar da el siguiente resultado:

%debugfile 'C:/Python/Ejercicios/contraseña.py' --wdir
> c:\python\ejercicios\contraseña.py(4)<module>()
2
3 # Nombre del archivo ZIP protegido con contraseña
----> 4 archivo_zip = "c:/072023JULIO2023.zip"
5
6 # Lista de caracteres que se usarán para realizar el ataque de fuerza bruta (puedes personalizarla según tus necesidades)

No tenia previsto que podía tardar tanto tiempo.
El fichero comprimido es muy importante para mí.
No se si me podrías indicar otra forma de recuperar la contraseña.
He probado programas de internet pero sin ningún resultado.
Gracias anticipadas
Responder
#4
Desafortunadamente Francisco tiene razon, la brute force que estas utilizados puede tardar una enternidad, a no sea que uses Computacion quantica, entonces quizas tardaria segundos.

Otra forma the brute force que puedes utilizar es ataque de diccionario. Que puede o no encontrar la contrasen~a, pero es mas eficiente.

Baja de internet https://web.archive.org/web/201202071132...load.shtml, el dictionario Spanish.

Correlo contra el codigo de abajo.

Antes que lo corras, te recomiendo que pongas al principio del diccionario, todas las contrasen~as que tu crees pudiste haber utilizado.


Código:
# -*- coding: utf-8 -*-
"""
Created on Mon Oct 30 12:51:08 2023
@author: user
"""
import time
import pyzipper
from tqdm import tqdm
def display_welcome_message():
    welcome_message = """
    ************************************************
    * Password Cracker created by PythonPhreak!   *
    ************************************************
   
    This program attempts to decrypt a ZIP file using a
    wordlist of potential passwords. Please provide the
    paths to the ZIP file and the wordlist.
    """
    print(welcome_message)
def main():
    display_welcome_message()
    # Get the path to the ZIP file and the wordlist file from the user
    zip_file_path = input("Enter the path to the ZIP file: ")
    wordlist_path = input("Enter the path to the wordlist file: ")
    # Count the number of words in the wordlist
    n_words = len(list(open(wordlist_path, "rb")))
    # Print the total number of passwords
    print("Total passwords to test:", n_words)
    time.sleep (1)
    with open(wordlist_path, "rb") as wordlist_file:
        for word in tqdm(wordlist_file, total=n_words, unit="word"):
            try:
                # Attempt to decrypt the ZIP file using pyzipper
                with pyzipper.AESZipFile(zip_file_path) as zf:
                    zf.pwd = word.strip()
                    zf.extractall()
                print("[+] Password found:", word.decode().strip())
                return
            except Exception as e:
                continue
    print("[!] Password not found, try other wordlist.")
if __name__ == "__main__":
    main()
Responder
#5
Buenas tardes.
Muchas gracias por tu interés.
He bajado el diccionario y lo he revisado y no he localizado ningún carácter especial (!"@#$%&....etc), y por lo que recuerdo casi seguro (99%) he utilizado uno o mas de uno de ellos.
Actualmente no creo tener los conocimientos suficientes de Python para ver donde se tendría que implementar el diccionario y poder ejecutar el programa que me indicas.
No obstante reitero mi agradecimiento por tu interés y tu tiempo.
Responder
#6
Estimado como dicen los demas compañeros hacer fuerza bruta es algo largo ,  lo que hace basicamente la fuerza bruta es probar todas las posibles palabras hasta encontrar la correcta . Osea si ud tiene un diccionario con un millon de palabras el porgrama las ira probando de una en una hasta dar con la correcta , ahora lo malo de esto es que la palabra buscada puede estar  en cualquier lugar puede que este al principio del diccionario como puede que este al centro o puede que este al final y tambien puede que no este .
Una estrategia para acortar los tiempos y que la busqueda sea mas eficiente es crear diccionarios tematicos y tambien que ud se acuerde de mas menos lo que se trataba la contraseña . Le doy un ejemplo:
Alomejor a ud le gusta el rock y alomejor su contraseña tiene que ver con cantantes de rock , entonces lo que tendria que hacer ud es hacer un diccionario solo con cantantes de rock, por ejemplo
Bon jovi
Kurt cobain
Jim Morrison
etc

Luego alomejor ud le puso algunos caracteres "raros "  como @ # etc , entonces ud mezcla esos caracteres con los nombres
@bon jovi
@kurt cobain
....
bon@jovi
......
#bon@jovi
.....
Etc .
Ahora eso de combinar caracteres no lo hace uno mismo sino que se crea un programa que combien todo
Ahora hay otros programas mas "rapidos"  que hacen lo mismo y son programas especializados en eso por ejemplo esta johon the riper que es lo que se usa en materia de seguridad informatica aka hacking
Ahora si para ud es muy impoirtante yo le puedo ayudar por una par de billetes . me puede hablar al privado si le interesa
Saludos cordiales
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)