
Codice sorgente per il libro "Black Hat Python" di Justin Seitz. Il codice è stato completamente convertito a Python 3, riformattato per conformarsi agli standard PEP8 e rifattorizzato per eliminare i problemi di dipendenza legati all'implementazione di librerie deprecate.
Codice sorgente per il libro "Black Hat Python" di Justin Seitz. Il codice è stato completamente convertito a Python 3, riformattato per conformarsi agli standard PEP8 e refactoring per eliminare problemi di dipendenza che coinvolgono l'implementazione di librerie deprecate.
Sebbene molte ottimizzazioni avrebbero potuto essere implementate nel codice sorgente presentato nel libro, il codice è stato lasciato il più possibile invariato affinché il lettore possa applicare tali modifiche come meglio crede. Il codice così com'è richiede seri sforzi di refactoring che vanno dai docstring al type hinting e alla gestione delle eccezioni, per non parlare di migliorie come i context manager, ma questi problemi di per sé possono giovare al lettore se ha intenzione di implementarli. Presenta inoltre molti bug dovuti all'indentazione che sono stati corretti per evitare errori fatali in fase di esecuzione.
Una conversione simile a questa è stata resa disponibile da me sul codice sorgente del libro "Violent Python", di TJ O'Connor. Dai un'occhiata qui se non l'hai ancora fatto.
Scegli semplicemente una directory (DIR) in cui clonare il progetto usando git clone, crea un nuovo ambiente virtuale o venv per esso (consigliato) e installa i requisiti usando pip install.
user@host:~/DIR$ git clone https://github.com/EONRaider/blackhat-python3
user@host:~/DIR$ python3 -m venv venv
user@host:~/DIR$ source venv/bin/activate
(venv) user@host:~/DIR$ pip install -r requirements.txt
Correzioni critiche di bug che sono state necessarie per implementare correttamente il codice sorgente ed evitare errori fatali:
chapter02/bh_sshserver.py richiedeva la chiave RSA contenuta nel file test_rsa.key, ora incluso nella directory corrispondente.chapter03/sniffer_ip_header_decode.py e sniffer_with_icmp.py e scanner.py presentavano tutti seri problemi nella definizione delle dimensioni dei pacchetti IP e nella portabilità tra architetture a 32/64 bit a causa di problemi nell'implementazione di struct. Maggiori informazioni su questi problemi in questa discussione su Stack Overflow.chapter03/scanner.py utilizzava la libreria netaddr, che non è più mantenuta e presenta molte incompatibilità con Python 3. Per questo motivo il codice è stato rifattorizzato e ora usa il modulo ipaddress della stdlib di Python.chapter04/arper.py e mail_sniffer.py utilizzavano la libreria , che non è compatibile con Python 3. Per questo motivo il codice è stato rifattorizzato e ora usa la libreria .I contributi in altre lingue possono essere consultati qui:
Per buon senso, cerca prima di discutere tramite un'issue la modifica che desideri apportare a questo repository.
scapykamenechapter04/pic_carver.py ora utilizza la libreria opencv-python invece di cv2. Il modulo cv2.cv era deprecato ed è stato sostituito. Il parametro cv2.cv.CV_HAAR_SCALE_IMAGE del codice originale è stato sostituito con cv2.CASCADE_SCALE_IMAGE a causa di questo commit.chapter05/content_bruter.py richiedeva una wordlist per funzionare. È stata aggiunta al capitolo con il nome all.txtchapter05/joomla_killer.py richiedeva una wordlist per funzionare. È stata aggiunta al capitolo con il nome cain.txtchapter06/bhp_bing.py, bhp_fuzzer.py e bhp_wordlist.py sono stati riformattati per conformarsi allo standard PEP8, anche se verranno comunque generati alcuni avvisi a causa della necessità di conformare i nomi delle classi al camel-case in questa specifica applicazione su Burp Suite.chapter06/jython-standalone-2.7.2.jar è disponibile come versione più aggiornata del file rispetto a quello presentato nel libro.chapter07/git_trojan.py è stato rifattorizzato per sostituire la libreria imp (ora deprecata) con types. È stata implementata una struttura di sottodirectory con i necessari file di configurazione come indicato nel libro. Alla variabile trojan_config mancava il percorso relativo alla sottodirectory config. È stata aggiunta una chiamata al metodo to_tree alla riga 60 per evitare un'eccezione AttributeError generata dal codice originale. Sono state incluse come commenti le istruzioni su come generare un token di accesso invece di usare la propria password nel caso in cui venga utilizzata la 2FA.chapter08/keylogger.py richiede la libreria PyHook per funzionare. È stato incluso un file wheel con la versione 1.6.2. Se necessario, altre versioni possono essere scaricate da qui.chapter09/ie_exfil.py generava errori a causa della gestione della variabile plaintext (che può presentarsi come stringa o come stringa binaria) quando veniva passata alla funzione encrypt_string. Inoltre, è stato corretto l'uso della libreria base64. Contributo di Enraged in questo commit.