
Quellcode für das Buch "Black Hat Python" von Justin Seitz. Der Code wurde vollständig auf Python 3 konvertiert, gemäß den PEP8-Standards neu formatiert und umgestaltet, um Abhängigkeitsprobleme zu beseitigen, die durch die Verwendung veralteter Bibliotheken entstehen.
Quellcode für das Buch "Black Hat Python" von Justin Seitz. Der Code wurde vollständig auf Python 3 konvertiert, nach PEP8-Standards neu formatiert und umgestaltet, um Abhängigkeitsprobleme aufgrund der Implementierung veralteter Bibliotheken zu beseitigen.
Obwohl im gesamten Buch viele Optimierungen im Quellcode hätten vorgenommen werden können, wurde der Code so weit wie möglich unverändert gelassen, damit der Leser solche Änderungen nach eigenem Ermessen anwenden kann. Der vorliegende Code benötigt ernsthafte Umgestaltungsbemühungen, die von Docstrings über Type Hints und Fehlerbehandlung bis hin zu Verbesserungen wie Kontextmanager reichen, aber diese Probleme allein können dem Leser zugutekommen, wenn er beabsichtigt, sie umzusetzen. Er enthält auch viele Fehler, die auf Einrückungsprobleme zurückzuführen sind und korrigiert wurden, wenn schwerwiegende Laufzeitfehler vermieden werden sollten.
Eine ähnliche Konvertierung wurde von mir auch für den Quellcode des Buches "Violent Python" von TJ O'Connor bereitgestellt. Schauen Sie es sich hier an, falls Sie es noch nicht getan haben.
Wählen Sie einfach ein Verzeichnis (DIR), in das Sie das Projekt mit git clone klonen, erstellen Sie eine neue virtuelle Umgebung oder venv dafür (empfohlen) und installieren Sie die Abhängigkeiten mit 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
Kritische Fehlerbehebungen, die vorgenommen werden mussten, um den Quellcode ordnungsgemäß zu implementieren und schwerwiegende Fehler zu vermeiden:
chapter02/bh_sshserver.py erforderte den in der Datei test_rsa.key enthaltenen RSA-Schlüssel, der jetzt im entsprechenden Verzeichnis enthalten ist.chapter03/sniffer_ip_header_decode.py & sniffer_with_icmp.py & scanner.py hatten alle schwerwiegende Probleme bei der Definition von IP-Paketgrößen und der Portabilität zwischen 32/64-Bit-Architekturen aufgrund von Problemen bei der Implementierung von struct. Mehr zu diesen Problemen in diesem Thread auf Stack Overflow.chapter03/scanner.py verwendete die Bibliothek netaddr, die nicht mehr gewartet wird und viele Inkompatibilitäten mit Python 3 aufweist. Aus diesem Grund wurde der Code umgestaltet und verwendet nun das Modul ipaddress aus der stdlib von Python.chapter04/arper.py & mail_sniffer.py verwendeten die Bibliothek scapy, die nicht mit Python 3 kompatibel ist. Aus diesem Grund wurde der Code umgestaltet und verwendet nun die Bibliothek kamene.chapter04/pic_carver.py verwendet jetzt die Bibliothek opencv-python anstelle von cv2. Das Modul "cv2.cv" war veraltet und wurde ersetzt. Der Parameter "cv2.cv.CV_HAAR_SCALE_IMAGE" aus dem Originalcode wurde durch "cv2.CASCADE_SCALE_IMAGE" ersetzt aufgrund von diesem Commit.chapter05/content_bruter.py benötigte eine Wortliste zum Funktionieren. Sie wurde dem Kapitel unter all.txt hinzugefügt.chapter05/joomla_killer.py benötigte eine Wortliste zum Funktionieren. Sie wurde dem Kapitel unter cain.txt hinzugefügt.chapter06/bhp_bing.py & bhp_fuzzer.py & bhp_wordlist.py wurden nach PEP8 neu formatiert, obwohl aufgrund der Notwendigkeit, Klassennamen in dieser speziellen Anwendung in Burp Suite an CamelCase anzupassen, weiterhin einige Warnungen ausgelöst werden.chapter06/jython-standalone-2.7.2.jar ist als eine aktuellere Version der im Buch präsentierten Datei verfügbar.chapter07/git_trojan.py wurde umgestaltet, um die (jetzt veraltete) Bibliothek imp durch types zu ersetzen. Eine Unterverzeichnisstruktur mit den erforderlichen Konfigurationsdateien wurde wie im Buch beschrieben implementiert. Die Variable "trojan_config" enthielt nicht den relativen Pfad zum config-Unterverzeichnis. Ein Aufruf der "to_tree"-Methode wurde in Zeile 60 hinzugefügt, um eine durch den Originalcode verursachte AttributeError-Ausnahme zu vermeiden. Anleitungen zum Generieren eines Zugriffstokens anstelle der Verwendung des Passworts, falls 2FA verwendet wird, wurden als Kommentare eingefügt.chapter08/keylogger.py benötigt die Bibliothek PyHook zum Funktionieren. Eine Wheel-Datei der Version 1.6.2 wurde beigefügt. Bei Bedarf können andere Versionen von hier heruntergeladen werden.chapter09/ie_exfil.py warf Fehler aufgrund der Behandlung der Variablen plaintext (die als Zeichenkette oder als binäre Zeichenkette auftreten kann), wenn sie an die Funktion "encrypt_string" übergeben wurde. Zusätzlich wurde die Verwendung der Bibliothek base64 korrigiert. Beitrag von Enraged in diesem Commit.Beiträge in anderen Sprachen können hier eingesehen werden:
Aus Gründen des gesunden Menschenverstandes versuchen Sie zunächst, die gewünschte Änderung an diesem Repository über ein Issue zu diskutieren.