How to Use the Console App - ligos/readablepassphrasegenerator GitHub Wiki
The console app exposes most functionality of the generator. This page outlines some basic usage.
As of June 2022, there are three console apps for different versions of .NET:
- .NET Framework 4.5.2+ (named
PassphraseGenerator Console <version> Framework 4.5.2.zip
) -
.NET Core 3.1 (named
PassphraseGenerator Console <version> NetCore 3.1.zip
). -
.NET 6.0 (named
PassphraseGenerator Console <version> Net 6.0.zip
).
There is no functional difference between them. Which one you choose depends on the version of .NET you have available, and if you are on Windows or another platform.
If you're using Mono or Windows, choose option 1.
If you're using .NET Core 3.1 or .NET 6.0 (which run on Linux, Windows and MacOS), you should use options 2 or 3.
And if you're using KeePass, download the plgx
file!
Note that I intend to maintain versions for the 2 most recent LTS versions of .NET. Older versions will remain available for download if you want to target older versions of .NET Core.
First off, lets just run it and look at the output:
AXIOS\C:\Users\Murray> .\PassphraseGenerator.exe
Readable Passphrase Generator 0.13
Generating 10 phrase(s) of strength 'Random'...
Must be between 1 and 999 characters.
Dictionary contains 13,160 words (loaded in 406.98ms)
Average combinations ~2.514E+023 (~77.73 bits)
Total combinations 3.065E+010 - 5.962E+037 (34.84 - 125.49 bits)
Using no mutators
the hailstorm mitigates a witty vote
the canvas proclaimed the wombat will solder the emulator
her imperial shipmate deduced a splicer
the haul telephones the node
a sling was outgrowing until the hothead
his guard-dog wondered a vitamin was feeding my enchanted kiloton
the kettle uttered a soup unifies an enchanter
Addison mumbled a lube whets a spot
tortoises are elapsing as far as that LED
a sage has eluded the cocoa iguana but not the tasty helmets
Generated 10 phrase(s) in 144.59ms.
Result: 10 phrases you can choose between, and a whole lot of other stats.
The two notable items is the dictionary size (~13,100 in this case), and the number of combinations (several billion billion). This is based on the template behind the phrase strength 'Random' (see What Passphrase Should I Use for the details), the generator counts up all the different combinations possible.
(Versions of the generator earlier than 0.10.0 used the 'Normal' phrase strength. 'Random' selects between all the different phrase strengths, so you can choose yourself based on phrase length).
Because the generator knows the pools of words its working from and different ways that can be put together, it can count how many total combinations there are. This gives a more accurate estimate of phrase strength than many other measures of password strength. It's presented as a weighted average and a min / max range (previous versions used to only show the maximum number). See Combination Counting for details about these three numbers.
Now lets ask for help:
AXIOS\C:\Users\Murray> .\PassphraseGenerator.exe --help
Usage: PassphraseGenerator.exe [options]
-c --count nnn Generates nnn phrases (default: 10)
-s --strength xxx Selects phrase strength (default: Random)
xxx = [normal|strong|insane)[equal|required][and|speech]
or 'custom' or 'random[short|long|forever]'
--min xxx Specifies a minimum length for phrases (def: 1)
--max xxx Specifies a maximum length for phrases (def: 999)
--spaces true|false Includes spaces between words (default: True)
-n --nongrammar nn Creates non-grammatical passphrases of length nn
-m --stdMutators Adds 2 numbers and 2 capitals to the passphrase
--mutUpper xxx Uppercase mutator style (default: Never)
xxx = [startofword|anywhere]
--mutUpperCount nn Number of capitals to add (default: 2
--mutNumeric xxx Numeric mutator style (default: Never)
xxx = [startofword|endofword|startorendofword|anywhere]
--mutNumericCount nn Number of numbers to add (default: 2
-l --loaderdll path Specifies a custom loader dll
-t --loadertype path Specifies a custom loader type
-a --loaderargs str Specifies arguments for custom loader
-d --dict str Specifies a custom dictionary file
-p --phrase path Specifies a custom phrase file
Must use -strength custom
-q --quiet Does not display any status messages (default: show)
-h --help Displays this message
See https://github.com/ligos/readablepassphrasegenerator for more information
I'll illustrate most of these in a moment, but a few things I won't go into detail about:
-
--dict
- can accept a custom dictionary as an uncompressed xml file or as a gzipped (not zipped) xml file. -
--phrase
- Loads a file defining your own custom phrase. -
--space
- Turns a tweet will can a blip into atweetwillcanablip -
--loaderdll
,--loadertype
and--loaderargs
- uses an arbitrary .NET assembly and type with arguments to load a dictionary. You can use this to load your dictionary from a database, a web service or anywhere you care to program.
The Random phrase strength selects between the very short (as few as 2 words) and the very long (up to 20 words). But perhaps you want something more specific? Well, you can choose your phrase strength at will. And how many phrases are generated.
AXIOS\C:\Users\Murray> .\PassphraseGenerator.exe -c 20 -s strong
Readable Passphrase Generator 0.13
Generating 20 phrase(s) of strength 'Strong'...
Must be between 1 and 999 characters.
Dictionary contains 13,160 words (loaded in 417.23ms)
Average combinations ~1.683E+019 (~63.87 bits)
Total combinations 6.000E+013 - 2.322E+022 (45.77 - 74.30 bits)
Using no mutators
the goat was panning the podium
idealists framed a dream
....
the vehicular thing was chartering its trek
their tuneless one furrows an excluded scandal
Generated 20 phrase(s) in 140.59ms.
Yay! Now we have 20 phases to choose from. They're also based on the Strong phrase template: note the decrease in average combinations but the narrowing of the min / max range.
A more recent feature are "equal", "required" and "and" versions of each strength. Equal and required are for password purists which prefer randomness over a nice sounding phrase. And adds another noun at the end of the phrase. And you can combine them if you like: StrongRequiredAnd. You can get the detail behind them from What Passphrase Should I Use.
Readable Passphrase Generator 0.13
Generating 10 phrase(s) of strength 'StrongEqual'...
Must be between 1 and 999 characters.
Dictionary contains 13,160 words (loaded in 410.33ms)
Average combinations ~9.377E+020 (~69.67 bits)
Total combinations 6.000E+013 - 2.322E+022 (45.77 - 74.30 bits)
Using no mutators
how does Bertie work in front of this dry thistle
Cleopatra is conducting out of a frightened tubercle
why do the presidents fester under the ergonomic tiara
Freddy laminated that award
Elise will hug an eternal airman
Paine has compressed on top of my sullen task
when does Henry unify the cribbage
should this confident thing delete this embattled bramble
when does that simple one penetrate given an incorrect bramble
will Goff work my clanking scoop
Generated 10 phrase(s) in 126.79ms.
Readable Passphrase Generator 0.13
Generating 10 phrase(s) of strength 'StrongRequired'...
Must be between 1 and 999 characters.
Dictionary contains 13,160 words (loaded in 400.86ms)
Average combinations ~5.829E+021 (~72.30 bits)
Total combinations 9.458E+019 - 1.890E+022 (66.36 - 74.00 bits)
Using no mutators
why does Osbert front apart from the planar parsec
your stylist is benefiting outside its eastbound mattock
how does Aeolia sack on behalf of that woofing larch
why does the parody agree until his inherent revue
will Pierre emerge right of their foul scullion
this plain has shrieked with that frail stranger
will our connected things radio by means of the pricey gambit
Lahore will mope in addition to that optimum excise
should the Rhineland clothe across from that outdoor scone
why does Jason work towards a lesbian lanyard
Generated 10 phrase(s) in 130.35ms.
Readable Passphrase Generator 0.13
Generating 10 phrase(s) of strength 'StrongAnd'...
Must be between 1 and 999 characters.
Dictionary contains 13,160 words (loaded in 415.86ms)
Average combinations ~1.642E+027 (~90.41 bits)
Total combinations 1.389E+018 - 1.088E+031 (60.27 - 103.10 bits)
Using no mutators
the passwords were sailing prior to the fancy screech and even the uric tidewater
her vehicle might overhear my mane and a gloats dapple
the 729 outfitters will dice the enchilada before a waxy undertow
a soluble thing is ruling the designer savanna after its current
the oviparous thing was logging his ceiling before that earmuff
a corset queried your backstop and even this hacksaw
can the kiss strangle a shallot because of the typed zigzag
her basilica is deporting his harpist and even his nodular occasion
the plea allotted its dance and their hewer
Alcoa will see far from a slat and that walkout
Generated 10 phrase(s) in 149.61ms.
It's very unfortunate that many websites and apps limit the minimum or maximum length of your passwords.
A particular place where this bit me once was my WiFi password (which can be a maximum of 63 characters).
The --min
and --max
options allow you to specify upper and / or lower bounds for passphrase length:
AXIOS\C:\Users\Murray> .\PassphraseGenerator.exe -c 10 -s strong --min 30 --max 30
Readable Passphrase Generator 0.13
Generating 10 phrase(s) of strength 'Strong'...
Must be between 30 and 30 characters.
Dictionary contains 13,160 words (loaded in 410.40ms)
Average combinations ~1.683E+019 (~63.87 bits)
Total combinations 6.000E+013 - 2.322E+022 (45.77 - 74.30 bits)
Using no mutators
Godot dashes without the grant
Walcott speaks past its sensor
a moat debunked the hemp plant
bowlers struts against my puma
communist ones cleave a giblet
its tuber fumbles the huntsman
a scorer will desist the bimbo
the preview craves the cornice
an orchard gazettes the tomboy
a purchase enslaves a prologue
Generated 10 phrase(s) in 218.24ms.
Many workplaces, apps and websites also have some rules or requirements which must be met for your password.
Usually, it's something like "must have at least one upper case, one lower case and one number".
Starting in version 0.13, you can use "mutators" to ensure your passphrase has upper case letters and numbers in it.
Simply use the -m
option to add two upper case letters and two numbers.
Or use the options starting with --mut
for full control.
AXIOS\C:\Users\Murray> .\PassphraseGenerator.exe -m
Readable Passphrase Generator 0.13
Generating 10 phrase(s) of strength 'Random'...
Must be between 1 and 999 characters.
Dictionary contains 13,160 words (loaded in 451.55ms)
Average combinations ~2.514E+023 (~77.73 bits)
Total combinations 3.065E+010 - 5.962E+037 (34.84 - 125.49 bits)
Using standard mutators (2 numbers, 2 capitals)
those tykes2 declared That tussle hobbled as1 far as The patrician
an Armhole0 Will ignite their savant1
....
this Fortress might Observe ulterior ligaments and an3 antigen3
the1 Igloo might christen around the7 headstone after the Interlude
AXIOS\C:\Users\Murray> .\PassphraseGenerator.exe --mutUpper anywhere --mutUpperCount 999 mutNumeric startorendofword --mutNumericCount 3
Readable Passphrase Generator 0.13
Generating 10 phrase(s) of strength 'Random'...
Must be between 1 and 999 characters.
Dictionary contains 13,160 words (loaded in 415.58ms)
Average combinations ~2.514E+023 (~77.73 bits)
Total combinations 3.065E+010 - 5.962E+037 (34.84 - 125.49 bits)
Using upper case and numeric mutators (999 capital(s), 3 number(s))
THE DOUBTER SEGMENTS AN1 ADDITIVE AFTER5 THE GRAVY8
212 ACCRETIONS5 ABOUND 4EXCEPT 9HIS ENDLESS CHEDDER
...
THE COCHLEA6 RANTED6 THEIR 1 BAKERY WILL DENIGRATE A FOWL1
A MUSHROOM IS 8DISBURSING 5OMINOUSLY EXCEPT8 FOR YOUR AIRPORT OR THE HOG
Finally, lets get rid of all the noise:
AXIOS\C:\Users\Murray> .\PassphraseGenerator.exe -c 100 -s strong -q
a renowned one will readjust the drink
a piker will rehearse a pot
a nut renumbered this inkblot
....
a communist recharged the depleted zit
a faculty relented beside the turret
the archdukes testifies past the deciduous oat
how does the defector lift their lifeboat
The -q
option will only show the resulting passphrases.
If you want to use the console app and standard output to get your passphrases (perhaps to pipe into some other program), this is they way to go.
Running with .NET Core or Mono is very similar, but you need to use a slightly different command.
$ mono PassphraseGenerator.exe -c 1 -q
their rule airbrushes a subtitle and a linchpin
$ dotnet PassphraseGenerator.dll -c 1 -q
the therapists were upstaging their kazoo
.NET Core 3.1 / .NET 6.0 should invoke the DLL.
Mono requires the .NET Framework 4.5.2 download and should invoke the EXE.