Mensajes: 4
Temas: 1
Registro en: Jan 2025
Reputación:
0
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()
Mensajes: 1.305
Temas: 3
Registro en: Feb 2016
Reputación:
71
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
Mensajes: 4
Temas: 1
Registro en: Jan 2025
Reputación:
0
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
Mensajes: 4
Temas: 1
Registro en: Jan 2025
Reputación:
0
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.
Mensajes: 1
Temas: 0
Registro en: Feb 2025
Reputación:
0
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
Mensajes: 4
Temas: 1
Registro en: Jan 2025
Reputación:
0
Buenos días.
Me podéis ayudar.
Ejecutando este programa prueba hasta br y da los siguientes errores:
Probando: br
Traceback (most recent call last):
File C:\Python\Spyder6\envs\spyder-runtime\Lib\site-packages\spyder_kernels\customize\utils.py:209 in exec_encapsulate_locals
exec_fun(compile(code_ast, filename, "exec"), globals)
File c:\python\ejercicios\fuerza bruta copilot ia.py:32
brute_force_zip(zip_path, max_length)
File c:\python\ejercicios\fuerza bruta copilot ia.py:24 in brute_force_zip
if extract_zip(zip_file, password):
File c:\python\ejercicios\fuerza bruta copilot ia.py:11 in extract_zip
zip_file.extractall(pwd=password.encode('utf-8'))
File C:\Python\Spyder6\envs\spyder-runtime\Lib\zipfile.py:1701 in extractall
self._extract_member(zipinfo, path, pwd)
File C:\Python\Spyder6\envs\spyder-runtime\Lib\zipfile.py:1756 in _extract_member
shutil.copyfileobj(source, target)
File C:\Python\Spyder6\envs\spyder-runtime\Lib\shutil.py:197 in copyfileobj
buf = fsrc_read(length)
File C:\Python\Spyder6\envs\spyder-runtime\Lib\zipfile.py:965 in read
data = self._read1(n)
File C:\Python\Spyder6\envs\spyder-runtime\Lib\zipfile.py:1041 in _read1
data = self._decompressor.decompress(data, n)
error: Error -3 while decompressing data: invalid distance too far back
import zipfile
import itertools
import string
def extract_zip(zip_file, password):
try:
zip_file.extractall(pwd=password.encode('utf-8'))
print(f"Contraseña encontrada: {password}")
return True
except (RuntimeError, zipfile.BadZipFile):
return False
def brute_force_zip(zip_path, max_length):
zip_file = zipfile.ZipFile(zip_path)
characters = string.ascii_letters + string.digits + string.punctuation
for length in range(1, max_length + 1):
for attempt in itertools.product(characters, repeat=length):
password = ''.join(attempt)
print(f"Probando: {password}")
if extract_zip(zip_file, password):
return password
print("No se pudo encontrar la contraseña.")
return None
zip_path = 'C:/DESCARGAS/072023JULIO2023.ZIP' #'ruta/al/archivo.zip'
max_length = 25 # Longitud máxima de la contraseña
brute_force_zip(zip_path, max_length)