Request: Capitalization Options

Apr 11, 2014 at 6:50 PM
Edited Apr 11, 2014 at 6:50 PM
I'd like to see some way to capitalize characters. Perhaps something like "AllUpper=0,FirstLetterEachWordUpper=1,RandomSingleUpper=1,RandomUpper=0,AllLower=1,"

I think it's apparent, but the options above would allow setting anywhere from all letters to upper case to none of them to upper case.

This helps with readability as well as meeting complexity requirements on some sites.

Also, I'm really glad to have found this. It finally addresses my password issues.
Coordinator
Apr 17, 2014 at 11:54 AM
Thanks for the request.

I've always hesitated implementing rules to capitalise, instead advising people to just pick a few letters to capitalise themselves.

But, its something everyone seems to request it, so I think its time! So, I have two different approaches on how to implement this:
  1. What you're suggesting (I think), is to add more options to the template controlling how the phrase is generated.
  2. A mutator which will change the phrase after its generated. This could have three options: don't change, capitalise at start, capitalise random. And then a separate number controlling how many characters to capitalise. So "Capitalise at Random" 3 letters would make any three letters uppercase in the phrase. "Cap at Start" 2 letters makes two letters uppercase at the start of words.
The main advantage of (1) is it links into the existing infrastructure. But it isn't quite as flexible as (2). And with either make the number of strengths explode in number even more, or require people to make a custom phrase (which even I don't bother doing myself, so I wouldn't expect others to).

2 involves a bit more work, but should give more control. It could also be extended pretty easily to append / prepend numbers (which people have asked for in the past). It should also cover your "Entirely Uppercase" option if you set the number to 9999.

I'll probably also make some sort of Apple-like ultra simple checkbox which says "Just add some numbers and capitals, and don't make me think", in addition to more fine grained settings. This can just append 2 numbers and make two letters capitals at the start of words. Simple enough to get past most password requirements.

Any thoughts on what you'd prefer? What's most helpful to you?
Apr 24, 2014 at 3:20 PM
It sounds like either one of these would do what people want. I really think it's whichever you feel is the best approach. It sounds like the mutator would be more flexible in the long term. I know I'm content with the current support for numbers and like how it's implemented in that it keeps the phrase understandable "aflockhalved716husks" as opposed to "aflockhalvedhusks1".

I suspect what most people would be happy with is a "pretty good password" setting that included all three character classes, readable, and fit most websites restrictions. I've encountered some sites, I think even Live does it, that limits you to no more than 20 characters.
May 6, 2014 at 5:47 PM
Edited May 6, 2014 at 5:50 PM
I would think #1 would achieve what most people are looking for since almost certainly they are simply looking to meet complexity requirements.

That said, I prefer and am begging for actually, #2. We have a pretty basic complexity requirement of upper/lower/number/length, but people still complain about having to manually modify pw's after generation. I would think special characters would be easy as well with this construct. If you had an array of specials characters, just like the caps you could enable/disable specials, how many, prefix, suffix, random and then simply randomly pull from the predefined array. You could even have a few arrays of specials selectable - basic, extended, etc.

Guess I'm thinking like this:

yes/no Capitals
 yes/no Start     (yes/no Random     yes/no Number of Caps)
yes/no Numbers (as a requirement, not as part of the existing Number->1 mutator)
 yes/no Prefix     yes/no Suffix     yes/no Random     yes/No Number Required i.e. 2 #'s required
yes/no Specials
 yes/no Standard Set     yes/no Extended Set     yes/no Prefix     yes/no suffix     yes/no Random     yes/no Number Required
specialsStandard{!,@,#,$,%,^,&,*,(,),-,_+,=} and specialsExtended{!,@,#,$,%,^,&,*,(,),-,_+,=,`,~,[,],{,}.....} are kind what I'm thinking.

It's always easy when asking someone else to do the work, I know. I do want to say your code works very well and is very much appreciated.
May 6, 2014 at 5:52 PM
By the way, I've been playing with Custom Phrase Strengths trying to force Numbers to appear every time but can't seem to generate one that is consistent.
Coordinator
May 9, 2014 at 11:57 AM
Thanks for your thoughts, mrpopgun.

The good news is, I've implemented a "mutator" style of changes. Its pretty flexible in terms of where, when and how many changes it will make. But there's also a "standard" option, which adds two caps and two numbers. That should cover off most website password requirements (and spaces usually count as a "special" character).

I haven't implemented a "special" mutator just yet. Although it wouldn't be particularly hard. Though, it depends on how "special" you want your "specials"!! https://makemeapassword.org/Generate/Unicode

The bad news is, I haven't released it publicly just yet. Probably in the next week or so. I'm pretty busy with other things, but should be able to make a release soon. You're welcome to build from source, if you're up to it, though.


Here are a bunch of samples from KeePass with the "standard" 2 caps, 2 numbers:
its3 gunk sooner Corroded the murderess before massive6 Vessels
an insured sonnet earmarked On behalf of8 your trivial4 Cue and even the splotches
her Weeper qualified the3 dodger But not your airfield8
the domino3 will hang My screech Before their8 marcher
A brewer says0 apart6 from His peeper and even a spatter
The 1 tractor read the5 Napsack8
The frizzy purpose cried7 out a knave has7 censured The azimuth
the Thyroid Survives a9 suite8
the pileups declared conniving3 Things parodies The2 ruffian
the custom will infest dollars9 and Even the4 Summoners
your0 Subsidy will Spit an arm3
May 9, 2014 at 4:43 PM
Great news. Thank you for such a terrific project. It is very appreciated.


Coordinator
May 11, 2014 at 11:09 AM
Edited May 11, 2014 at 11:09 AM
Release has happened! Mutators are live in 0.13!

Let me know if you're still looking for a "special" version (just don't hold your breath for it)
May 27, 2014 at 4:05 PM
Thanks for adding this. Is it possible to add a mutator option with something like "Each Word" so that every word gets the capitalized. I'm betting that isn't possible. Maybe it can't see the different words by the time it runs. My goal is mostly readability with the change. I'd like every word to be capitalized so it's easier to read/remember on the occasions I have to type it manually or remember it.

Regardless, thank you for adding it!
Coordinator
May 27, 2014 at 10:15 PM
Actually, you can make every word start with a capital with the right settings! Set your mutators to custom, then the upper case style to StartOfWord, count to a large number like say 100 and numeric style to Never. That yields phrases like this:
A Rag Will Engineer Your Civilian
Erik Referred To A Bone
A Void Prayed An Absent Thing Has Belayed Your Worthy Lube
A Polyglot Omitted A Dike