A flexible and scriptable password generator which generates strong passphrases, inspired by XKCD 936:
$ xkcdpass
> correct horse battery staple
xkcdpass
can be easily installed using pip:
pip install xkcdpass
or manually:
python setup.py install
The latest development version can be found on github: https://github.com/redacted/XKCD-password-generator
Contributions welcome and gratefully appreciated!
Python 2.4+ (Python 3.x compatible)
xkcdpass
can be called with no arguments:
$ xkcdpass
> pinball previous deprive militancy bereaved numeric
which returns a single password, using the default dictionary and default settings. Or you can mix whatever arguments you want:
$ xkcdpass --count=5 --acrostic='chaos' --delimiter='|' --min=5 --max=6 --valid_chars='[a-z]'
> collar|highly|asset|ovoid|sultan
> caper|hangup|addle|oboist|scroll
> couple|honcho|abbot|obtain|simple
> cutler|hotly|aortae|outset|stool
> cradle|helot|axial|ordure|shale
which returns
--count=5
5 passwords to choose from--acrostic='chaos'
the first letters of which spell 'chaos'--delimiter='|'
joined using '|'--min=5 --max=6
with words between 5 and 6 characters long--valid_chars='[a-z]'
using only lower-case letters (via regex).
A concise overview of the available xkcdpass
options can be accessed via:
xkcdpass --help
Usage: xkcdpass [options]
Options:
-h, --help
show this help message and exit
-w WORDFILE, --wordfile=WORDFILE
List of valid words for password
--min=MIN_LENGTH
Minimum length of words to make password
--max=MAX_LENGTH
Maximum length of words to make password
-n NUMWORDS, --numwords=NUMWORDS
Number of words to make password
-i, --interactive
Interactively select a password
-v VALID_CHARS, --valid_chars=VALID_CHARS
Valid chars, using regexp style (e.g. '[a-z]')
-V, --verbose
Report various metrics for given options
-a ACROSTIC, --acrostic=ACROSTIC
Acrostic to constrain word choices
-c COUNT, --count=COUNT
number of passwords to generate
-d DELIM, --delimiter=DELIM
separator character between words
A large wordlist is provided (courtesy of 12Dicts) for convenience, but the generator can be used with any word file of the correct format: a file containing one 'word' per line. The default word file can be found in xkcdpass/static/default.txt
.
The main script can also be imported into other python code, and an example of this usage is provided in the package (xkcdpass/example_import.py
).
The BSD License (BSD)