Posts tagged ‘xkcdpass’

Sichere (deutsche) Passwörter mit Python und xkcdpass

Menschen sind schlecht darin, sich gute lange Passwörter zu merken. Computer sind dafür prädestiniert, schlechte (weil kurze) Passwörter zu knacken. Randall Munroe hat das in einem recht bekannten XKCD Comic dargestellt.

Mit xkcdpass (Link) gibt es ein Python-Modul zur Erstellung von Passwörtern nach dem „xkcd-Schema“, das sich mittels pip install xkcdpass einfach installieren lässt.

Startet man xkcdpass ohne weitere Parameter, so spuckt es einfach eine Reihe englischer Wörter aus:

C:\Users\Uwe>xkcdpass
tackle tonsorial satisfied gecko fission decor

Um xkcdpass die Ausgabe deutscher Passwörter beizubringen, geht man wie folgt vor.

1) Mittels --help Parameter kommt man an die Liste aller Optionen, hier ist besonders -w für die Angabe der Wortdatei spannend.

C:\Users\Uwe>xkcdpass --help
usage: xkcdpass [-h] [-w WORDFILE] [--min MIN_LENGTH] [--max MAX_LENGTH]
                [-n NUM_WORDS] [-i] [-v VALID_CHARS] [-V] [-a ACROSTIC]
                [-c COUNT] [-d DELIM] [--allow-weak-rng]

optional arguments:
  -h, --help            show this help message and exit
  -w WORDFILE, --wordfile WORDFILE
                        Specify that the file WORDFILE contains the list of
                        valid words from which to generate passphrases.
  --min MIN_LENGTH      Generate passphrases containing at least MIN_LENGTH
                        words.
  --max MAX_LENGTH      Generate passphrases containing at most MAX_LENGTH
                        words.
  -n NUM_WORDS, --numwords NUM_WORDS
                        Generate passphrases containing exactly NUM_WORDS
                        words.
  -i, --interactive     Generate and output a passphrase, query the user to
                        accept it, and loop until one is accepted.
  -v VALID_CHARS, --valid-chars VALID_CHARS
                        Limit passphrases to only include words matching the
                        regex pattern VALID_CHARS (e.g. '[a-z]').
  -V, --verbose         Report various metrics for given options.
  -a ACROSTIC, --acrostic ACROSTIC
                        Generate passphrases with an acrostic matching
                        ACROSTIC.
  -c COUNT, --count COUNT
                        Generate COUNT passphrases.
  -d DELIM, --delimiter DELIM
                        Separate words within a passphrase with DELIM.
  --allow-weak-rng      Allow fallback to weak RNG if the system does not
                        support cryptographically secure RNG. Only use this if
                        you know what you are doing.

2) Man besorgt sich eine Datei mit dem deutschen Wortschatz, per Google bin ich auf die folgende Seite der Uni Leipzig gestoßen: http://wortschatz.uni-leipzig.de/html/wliste.html. Hier gibt es Listen für die häufigsten 100, 1000 und 10’000 Wörter der deutschen Sprache (sowie auch für französisch, englisch und niederländisch). Die Liste mit den 10’000 häufigsten Wörtern speichern wir ab.

Ein Hinweis noch zur sprachlichen Einschätzung der 10000 Wörter: Der Duden geht davon aus, dass ein durchschnittlicher Deutsch-Sprecher zwischen 12’000 und 16’000 Wörter spricht, aber rund 50’000 deutsche Worte versteht.

3) Mit der Wortschatzdatei auf der Festplatte können wir jetzt einfach wieder xkcdpass aufrufen und nutzen gleich noch -c 10 für die Erzeugung von 10 Zeilen mit jeweils sechs Passwörtern:

C:\Users\Uwe>xkcdpass -c 10 -w e:\top10000de.txt
Munition Alexander Bernhard Wissen Erstmals geraumer
wissen genießt wenigen Verlierer wunderbar Teufel
Wiesen Hartmut länger römische älter Stimme
irgendwie Monitor operative läuft Vertrieb Optionen
Stahl Brust Polizei Hoffnung Verlauf runden
Ärzte Mafia Dieter Pakistan Systems Areal
trieb hinweg Kanzlers unterlag zweimal zuviel
vollzogen Sparen zwölf verlieren Dutzende Länge
Infotyp beliebten gewisser Malerei gefunden Blätter
Peking äußerten fährt Einblick Interesse schwach

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website