/pwgen-passphrase

Secure wordlist-based passphrase generator

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

pwgen-passphrase

Secure wordlist-based passphrase generator

Description

Use pwgen-passphrase to generate secure (yet easy to remember) random passphrase from wordlist. See legendary xkcd: Password Strength comic strip for more details ;-)

Included wordlists are:

Requirements

  • Python 3
  • Optional: PyQt (for copying generated passphrase to clipboard)
  • Optional: regex (for better regex filtering, e.g. ^[\p{Ll}]+ for Unicode lower-case letters only)

Usage

Run pwgen-passphrase --help to see all available options.

Example:

[randall@xkcd.com ~] pwgen-passphrase -w cracklib-small -l 4 -t
correct horse battery staple

Statistics:
===========
Number of words in passphrase: 4
Wordlist length: 52875 words
Passphrase strength (entropy): 62.8 bits

Passphrase length: 28 chars
Length of equivalent case sensitive alphanumeric password: 11 chars
Length of equivalent all ASCII printable characters password: 10 chars

Help

usage: pwgen-passphrase [-h] [-t] [-c] [-s SEPARATOR] [-n COUNT]
                        [-w {aspell-cs,aspell-en,bip0039,cracklib-small,diceware,eff-long,eff-short,eff-short2,skey} | -f WORDLIST_FILE]
                        [-l LENGTH | -b BITS] [-L | -U | -C] [--min MIN]
                        [--max MAX] [-r] [-e REGEX] [--version]

generate secure random passphrase from wordlist

optional arguments:
  -h, --help            show this help message and exit
  -t, --stats           show statistics about generated passphrase
  -c, --clipboard       copy generated passphrase to clipboard (needs PyQt)
  -s SEPARATOR, --separator SEPARATOR
                        words separator (default is space)
  -n COUNT, --count COUNT
                        generate multiple passphrases (default is 1)
  -w {aspell-cs,aspell-en,bip0039,cracklib-small,diceware,eff-long,eff-short,eff-short2,skey}, --wordlist {aspell-cs,aspell-en,bip0039,cracklib-small,diceware,eff-long,eff-short,eff-short2,skey}
                        select wordlist (default is eff-long)
  -f WORDLIST_FILE, --wordlist-file WORDLIST_FILE
                        path to external wordlist file
  -l LENGTH, --length LENGTH
                        length of generated passphrase (number of words,
                        default is 6)
  -b BITS, --bits BITS  minimal passphrase strength (bits of entropy)
  -L, --lower           make words lowercase
  -U, --upper           make words uppercase
  -C, --capitalize      make words capitalized
  --min MIN             limit minimum length of word (default is unlimited)
  --max MAX             limit maximum length of word (default is unlimited)
  -r, --transliterate   transliterate Unicode characters to ASCII and remove
                        duplicates
  -e REGEX, --regex REGEX
                        remove words that do not match regular expression
  --version             show program's version number and exit