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
pcfg_cracker — Probabilistische Kontextfreie Grammatik (PCFG) Passwort-Rate-Generator | Kitploit
Tools/GitHubGitHub/lakiw/pcfg_cracker
Passwort-CrackingPasswortangriffeKryptographieMaschinelles Lernen
GitHublakiw/pcfg_cracker

pcfg_cracker

Probabilistische Kontextfreie Grammatik (PCFG) Passwort-Rate-Generator

Repository anzeigen
37087vor 11 MonatenVon 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

PCFG = Probabilistische Kontextfreie Grammatik

PCFG = Ziemlich cooler Fuzzy-Rater

Kurz gesagt: Eine Sammlung von Werkzeugen zur Erforschung, wie Menschen Passwörter generieren. Diese können zum Knacken von Passwort-Hashes verwendet werden, aber auch zur Erstellung synthetischer Passwörter (Honeywords) oder zur Entwicklung besserer Passwortstärke-Algorithmen.

Werkzeugversionen

Trainer: 4.4

Guesser: 4.6

PRINCE_LING: 4.3

Password_Scorer: 4.4

Dokumentation

Sphinx wird verwendet, um dynamisch ein Entwicklerhandbuch basierend auf Docstrings im Code zu erstellen. Informationen zum Erstellen des Entwicklerhandbuchs finden Sie in der Anleitung unter /doc/INSTRUCTIONS.rst

Ein vorab erstelltes Entwicklerhandbuch als PDF finden Sie auch unter /doc/build/latex/pcfgdevelopersguide.pdf. Beachten Sie, dass ich dieses Handbuch zwischen größeren Veröffentlichungen nicht neu erstelle, um die Git-Historie sauber zu halten. Das Commitieren von PDFs wird schnell unübersichtlich. Daher kann das vorab erstellte Handbuch leicht veraltet sein. Wenn Sie es zum Schreiben/Ändern von Code verwenden, wird empfohlen, das Handbuch selbst zu erstellen, anstatt das vorab erstellte zu verwenden.

Übersicht

Dieses Projekt verwendet maschinelles Lernen, um die Passworterstellungsgewohnheiten von Benutzern zu identifizieren. Ein PCFG-Modell wird durch Training mit einer Liste offengelegter Klartext-/geknackter Passwörter erstellt. Im Kontext dieses Projekts wird das Modell als Regelsatz bezeichnet und enthält viele verschiedene Teile der während des Trainings identifizierten Passwörter sowie deren zugehörige Wahrscheinlichkeiten. Diese Zerlegung kann für andere Knackwerkzeuge wie PRINCE nützlich sein, und/oder Teile des Regelsatzes können direkt in traditionellere wörterbuchbasierte Angriffe integriert werden. Dieses Projekt enthält auch einen PCFG-Ratengenerator, der diesen Regelsatz verwendet, um Passwortversuche in Wahrscheinlichkeitsreihenfolge zu generieren. Dies ist viel leistungsfähiger als Standard-Wörterbuchangriffe und hat sich in Tests als fähig erwiesen, Passwörter im Durchschnitt mit deutlich weniger Versuchen zu knacken als andere öffentlich verfügbare Methoden. Der Nachteil ist, dass das Generieren von Versuchen in Wahrscheinlichkeitsreihenfolge langsam ist – es werden durchschnittlich 50-100k Versuche pro Sekunde erstellt, während GPU-basierte Algorithmen Millionen bis Milliarden (und mehr) Versuche pro Sekunde gegen schnelle Hash-Algorithmen erzeugen können. Daher wird der PCFG-Rater am besten gegen große Mengen gesalzener Hashes oder andere langsame Hash-Algorithmen eingesetzt, bei denen die Leistungskosten des Algorithmus durch die Genauigkeit der Versuche ausgeglichen werden.

Anforderungen + Installation

  • Python3 ist die einzige harte Anforderung für diese Werkzeuge
  • Es wird dringend empfohlen, die chardet-Python3-Bibliothek für das Training zu installieren. Obwohl nicht erforderlich, führt sie eine automatische Erkennung der Zeichenkodierung der Trainingspasswörter durch. Um sie zu installieren:
  • Laden Sie den Quellcode von https://pypi.python.org/pypi/chardet herunter
  • Oder installieren Sie es mit pip3 install chardet

Schnellstartanleitung

Training

Der in diesem Repo enthaltene Standard-Regelsatz wurde durch Training mit einem 1-Millionen-Passwort-Teilsatz des RockYou-Datensatzes erstellt. Bessere Leistung kann durch Training mit dem gesamten 32-Millionen-Passwort-Satz von RockYou erzielt werden, aber dieser wurde ausgeschlossen, um die Download-Größe klein zu halten. Sie können den Standard-Regelsatz verwenden, um sofort Passwörter zu generieren, ohne einen neuen Satz trainieren zu müssen, es wird jedoch empfohlen, auf einem Ziel-Passwortsatz zu trainieren, der Ihrem Angriffsziel näher kommt. Wenn Sie Ihren eigenen Regelsatz erstellen, finden Sie hier eine Kurzanleitung:

  1. Identifizieren Sie einen Satz Klartext-Passwörter zum Trainieren.
  • Dieser Passwortsatz sollte doppelte Passwörter enthalten. Auf diese Weise kann das Trainingsprogramm erkennen, dass häufige Passwörter wie 123456 häufig sind.
  • Die Passwörter sollten im Klartext sein, ohne Hashes und zugehörige Informationen wie Benutzernamen. Verwenden Sie keine rohen .pot-Dateien als Trainingssatz, da die Hashes vom Trainingsprogramm als Teil des Passworts betrachtet werden.
  • Die Passwörter sollten in der gleichen Kodierung vorliegen, in der Sie Passwortversuche generieren möchten. Wenn Sie also UTF-8-Passwortversuche erstellen möchten, sollte der Trainingssatz ebenfalls als UTF-8 kodiert sein. Langfristig ist die Möglichkeit, dies bei der Versuchsgenerierung zu ändern, im Entwicklungsplan vorgesehen, aber diese Funktion wird derzeit nicht unterstützt.
  • Die Trainingspasswortliste sollte zwischen 100.000 und 50 Millionen liegen. Es wird noch getestet, wie sich die Größe der Trainingspasswortliste auf die Versuchsgenerierung auswirkt, und es wurden auch mit Passwortlisten von nur 10.000 gute Erfolge erzielt, aber eine ideale Größe liegt wahrscheinlich bei etwa 1 Million, mit abnehmenden Erträgen darüber hinaus.
  • Für die Zwecke dieses Tutorials wird die eingegebene Passwortliste als INPUT_PASSWORD_LIST bezeichnet.
  1. Wählen Sie einen Namen für Ihren generierten Regelsatz. Für die Zwecke dieses Tutorials wird er NEW_RULESET heißen.
  2. Führen Sie das Trainerprogramm auf der eingegebenen Passwortliste aus
  • python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET
  • Häufige optionale Flags: a. coverage: Wie sehr Sie dem Trainingssatz vertrauen, dass er die Zielpasswörter abdeckt. Eine höhere Abdeckung bedeutet, dass weniger intelligente Brute-Force-Generierung mittels Markov-Modellierung (derzeit mit dem OMEN-Algorithmus) verwendet wird. Wenn Sie die coverage auf 1 setzen, wird keine Brute-Force durchgeführt. Wenn Sie sie auf 0 setzen, werden nur Versuche mit Markov-Angriffen generiert. Dieser Wert ist ein Gleitkommawert, der Standardwert ist 0,6, was eine 60%ige Wahrscheinlichkeit erwartet, dass die Basiswörter des Zielpassworts im Trainingssatz gefunden werden. Beispiel: python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET -c 0.6 b. --save_sensitive: Wenn dies angegeben wird, werden sensible Daten wie E-Mail-Adressen und vollständige Websites, die während des Trainings entdeckt werden, im Regelsatz gespeichert. Der PCFG-Ratengenerator verwendet diese Daten derzeit nicht, aber sie sind bei einem echten Passwort-Knackangriff sehr wertvoll. Diese Option ist standardmäßig deaktiviert, um dieses Tool in akademischen Umgebungen einfacher nutzbar zu machen. Beachten Sie, dass selbst wenn diese Option deaktiviert ist, mit ziemlicher Sicherheit immer noch personenbezogene Daten im Regelsatz gespeichert werden, schützen Sie daher generierte Regelsätze entsprechend. Beispiel: python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESET --save_sensitive c. --comments: Fügt einen Kommentar zur Konfigurationsdatei Ihres Regelsatzes hinzu. Dies ist nützlich, um später zu wissen, warum und wie Sie Ihren Regelsatz generiert haben. Geben Sie den gewünschten Kommentar in Anführungszeichen an.

Versuchsgenerierung

Dies generiert Versuche auf stdout unter Verwendung eines zuvor trainierten PCFG-Regelsatzes. Diese Versuche können dann in jedes Programm weitergeleitet werden, das Sie verwenden möchten. Wenn kein Regelsatz angegeben wird, wird der Standard-Regelsatz DEFAULT verwendet. Für die Zwecke dieser Anleitung wird angenommen, dass der verwendete Regelsatz NEW_RULESET ist.

  1. Hinweis: Das Versuchsgenerierungsprogramm unterscheidet bei der Angabe des Regelsatznamens zwischen Groß- und Kleinschreibung.
  • Ein Sitzungsname ist nicht erforderlich (standardmäßig wird eine Sitzung namens default_run erstellt), aber es hilft, das Neustarten einer pausierten/gestoppten Sitzung zu erleichtern. Diese Beispiele verwenden den Sitzungsnamen SESSION_NAME. Beachten Sie, dass es keine integrierte Plausibilitätsprüfung gibt, wenn Sie gleichzeitig mehrere Sitzungen mit demselben Namen ausführen, aber es wird empfohlen, dies zu vermeiden.
  1. So starten Sie eine neue Ratesitzung:
  • python3 pcfg_guesser.py -r NEW_RULESET -s SESSION_NAME
  1. So setzen Sie eine vorherige Ratesitzung fort (Hinweis: Sie müssen beim Wiederherstellen einer Sitzung denselben Regelsatz angeben):
  • python3 pcfg_guesser.py -r NEW_RULESET -s SESSION_NAME --load

Passwortstärke-Bewertung

Es gibt viele Fälle, in denen Sie die Wahrscheinlichkeit schätzen möchten, dass ein Passwort von einem zuvor trainierten Regelsatz generiert wird. Dies könnte beispielsweise Teil einer Passwortstärkemetrik sein oder für andere Forschungszwecke verwendet werden. Ein Beispielprogramm wurde beigefügt, um dies durchzuführen.

  • INPUT_LIST stellt die Liste der zu bewertenden Passwörter dar. Diese Passwörter sollten im Klartext vorliegen, durch Zeilenumbrüche getrennt, mit einem Passwort pro Zeile.
  1. So führen Sie eine Bewertungssitzung durch: python3 password_scorer -r NEW_RULESET -i INPUT_LIST
  2. Standardmäßig werden die Ergebnisse auf stdout ausgegeben, wobei jedes Passwort pro Zeile bewertet wird
  • Der erste Wert ist das rohe Passwort
  • Der zweite Wert gibt an, ob der eingegebene Wert als 'Passwort', 'Website', 'E-Mail-Adresse' oder 'Anderes' bewertet wurde. Diese Bestimmung von Passwort oder Anderes hängt von den Grenzen ab, die Sie sowohl für das OMEN-Versuchszlimit als auch für die mit dem PCFG verbundene Wahrscheinlichkeit festlegen.
  • Der dritte Wert ist die Wahrscheinlichkeit des Passworts gemäß dem Regelsatz. Wenn ihm ein Wert von 0,0 zugewiesen wird, bedeutet dies, dass das Passwort nicht vom Regelsatz generiert wird, obwohl es möglicherweise von einem markovbasierten Angriff generiert wird.
  • Der vierte Wert ist die OMEN-Stufe, die das Passwort generieren wird. Ein Wert von -1 bedeutet, dass das Passwort nicht von OMEN generiert wird.

Prince-Ling-Wortlistengenerator

Name: PRINCE Language Indexed N-Grams (Prince-Ling)

Übersicht: Erstellt maßgeschneiderte Wortlisten basierend auf einem bereits trainierten PCFG-Regelsatz/-Grammatik für die Verwendung in PRINCE-Kombinationsangriffen. Die Idee dahinter war, dass der PCFG-Trainer die Trainingspasswörter bereits in einzelne Parsings zerlegt. Diese Informationen könnten genutzt werden, um gezielte Wortlisten für andere Angriffe zu erstellen.

Grundlegende Mechanik: Im Kern ist das Prince-Ling-Werkzeug im Grunde ein Mini-PCFG-Ratengenerator. Es entfernt die Markov-Versuchsgenerierung und ersetzt die Basisstrukturen, die in normalen PCFG-Angriffen verwendet werden, durch eine deutlich reduzierte Basisstruktur, die auf die Erstellung von PRINCE-Wortlisten zugeschnitten ist. Dies ermöglicht das Generieren von Wörterbuchwörtern in Wahrscheinlichkeitsreihenfolge, wobei berücksichtigt wird, wie nützlich diese Wörter voraussichtlich in einem PRINCE-Angriff sein werden.

Verwendung von Prince-Ling

  1. Trainieren Sie einen PCFG-Regelsatz mit trainer.py. Beachten Sie, dass Sie den Regelsatz mit Version 4.1 oder höher des PCFG-Werkzeugsatzes erstellen müssen, da frühere Versionen nicht alle Datenstrukturen gelernt haben, die Prince-Ling verwendet.
  2. Führen Sie Prince-Ling aus: python3 prince-ling.py -r RULESET_NAME -s SIZE_OF_WORDLIST_TO_CREATE -o OUTPUT_FILENAME
  • --rule: Name des PCFG-Regelsatzes, aus dem die PRINCE-Wortliste erstellt werden soll.
  • --size: Anzahl der Wörter, die für die PRINCE-Wortliste erstellt werden sollen. Wenn nicht angegeben, generiert Prince-Ling alle möglichen Wörter, was je nachdem, ob case_mangling aktiviert ist, sehr umfangreich sein kann. (Case-Mangling erhöht den Schlüsselraum enorm.)
  • --output: Ausgabedateiname, in die die Einträge geschrieben werden. Wenn nicht angegeben, gibt Prince-Ling die Wörter auf stdout aus, was je nach verwendeter Shell Probleme beim Drucken von Nicht-ASCII-Zeichen verursachen kann.
  • --all_lower: Generieren Sie nur Kleinbuchstaben-Wörter für das PRINCE-Wörterbuch. Dies ist nützlich beim Angriff auf case-insensitive Hashes oder wenn Sie gezieltes Case-Mangling auf andere Weise planen.

Beispiel: Passwörter mit John the Ripper knacken

python3 pcfg_guesser -r NEW_RULESET -s SESSION_NAME | ./john --stdin --format=bcrypt PASSWORDS_TO_CRACK.txt

Mitwirken

Wenn Ihnen Fehler auffallen oder Sie eine Funktion wünschen, die hinzugefügt werden soll, eröffnen Sie bitte ein Issue auf dieser GitHub-Seite. Ich akzeptiere auch Pull Requests, aber idealerweise verlinken Sie einen Pull Request auf ein Issue, damit ich ihn leichter überprüfen, Fragen stellen und die von Ihnen vorgenommenen Änderungen besser verstehen kann.

Es gibt viele Verbesserungsmöglichkeiten bei der Modellierung von Passworterstellungsstrategien mit PCFGs. Ich bin sehr offen für neue Ideen, Änderungen und Vorschläge. Nur weil der Code etwas derzeit auf eine bestimmte Weise tut, heißt das nicht, dass dies die beste Option ist. Zum Beispiel wurde die grundlegende Basisstruktur des aktuellen Ansatzes, bei der Masken für Alpha-Strings, Ziffern, Sonstiges usw. generiert werden, gewählt, weil es die "einfachste" zu implementierende Option war. Mein Team hatte viele Diskussionen darüber, dass eine bessere Option darin bestehen könnte, mit einem Basiswort zu beginnen und dann traditionellere Mangelregeln, die darauf angewendet werden, als Übergänge im PCFG zu modellieren. Also fühlen Sie sich frei, mit diesem Code zu experimentieren!

Tool herunterladen