
Erzeugt in Sekunden Millionen von schlüsselwortbasierten Passwortmutationen.
Besonderer Dank an DavidAngelos:
▶️ Eine Fortschrittsanzeige in jedem Schritt hinzugefügt, um die Ausführung zu verfolgen.
▶️ Optionen hinzugefügt:
-i / --inorder): Schlüsselwörter nur in der ursprünglichen Reihenfolge kombinieren (z.B. foo,bar,baz → foo, bar, baz, foobar, foobaz, barbaz, foobarbaz).-c / --combinations): Jede Reihenfolge jeder Teilmenge generieren (z.B. foo,bar,baz → foo, bar, baz, foobar, foobaz, barfoo, …, bazbarfoo).--sep <string>): Beim Kombinieren von Wörtern diese Zeichenfolge zwischen die Token einfügen (Standard: kein Trennzeichen).--max-combine <N>): Begrenzung, wie viele rohe Schlüsselwörter zusammengefügt werden (Standard: 2).--minlen/--maxlen <N>): Die endgültige Wortliste nur nach Wörtern mit der gewünschten Länge filtern.Psudohash ist ein Passwortlisten-Generator für die Durchführung von Brute-Force-Angriffen und das Knacken von Hashes. Es imitiert bestimmte Passworterstellungsmuster, die häufig von Menschen verwendet werden, wie das Ersetzen von Buchstaben durch Symbole oder Zahlen (Leet), die Verwendung von Groß-/Kleinschreibungsvarianten, das Hinzufügen einer gängigen Auffüllung vor oder nach der Hauptpassphrase und mehr. Es ist schlüsselwortbasiert und hochgradig anpassbar. 🎥 -> Video-Präsentation
Systemadministratoren und andere Mitarbeiter verwenden oft eine mutierte Version des Firmennamens, um Passwörter zu setzen (z.B. Am@z0n_2022). Dies ist häufig der Fall bei Netzwerkgeräten (Wi-Fi-Zugangspunkten, Switches, Routern usw.), Anwendungen oder sogar Domänenkonten. Mit den grundlegendsten Optionen kann psudohash eine Wortliste mit allen möglichen Mutationen eines oder mehrerer Schlüsselwörter erstellen, basierend auf gängigen Zeichenersetzungsmustern (anpassbar), Groß-/Kleinschreibungsvarianten, häufig als Auffüllung verwendeten Zeichenfolgen und mehr. Werfen Sie einen Blick auf das folgende Beispiel:

Das Skript implementiert das folgende Zeichenersetzungsschema. Sie können Zeichenersetzungszuordnungen hinzufügen/ändern, indem Sie die transformations-Liste in psudohash.py bearbeiten und der unten dargestellten Datenstruktur folgen (Standard):
transformations = [
{'a' : ['@', '4']},
{'b' : '8'},
{'e' : '3'},
{'g' : ['9', '6']},
{'i' : ['1', '!']},
{'o' : '0'},
{'s' : ['$', '5']},
{'t' : '7'}
]
Beim Festlegen von Passwörtern ist es meiner Meinung nach ziemlich üblich, eine Zeichenfolge vor und/oder nach der Hauptpassphrase hinzuzufügen, um sie "stärker" zu machen. Zum Beispiel könnte jemand ein Passwort "dragon" setzen und einen Wert wie "!!!" oder "!@#" am Ende hinzufügen, was zu "dragon!!!", "dragon!@#" usw. führt. Psudohash liest solche Werte aus common_padding_values.txt und verwendet sie, um die bereitgestellten Schlüsselwörter zu mutieren, indem sie vor (-cpb) oder nach (-cpa) jeder generierten Schlüsselwortvariation angehängt werden. Sie können die Datei nach Belieben ändern.
Beim Anhängen eines Jahreswerts an ein mutiertes Schlüsselwort verwendet psudohash verschiedene Trennzeichen. Standardmäßig werden die folgenden Trennzeichen verwendet, die Sie durch Bearbeiten der year_seperators-Liste ändern können:
year_seperators = ['', '_', '-', '@']
Wenn das angegebene Schlüsselwort beispielsweise "amazon" ist und die Option -y 2023 verwendet wurde, enthält die Ausgabe "amazon2023", "amazon_2023", "amazon-2023", "amazon@2023", "amazon23", "amazon_23", "amazon-23", "amazon@23".
Installieren Sie zuerst Python 3.x und tqdm:
pip3 install tqdm
Klonen Sie dann das Repository und machen Sie das Skript ausführbar:
git clone https://github.com/t3l3machus/psudohash.git
cd ./psudohash
chmod +x psudohash.py
./psudohash.py [-h] -w WORDS [-i] [-c] [--sep SEP] [--max-combine N] [-an LEVEL] [-nl LIMIT] [-y YEARS] [-ap VALUES] [-cpb] [-cpa] [-cpo] [-o FILENAME] [-q]
Der Hilfedialog [ -h, --help ] enthält Nutzungsdetails und Beispiele.
-w, --words <kw1,kw2,…>
Kommagetrennte rohe Schlüsselwörter (erforderlich).
-i, --inorder
Kombiniert bis zu --max-combine Schlüsselwörter in der gegebenen Reihenfolge (z.B. foo,bar,baz → foo, bar, baz, foobar, foobaz, barbaz, foobarbaz).
-c, --combinations
Generiert jede Permutation jeder Teilmenge (bis zu --max-combine) (z.B. foo,bar,baz → foo, bar, baz, foobar, foobaz, barfoo, …).
--max-combine <N> (Standard: 2)
Maximale Anzahl roher Schlüsselwörter, die zu einem Basisstring kombiniert werden.
--sep <string>
Beim Kombinieren von Wörtern ( oder ) wird diese Zeichenfolge zwischen die Token eingefügt. Standardmäßig eine leere Zeichenfolge.
Keine Mehrwort-Kombinationen (nur Einzelwörter)
./psudohash.py -w foo,bar,baz -cpa
# → foo, bar, baz
In-order-Kombinationen (-i, standardmäßig bis zu 2 Wörter)
./psudohash.py -w foo,bar,baz -i
# → foo, bar, baz, foobar, foobaz, barbaz
Alle Reihenfolge-Kombinationen (-c, standardmäßig bis zu 2 Wörter)
./psudohash.py -w foo,bar,baz -c
# → foo, bar, baz, foobar, foobaz, barfoo, barbaz, bazfoo, bazbar
Trennzeichen zwischen kombinierten Wörtern ändern
./psudohash.py -w foo,bar,baz -i --sep "_"
# → foo, bar, baz, foo_bar, foo_baz, bar_baz
Längenfilterung (--minlen/--maxlen)
./psudohash.py -w apple,banana -i --minlen 10
# Warnung: Die genaue Größe kann aufgrund von Längenfiltern nicht bestimmt werden.
# Beispielhafte endgültige Ausgaben könnten "applebanana" (11 Zeichen), "bananaapple" (11 Zeichen) sein.
--years und --append-numbering mit einem --numbering-limit ≥ den letzten beiden Ziffern einer beliebigen Jahreseingabe führt höchstwahrscheinlich zu doppelten Wörtern aufgrund der vom Tool implementierten Mutationsmuster.--minlen oder --maxlen kann das Skript die genaue Wortanzahl nicht vorab berechnen; Sie sehen eine Warnung „exact size cannot be determined“ und die Größe ohne diesen Filter wird berechnet, die endgültige Größe wird kleiner sein.Was Menschen betrifft, denke ich, wir haben alle (mehr oder weniger) Passwörter gesetzt, die eine Mutation von einem oder mehreren Wörtern verwenden, die uns etwas bedeuten, z.B. unseren Namen oder den Namen von Ehefrau/Kind/Haustier/Band, mit dem Jahr unserer Geburt am Ende oder vielleicht einer supersicheren Auffüllung wie "!@#". Nun, raten Sie mal?

Ich sammle Informationen über häufig verwendete Passworterstellungsmuster, um die Fähigkeiten des Tools zu verbessern.
-i-c--minlen <N>
Verwirft jedes endgültige Passwort, das kürzer als N Zeichen ist.
--maxlen <N>
Verwirft jedes endgültige Passwort, das länger als N Zeichen ist.
-an, --append-numbering <LEVEL>
Fügt jeder Wortmutation nummerierte Suffixe (mit Nullen auf <LEVEL> Stellen aufgefüllt) an.
-nl, --numbering-limit <LIMIT>
Maximale Zahl, bis zu der beim Anhängen von Nummern gezählt wird (Standard: 50).
-y, --years <years>
Hängt ein oder mehrere Jahre an jede Mutation an (z.B. 1990-2000 oder 2022,2023).
-ap, --append-padding <vals>
Benutzerdefinierte Auffüllwerte anhängen (kommagetrennt). Muss mit -cpb oder -cpa verwendet werden.
-cpb, --common-paddings-before
Fügt Werte aus common_padding_values.txt vor jeder Mutation ein.
-cpa, --common-paddings-after
Fügt Werte aus common_padding_values.txt nach jeder Mutation an.
-cpo, --custom-paddings-only
Verwendet nur vom Benutzer bereitgestellte Auffüllungen (keine Standardwerte). Muss mit -ap verwendet werden.
-o, --output <file>
Schreibt die Ergebnisse in <file> (Standard: output.txt).
-q, --quiet
Unterdrückt das ASCII-Art-Banner beim Start.
Bis zu 3 Wörter kombinieren (statt der Standardeinstellung 2)