
ein schnelles Tool zur Passwort-Wortlistengenerierung, Smartlist-Erstellung und Passwort-Hybrid-Mask-Analyse, geschrieben in reinem, sicherem Rust
Cracken ist ein schneller Passwort-Wortlistengenerator, ein Werkzeug zur Erstellung von Smartlists und zur Analyse von Passwort-Hybrid-Masken, geschrieben in reinem, sicherem Rust (mehr dazu unter talk/). Inspiriert von großartigen Werkzeugen wie maskprocessor, hashcat, Crunch und 🤗 HuggingFaces tokenizers.
Auf der DeepSec2021 haben wir eine neue Methode zur Analyse von Passwörtern als Hybrid-Masken vorgestellt, die häufige Teilstrings in Passwörtern mithilfe von NLP-Tokenizern ausnutzt (mehr Infos unter talk/).
Unsere Methode zerlegt ein Passwort in seine Teilwörter anstelle einer reinen Zeichenmaske. HelloWorld123! wird zerlegt in ['Hello', 'World', '123!'], da diese drei Teilwörter auch in anderen Passwörtern sehr häufig vorkommen.
?w1?w2?l?d)
vollständige Tabelle hier
Hybrid-Masken – sehr SEHR SCHNELL 🦸⚡💨 (siehe Abschnitt Leistung)Smartlists – kompakte & repräsentative Liste von Teilwörtern aus gegebenen Passwortdateien (mit 🤗 HuggingFaces tokenizers)Hybrid-Masken – Erstellung von Statistiken für bessere Passwortkandidaten (wieder sehr schnell)cracken -w rockyou.txt -w 100-most-common.txt '?w1?w2?d?d?d?d?s'hashcat, john oder Ihren bevorzugten Passwortknacker weitergeleitet werdencracken createcracken entropyHybrid-Masken, um schnell Passwortkandidaten zu generieren – cracken generate -i hybrid-masks.txtWeitere Details finden Sie im Abschnitt Verwendung
Download (derzeit nur Linux): aktuelles Release 🔗
Weitere Installationsmöglichkeiten finden Sie im Abschnitt Installation
Cracken ausführen:
Generieren aller Wörter der Länge 8, die mit einem Großbuchstaben beginnen, gefolgt von 6 Kleinbuchstaben und dann einer Ziffer:
$ cracken -o pwdz.lst '?u?l?l?l?l?l?l?d'
Generieren von Wörtern aus zwei Wortlisten mit Jahres-Endung (1000–2999) <vorname><nachname><jahr>
$ cracken --wordlist firstnames.txt --wordlist lastnames.lst --charset '12' '?w1?w2?1?d?d?d'
Erstellen einer Smartlist der Größe 50k aus Teilwörtern, die aus rockyou.txt extrahiert wurden
$ cracken create -f rockyou.txt -m 50000 --smartlist smart.lst
Schätzung der Entropie der Hybrid-Maske des Passworts HelloWorld123! unter Verwendung einer Smartlist
$ cracken entropy -f smart.lst 'HelloWorld123!'
hybrid-min-split: ["hello", "world1", "2", "3", "!"]
hybrid-mask: ?w1?w1?d?d?s
hybrid-min-entropy: 42.73
--
charset-mask: ?l?l?l?l?l?l?l?l?l?l?d?d?d?s
charset-mask-entropy: 61.97
Zum Zeitpunkt der Erstellung dieses Artikels ist Cracken wahrscheinlich der schnellste Wortlistengenerator der Welt:
Cracken bietet eine rund 25% höhere Leistung als hashcats schneller maskprocessor, der in C geschrieben ist.
Cracken kann etwa 2 GB/s pro Kern generieren.
Weitere Details unter benchmarks/ 🔗
Warum Geschwindigkeit wichtig ist? Eine typische GPU kann Milliarden von Passwörtern pro Sekunde testen, abhängig von der Passwort-Hash-Funktion. Wenn der Wortlistengenerator weniger Wörter pro Sekunde produziert, als das Knackwerkzeug verarbeiten kann, sinkt die Knackgeschwindigkeit.
Cracken verwendet den A*-Algorithmus, um Passwörter sehr schnell zu analysieren. Es kann die minimale Hybrid-Maske einer Passwortdatei mit einer Rate von etwa ~100k Passwörtern/Sekunde finden (cracken entropy -f wörter1.txt -f wörter2.txt ... -p pwds.txt)
Installieren Sie Cracken oder kompilieren Sie es aus dem Quellcode
Laden Sie das neueste Release von releases 🔗 herunter
Cracken ist in Rust geschrieben und benötigt rustc zur Kompilierung. Cracken sollte alle Plattformen unterstützen, die Rust unterstützt.
Anweisungen zur Installation von cargo 🔗
Es gibt zwei Möglichkeiten, aus dem Quellcode zu erstellen – Installation mit cargo von crates.io (bevorzugt) oder manuelle Kompilierung aus dem Quellcode.
Mit cargo installieren:
$ cargo install cracken
Cracken klonen:
$ git clone https://github.com/shmuelamar/cracken
Cracken erstellen:
$ cd cracken
$ cargo build --release
Ausführen:
$ ./target/release/cracken --help
$ cracken --help
Cracken v1.0.0 - ein schneller Passwort-Wortlistengenerator
VERWENDUNG:
cracken [SUBCOMMAND]
FLAGS:
-h, --help Druckt Hilfeinformationen
-V, --version Druckt Versionsinformationen
SUBCOMMANDS:
generate (Standard) - Generiert durch Zeilenumbrüche getrennte Wörter gemäß übergebener Maske und Wortlistendateien
create Erstellt eine neue Smartlist aus Eingabedatei(en)
entropy
Berechnet die geschätzte Entropie eines Passworts oder einer Passwortdatei.
Die Entropie eines Passworts ist der log2(len(keyspace)) des Passworts.
Es gibt zwei Arten von Schlüsselraumgrößenschätzungen:
* mask - Schlüsselraum jedes Zeichens (Ziffer=10, Kleinbuchstabe=26...).
* hybrid - Finden der minimalen Aufteilung in Teilwörter und Zeichensätze.
Für spezifische Subcommand-Hilfe ausführen: cracken <subcommand> --help
Beispielverwendung:
## Generate Subcommand Beispiele:
# alle Ziffern von 00000000 bis 99999999
cracken ?d?d?d?d?d?d?d?d
# alle Ziffern von 0 bis 99999999
cracken -m 1 ?d?d?d?d?d?d?d?d
# Wörter mit pwd-Präfix - pwd0000 bis pwd9999
cracken pwd?d?d?d?d
# alle Passwörter der Länge 8, beginnend mit Großbuchstabe, dann 6 Kleinbuchstaben, dann Ziffer
cracken ?u?l?l?l?l?l?l?d
# wie oben, Ausgabe in pwds.txt statt stdout
cracken -o pwds.txt ?u?l?l?l?l?l?l?d
# benutzerdefinierter Zeichensatz - alle Hexwerte
cracken -c 0123456789abcdef '?1?1?1?1'
# 4 benutzerdefinierte Zeichensätze - die Reihenfolge bestimmt die ID des Zeichensatzes
cracken -c 01 -c ab -c de -c ef '?1?2?3?4'
# 4 Kleinbuchstaben mit Jahren 2000–2019 am Ende
cracken -c 01 '?l?l?l?l20?1?d'
# beginnt mit Vorname aus Wortliste, gefolgt von 4 Ziffern
cracken -w firstnames.txt '?w1?d?d?d?d'
# beginnt mit Vorname aus Wortliste, mit Nachname aus Wortliste, endet mit Symbol
cracken -w firstnames.txt -w lastnames.txt -c '!@#$' '?w1?w2?1'
# Wortlisten mehrfach wiederholen und Zeichensätze kombinieren
cracken -w verbs.txt -w nouns.txt '?w1?w2?w1?w2?w2?d?d?d'
## Create Smartlists Subcommand Beispiele:
# Smartlist aus einer einzelnen Datei in smart.txt erstellen
cracken create -f rockyou.txt --smartlist smart.txt
# Smartlist aus mehreren Dateien mit mehreren Tokenisierungsalgorithmen erstellen
cracken create -t bpe -t unigram -t wordpiece -f rockyou.txt -f passwords.txt -f wikipedia.txt --smartlist smart.txt
# Smartlist mit minimaler Teilwortlänge von 3 und maximaler Größe für reine Zahlen-Teilwörter von 6 erstellen
cracken create -f rockyou.txt --min-word-len 3 --numbers-max-size 6 --smartlist smart.txt
## Entropy Subcommand Beispiele:
# Entropie eines Passworts schätzen
cracken entropy --smartlist vocab.txt 'helloworld123!'
# Entropie einer Passwortdatei mit Zeichensatz-Masken-Entropie schätzen (Standard ist hybrid)
cracken entropy --smartlist vocab.txt -t charset -p passwords.txt
# Entropie einer Passwortdatei schätzen
cracken entropy --smartlist vocab.txt -p passwords.txt
cracken-v1.0.0 linux-x86_64 compiler: rustc 1.56.1 (59eed8a2a 2021-11-01)
mehr Info unter: https://github.com/shmuelamar/cracken
$ cracken generate --help
cracken-generate
(Standard) - Generiert durch Zeilenumbrüche getrennte Wörter gemäß übergebener Maske und Wortlistendateien
VERWENDUNG:
cracken generate [FLAGS] [OPTIONS] <mask> --masks-file <masks-file>
FLAGS:
-h, --help
Druckt Hilfeinformationen
-s, --stats
Druckt die Anzahl der Wörter, die dieser Befehl generieren wird, und beendet sich
-V, --version
Druckt Versionsinformationen
OPTIONS:
-c, --custom-charset <custom-charset>...
benutzerdefinierter Zeichensatz (Zeichenkette). Bis zu 9 benutzerdefinierte Zeichensätze - ?1 bis ?9. Verwenden Sie ?1 in der Maske für den ersten Zeichensatz
-i, --masks-file <masks-file>
eine Datei, die zu generierende Masken enthält
-x, --maxlen <max-length>
maximale Länge der Maske, von der aus gestartet werden soll
-m, --minlen <min-length>
minimale Länge der Maske, von der aus gestartet werden soll
-o, --output-file <output-file>
Ausgabedatei zum Schreiben der Wortliste, standardmäßig stdout
-w, --wordlist <wordlist>...
Dateiname, der durch Zeilenumbrüche (0xA) getrennte Wörter enthält. Hinweis: Derzeit werden alle Wortlisten in den Speicher geladen
ARGS:
<mask>
die zu generierende Wortlistenmaske.
Verfügbare Masken sind:
eingebaute Zeichensätze:
?d - Ziffern: "0123456789"
?l - Kleinbuchstaben: "abcdefghijklmnopqrstuvwxyz"
?u - Großbuchstaben: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
?s - Symbole: " !\"\#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
?a - alle Zeichen: ?d + ?l + ?u + ?s
?b - alle Binärwerte: (0-255)
benutzerdefinierte Zeichensätze ?1 bis ?9:
?1 - erster benutzerdefinierter Zeichensatz, angegeben durch --charset 'meinzeichensatz'
Wortlisten ?w1 bis ?w9:
?w1 - erste Wortliste, angegeben durch --wordlist 'meine-wortliste.txt'
$ cracken create --help
cracken-create
Erstellt eine neue Smartlist aus Eingabedatei(en)
VERWENDUNG:
cracken create [FLAGS] [OPTIONS] --file <file>... --smartlist <smartlist>
FLAGS:
-h, --help Druckt Hilfeinformationen
-q, --quiet Deaktiviert die Anzeige des Fortschrittsbalkens
-V, --version Druckt Versionsinformationen
OPTIONS:
-f, --file <file>... Eingabedateiname, kann für mehrere Dateien mehrfach angegeben werden
--min-frequency <min_frequency> Minimale Häufigkeit eines Wortes, nur relevant für BPE-Tokenizer
-l, --min-word-len <min_word_len> Filtert Wörter, die kürzer als die angegebene Länge sind
--numbers-max-size <numbers_max_size> Filtert Zahlen (nur Ziffern), die länger als die angegebene Größe sind
-o, --smartlist <smartlist> Ausgabe-Smartlist-Dateiname
-t, --tokenizer <tokenizer>... Zu verwendender Tokenizer, kann mehrfach angegeben werden.
Einer von: bpe, unigram, wordpiece [Standard: bpe] [mögliche Werte: bpe, unigram, wordpiece]
-m, --vocab-max-size <vocab_max_size> Maximale Vokabulargröße
$ cracken entropy --help
cracken-entropy
Berechnet die geschätzte Entropie eines Passworts oder einer Passwortdatei.
Die Entropie eines Passworts ist der log2(len(keyspace)) des Passworts.
Es gibt zwei Arten von Schlüsselraumgrößenschätzungen:
* mask - Schlüsselraum jedes Zeichens (Ziffer=10, Kleinbuchstabe=26...).
* hybrid - Finden der minimalen Aufteilung in Teilwörter und Zeichensätze.
VERWENDUNG:
cracken entropy [FLAGS] [OPTIONS] <password> --smartlist <smartlist>...
FLAGS:
-h, --help Druckt Hilfeinformationen
-s, --summary Ausgabe einer Zusammenfassung der Entropie für das Passwort
-V, --version Druckt Versionsinformationen
OPTIONS:
-t, --mask-type <mask_type> Art der auszugebenden Maske, einer von: charsets(nur Zeichensätze), hybrid(Zeichensätze+Wortlisten) [mögliche Werte: hybrid, charset]
-p, --passwords-file <passwords-file> Durch Zeilenumbrüche getrennte Passwortdatei, für die die Entropie geschätzt werden soll
-f, --smartlist <smartlist>... Smartlist-Eingabedatei zur Schätzung der Entropie, eine durch Zeilenumbrüche getrennte Textdatei
ARGS:
<password> zu analysierendes Passwort
Cracken ist unter MIT lizenziert. DIESES PROJEKT DARF AUSSCHLIESSLICH FÜR LEGALE ZWECKE VERWENDET WERDEN ⚖️
Cracken befindet sich in aktiver Entwicklung. Wenn Sie helfen möchten, finden Sie unten die teilweise Roadmap für dieses Projekt. Zögern Sie nicht, Pull-Requests einzureichen und Issues zu eröffnen.