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)