Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
violent-python3 — Quellcode für das Buch "Violent Python" von TJ O'Connor. Der Code wurde vollständig zu Python 3 konvertiert, gemäß PEP8-Standards neu formatiert und umstrukturiert, um Abhängigkeitsprobleme durch die Implementierung veralteter Bibliotheken zu beseitigen. | Kitploit
Tools/GitHubGitHub/eonraider/violent-python3
OSINT (Open-Source-Intelligence)AufklärungBluetooth-SicherheitPasswortangriffeExploitationForensikWebsicherheitNetzwerksicherheitDrahtlose SicherheitPenetrationstestsLernen & Bildung
1.0k17911vor 27 TagenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHub
eonraider/violent-python3

violent-python3

Quellcode für das Buch "Violent Python" von TJ O'Connor. Der Code wurde vollständig zu Python 3 konvertiert, gemäß PEP8-Standards neu formatiert und umstrukturiert, um Abhängigkeitsprobleme durch die Implementierung veralteter Bibliotheken zu beseitigen.

Repository anzeigen

Python 3 – Quellcode von »Violent Python«

Quellcode für das Buch »Violent Python« von TJ O’Connor. Der Code wurde vollständig nach Python 3 konvertiert, gemäß PEP8-Standards neu formatiert und refaktorisiert, um Abhängigkeitsprobleme durch die Verwendung veralteter Bibliotheken zu beseitigen.

Eine ähnliche Konvertierung habe ich selbst für den Quellcode des Buches »Black Hat Python« von Justin Seitz bereitgestellt. Schauen Sie sich diese hier an, falls Sie es noch nicht getan haben.

Verwendung

Erstellen Sie einfach ein neues Verzeichnis (DIR) für das Projekt, richten Sie eine virtuelle Umgebung oder venv dafür ein (empfohlen), klonen Sie dieses Repository mit git clone und installieren Sie die Abhängigkeiten mit pip install.

root@kitploit:~
user@host:~/DIR$ git clone https://github.com/EONRaider/violent-python3
user@host:~/DIR$ python3 -m venv venv
user@host:~/DIR$ source venv/bin/activate
(venv) user@host:~/DIR$ pip install -r requirements.txt

Hinweise

  • Die Verzeichnisse und Dateien wurden so benannt, dass sie leicht mit dem Inhalt der einzelnen Kapitel in Verbindung gebracht werden können.
  • Die häufige Verwendung von Zeichenkettenverkettung durch den Autor wurde durch String-Interpolation ersetzt, um eine bessere Lesbarkeit und Übereinstimmung mit einem moderneren Standard zu ermöglichen.
  • Datei-, Variablen-, Funktions-, Klassen- und Methodennamen entsprechen nun den PEP-8-Namenskonventionen.
  • Die inzwischen veraltete Bibliothek optparse wurde im gesamten Quellcode durch argparse ersetzt. Die gesamte Argumentanalyse befindet sich nun im __main__-Ausführungsbereich jeder Datei. Alle CLI-Argumente, die für die Ausführung der Skripte zwingend erforderlich waren, aber im Originalcode als optional behandelt wurden, werden nun als Positionsargumente implementiert. Ein usage-Prompt ist nun für alle Skripte verfügbar, die argparse verwenden, indem das Argument -h an die CLI übergeben wird. Die Verantwortlichkeiten sowohl des Boundary- als auch des Controller-Objekts an den CLI-Parser zu delegieren, ist definitiv nicht die beste Wahl in Bezug auf die Softwarearchitektur, wurde aber aufgrund der Notwendigkeit der Übereinstimmung mit der Absicht des ursprünglichen Programmierers so belassen.
  • Alle Vorkommen von PEP 8: E722 do not use bare except wurden mit spezifischeren Ausnahmeklauseln umgestaltet.
  • Der Autor hat die Angewohnheit, Dateien/Datenbanken zu öffnen und in diesem Zustand zu belassen, anstatt die close()-Methode für die geöffneten Datei-/Datenbankobjekte aufzurufen. Aus diesem Grund wurden alle Instanzen der Datei- und Datenbankmanipulation durch die Verwendung von Kontextmanagern umgestaltet.

Refactoring

Dateien, die nicht unten aufgeführt sind, können so betrachtet werden, dass sie auf die eine oder andere Weise wie in den »Hinweisen« festgelegt umgestaltet wurden.

  • chapter01/vuln_scanner.py war so strukturiert, dass eine nicht vorhandene Datei zur Laufzeit zu einer OSError-Ausnahme führen würde. Aus diesem Grund wurde die Iterationssteuerung, die check_vulns() aufruft, in die in der Hauptfunktion definierte Bedingungsanweisung verschoben.
  • chapter02/nmap_scan.py implementierte eine Hauptfunktion ausschließlich zum Zweck des Aufrufs der veralteten Bibliothek optparse, die durch argparse ersetzt wurde. Deshalb wurde die Hauptfunktion entfernt. Eine Iterationssteuerungsstruktur, die im Originalcode Teil des optparse-Aufrufs war, wurde so implementiert, dass ein neuer Aufruf von nmap für jeden gescannten Port ausgeführt wurde. Die Iteration wurde in die Funktion nmap_scan verschoben, um die Verschwendung von Rechenzyklen zu vermeiden.
  • chapter02/ssh_command.py hatte seinen Initialisierungscode in den __main__-Ausführungsbereich verschoben. Die Namen der Variablen im äußeren Gültigkeitsbereich, die früher mit den Namen von Funktionsparametern kollidierten, wurden geändert. Die zurückgegebenen Eingabeaufforderungsinformationen waren ursprünglich kodiert und wurden nun dekodiert, um eine bessere Lesbarkeit zu ermöglichen.

Übersetzungen

Beiträge in anderen Sprachen können hier eingesehen werden:

  • Ins Türkische übersetzt von Bedirhan Budak

Mitwirken

Als gesunder Menschenverstand gilt: Besprechen Sie zuerst die Änderung, die Sie an diesem Repository vornehmen möchten, über ein Issue.

  1. Stellen Sie sicher, dass die von Ihnen gewünschten Modifikationen tatsächlich zu einem Pull-Request führen. Die Änderung von einer oder zwei Zeilen sollte stattdessen über ein Issue angefordert werden.
  2. Aktualisieren Sie bei Bedarf die Datei README.md mit Details zu Änderungen an der Projektstruktur.
  3. Stellen Sie sicher, dass die Commit-Nachrichten, die die Modifikationen enthalten, einem Standard entsprechen. Wenn Sie nicht wissen, wie Sie vorgehen sollen, finden Sie hier eine hervorragende Referenz dazu.
  4. Ihre Anfrage wird so schnell wie möglich (normalerweise innerhalb von 48 Stunden) überprüft.
Tool herunterladen
  • Die Verwendung von Kommentaren, die auf die vom Interpreter zu verwendende Kodierung verweisen (nämlich # -*- coding: utf-8 -*-), wurde aufgrund der Standardisierung von UTF-8 als Standardkodierung für Python 3 (Ersatz von ASCII aus Python 2) eliminiert.
  • Obwohl aus der Perspektive bewährter Verfahren völlig unangemessen, wurde die Verwendung globaler Variablen unberührt gelassen, um starke Abweichungen von der Logik des Originalcodes zu vermeiden.
  • Der Code aus Kapitel 5 des Buches wurde umgestaltet, obwohl er praktisch bestenfalls historisch ist. Ein Großteil seiner Funktionalität hängt nicht nur von sehr spezifischen, vom Autor als Beispiele skizzierten Fällen ab, sondern nutzt auch Schwachstellen aus, die in den letzten Jahren nicht mehr realistisch sind (wie das Abhören von Datenverkehr von 802.11-WLAN-Netzwerken, die noch immer auf den WEP-Sicherheitsalgorithmus zur Verkehrsverschlüsselung angewiesen sind oder, schlimmer noch, gar keine Sicherheit bieten) oder die absurde Erwartung, dass der Leser ein bestimmtes UAV-Modell erwirbt, wenn er den Code in Aktion sehen möchte. Um nicht gleich zu sagen, dass die Mühe, dieses Kapitel zu lesen, nahezu sinnlos ist, möchte ich hinzufügen, dass aus dem Code zum Abhören von Probe- und Beacon-Requests dennoch ein gewisser Nutzen gezogen werden kann.
  • Der Code in Kapitel 6, der Verweise auf Google und Twitter enthält, erwies sich in der Art und Weise, wie diese die aktuellen APIs handhaben, als zu veraltet, um den Aufwand einer Umgestaltung zu rechtfertigen. Falls Sie daran interessiert sind, damit umzugehen, führen Sie die Umgestaltung durch und reichen Sie einen Pull-Request in diesem Repository ein.
  • chapter02/ssh_brute.py importierte pxssh als eigenständige Bibliothek, aber tatsächlich ist es eine Bibliothek unter der pexpect-Bibliothek. Der Fehler führte zu einem ModuleNotFoundError und wurde korrigiert. Der Code selbst, wie er im Buch präsentiert wird, war mit Einrückungsfehlern übersät, die ihn unbrauchbar machten, und wurde in einen funktionsfähigen Zustand gebracht.
  • chapter02/ssh_brutekey.py erforderte eine Reihe von vorab generierten Schlüsseln, um zu funktionieren; außerdem verweist das Buch den Leser auf eine URL, um solche Schlüssel zu erhalten, die derzeit eine 403-Antwort zurückgibt. Aus diesem Grund wurde ein komprimiertes Archiv, das die Schlüssel enthält, zum Unterverzeichnis chapter02 hinzugefügt.
  • chapter02/ssh_botnet.py hatte eine nicht verwendete Importanweisung für optparse, die entfernt wurde. Es sieht aus wie ein Fragment aus einem abgebrochenen Versuch, ein CLI für dieses Skript zu implementieren. Überraschenderweise wurde es einfach so hängen gelassen, sogar in der gedruckten Version des Buches. Der Code, der das Botnetz initialisiert und seine Befehle ausgibt, wurde aus Gründen der Standardisierung unter den __main__-Ausführungsbereich organisiert. Die beiden an die Bots ausgegebenen Befehle wurden vereinheitlicht, um eine unnötige Anzahl von Rückgabeanweisungen zu vermeiden.
  • chapter02/conficker.py entfernte einen nicht verwendeten Aufruf der sys-Bibliothek.
  • chapter03/discover_networks.py musste neu implementiert werden, anstatt nur umgestaltet zu werden. Es verwendete ursprünglich nicht nur die veraltete Bibliothek mechanize, sondern interagierte auch mit dem WiGLE-Dienst auf eine Weise, die nicht mehr notwendig ist, da WiGLE jetzt eine API bereitstellt. Aus diesem Grund wurde der Code standardisiert und eine neue Funktion wigle_print unter Verwendung der Bibliothek requests implementiert, um eine authentifizierte HTTP-GET-Anfrage an WiGLE zu senden. Die Antwort gibt ein JSON-Objekt zurück, auf das direkt zugegriffen werden kann, wodurch die Verwendung der re-Bibliothek ebenfalls überflüssig wird. Es wurde eine Ausnahmebehandlung hinzugefügt, um das Skript in die Lage zu versetzen, mit Fehlerantwortmeldungen der API umzugehen. Beachten Sie, dass dieses Skript von winreg abhängt, das nur unter Python-Installationen unter Microsoft Windows läuft und während der Ausführung Administratorrechte für den Zugriff auf die Registrierungsschlüssel erfordert. Für den Zugriff auf die API muss ein Konto unter https://wigle.net/account registriert werden.
  • chapter03/pdf_read.py verwendet jetzt die Bibliothek PyPDF4 anstelle des veralteten PyPDF. Das Buch verweist im Text auf eine bestimmte PDF-Datei, und diese wurde zum Unterverzeichnis chapter03 hinzugefügt.
  • chapter03/exif_fetch.py erforderte ein Argument features="html.parser" beim Aufruf des Konstruktors des BeautifulSoup-Objekts. Es wurde in Zeile 15 hinzugefügt. Dieses Skript funktioniert nur bei Webanwendungen, die Bilder zwischen img-HTML-Tags einbetten (eine seltene Praxis bei modernen Webanwendungen, die stark auf JavaScript angewiesen sind).
  • chapter03/skype_parse.py verwendet die Datei main.db als Beispiel. Sie wurde der Einfachheit halber zum Unterverzeichnis chapter03/skype_profile hinzugefügt.
  • chapter03/firefox_parse.py verwendet mehrere .sqlite-Dateien als Beispiele. Sie wurden der Einfachheit halber zum Unterverzeichnis chapter03/firefox_profile hinzugefügt.
  • chapter03/iphone_messages.py referenziert iPhone-Sicherungsdateien, die vom Autor nicht zur Verfügung gestellt wurden. Aus diesem Grund wurde der Code umgestaltet, bleibt aber ungetestet.
  • chapter04/geo_ip.py verwendete die veraltete Bibliothek pygeoip. Wie von seinem Ersteller vorgeschlagen, sollte jetzt geoip2 verwendet werden. Es wurde versucht, den neu implementierten Code so ähnlich wie möglich an die ursprüngliche Implementierung im Buch zu halten, aber einige Änderungen mussten vorgenommen werden, um die neue Paketstruktur von geoip2 und seinen Attributen zu berücksichtigen. Die für die Ausführung des Skripts erforderliche Datenbankdatei wurde von MaxMind heruntergeladen und im Verzeichnis chapter04 bereitgestellt. Ein CLI wurde ebenfalls mit argparse implementiert.
  • chapter04/print_direction.py löste beim Öffnen der Datei in der ursprünglichen Implementierung eine UnicodeDecodeError-Ausnahme aus. Dies wurde behoben, indem dem Kontextmanager, der die Datei verwaltet, ein rb-Argument hinzugefügt wurde.
  • chapter04/find_ddos.py druckte die Quelladresse des Hivemind-Angriffs als dessen Zieladresse, was die Ausgabe unbrauchbar machte. Die korrekte Variable dst wird jetzt auf stdout ausgegeben. Das Buch verweist auf eine Datei namens traffic.pcap, die vom Autor nicht zur Verfügung gestellt wurde, daher wurde der Code umgestaltet, bleibt aber ungetestet.
  • chapter04/test_domain_flux.py gibt zurück, dass bei der Analyse der vom Autor bereitgestellten pcap-Datei keine unbeantworteten Anfragen gestellt wurden. Aus irgendeinem Grund haben die Pakete selbst keinen Wert für das DNS-Resource-Record-Feld gesetzt, sodass die Bedingung in der Funktion dns_QR_test immer als falsch ausgewertet wird. In diesem Fall wurde die Bedingung zur Auswertung des DNSRR-Feldes aus der Bedingungsanweisung entfernt, und alle UDP-Pakete, die als Quelle Port 53 haben, werden jetzt analysiert. Dies führt zu weniger effizientem Code, gibt aber zumindest die Ergebnisse wie im Buch beabsichtigt aus.
  • chapter05/blue_bug.py verwendet die Bibliothek PyBluez, die wiederum die Bibliothek BlueZ und Header-Dateien benötigt, wie in ihren Installationsanweisungen angegeben. Diese Abhängigkeiten müssen vor der Installation von PyBluez als Abhängigkeit installiert werden. Unter Linux kann dies mit dem Befehl apt install bluetooth libbluetooth-dev durchgeführt werden. Der Originalcode verweist auf ein nicht vorhandenes Objekt client_sock, das durch phone_sock ersetzt wurde.
  • chapter05/ftp_sniff.py hatte einen logischen Fehler, der dazu führte, dass ein abgehörter Benutzername, aber kein Passwort angezeigt wurde, aufgrund einer schlechten Implementierung einer if...else-Anweisung. Dies wurde korrigiert, indem die Bedingungsanweisung durch eine verschachtelte if-Klausel ersetzt wurde.
  • chapter05/ninja_print.py benötigt die Bibliothek obexftp, um zu funktionieren. Diese Bibliothek wurde für Python 2 geschrieben und wurde bis heute nicht portiert oder durch eine äquivalente ersetzt, daher bleibt der Code in seiner Python-2-Version, wie vom Autor geschrieben.
  • chapter05/__init__.py und chapter06/__init__.py wurden hinzugefügt, um das Importieren von Modulen aus chapter05/dup.py bzw. chapter06/anon_browser.py zu ermöglichen.
  • chapter06/anon_proxy.py wurde mit der Python-3-Bibliothek MechanicalSoup neu implementiert. Es integriert die Änderungen, die für proxy_test.py, useragent_test.py und print_cookies.py erforderlich waren.
  • chapter06/anon_browser.py wurde ebenfalls mit MechanicalSoup neu implementiert und durchlief einige Code-Änderungen. Die Bibliothek cookielib wurde durch http.cookiejar in der Konstruktormethode für die Klasse AnonBrowser ersetzt, und der Parameter user_agents akzeptiert jetzt eine Liste von Zeichenketten anstelle eines Tupels.
  • chapter06/link_parser.py wurde umgestaltet, indem neue Methoden zur Handhabung der Implementierungen von re und bs4 verwendet wurden.