PyProPass Pronounceable Password Generator
PyProPass is a simple python script that tries to generate pronounceable passwords. Its name is convenient shortening of python pronounceable password, which, ironically, is a bit of a mouthful.
It uses statistical analysis of natural language (AKA a Markov model) to generate statistically probable sequences of letters for the language in which it is trained, but which are hopefully not actually real words. The result should be a word which is pronounceable (and therefore memorable), but unlikely to be present in any brute force word lists.
You can use it as a command line program (pypropass.py) or via a simple GUI (pypropass_qt4.py) (requires PyQT4). There are various mangling options which affect the readability (and entropy) of the resulting words. The easiest way is to generate a block of passwords and just choose the one that most appeals. This is done something like the following (15 is the approximate length of the password, -n 5 is the number to generate):
$ python pypropass.py 15 --dont-mangle -n 5
This is the least secure and most readable option. With full mangling, the results have a vague resemblance to pronounceable strings but have to be read a few times before you can figure out what (try reading + as T, # as H, ! as l or i, @ as a, etc, it also splits syllables with dots and commas and so on):
$ python pypropass.py 15 -n 5
There are intermediate mangling options. Use --help for a full list.
- You can make the model retrain at any time by passing the -l parameter with a path to a text file. Alternatively use the -r parameter to train using random Wikipedia articles (slow).
- This is obviously not a hugely secure way to create passwords as a somewhat deterministic model is used to generate them. It's better than picking a random word and adding a number to it, but it's not as good as a truly random string (which you won't be able to remember). If you are worried about governments or Bond villains cracking your passwords, don't use this.