
Probabilistische Kontextfreie Grammatik (PCFG) Passwort-Rate-Generator
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.
Trainer: 4.4
Guesser: 4.6
PRINCE_LING: 4.3
Password_Scorer: 4.4
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.
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.
pip3 install chardetDer 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:
python3 trainer.py -t INPUT_PASSWORD_LIST -r NEW_RULESETpython3 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.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.