Skip to content

bobrecio/pwgen

Repository files navigation

PWGen: Formatted Password Generator


THIS FILE IS SLIGHTLY OUTDATED

This app has not been developed yet.

  • Generates password based on a user-requested format
  • The password is composed of segments of various types. (see table below)
  • The user can provide the format or the app can randomly generate it.
  • Random words are selected based on a random number to find the position in a text file. The text file can be provided by the user, point to a web page (URL), or selected from a built in list of text files.
  • The password is tested agains a password strength meter

Steps

  1. Go to PWGen site.
  2. Select word source (Upload file, paste URL, select existing list)
  3. Set the password format. (Use the segment builder / Paste in one of your premade password formats)
  4. Generate multiple passwords based on format.
  5. Run each password through strength meter.
  6. Display list passwords with strength score. (Score is hyperlink to strength details - "strength-meter")

Functions

  • mkWordList(file) - generate the wordlist_array[]
    • Remove top 5(?) occuring words. (Show these in showFilesStats().)
    • Remove single letter words.
    • Remove numbers, words with numbers, special characters and words with special characters.
  • buildPW(format) - concatenates the segments of the password by calling functions to create each segment based on "format".
  • parseFormat(string) - returns array of format. %W2%\@%d4 ==> ["W2","@1","d4"]
  • randomFormat - returns a random password format.
  • randomPW- returns random password.
  • getWordOfLen(N) - returns a random word from the list with length "N".
  • getNum(N) - selects a number with the N-length.
  • getChar(N) - returns random string of characters - length of N.
  • showFileStats() - Show stats of the word file - total/unique words, longest/shortest, top 5 words removed.
  • pwlist[{"pwd":"","strength":""},{...},{...}]

Notes:

  • If format="", random format will be returned.
  • If N=NULL, 1 is assumed.
  • If N=0, random number between 1 and 5 is used.

Form

  • Word Source:
    • upload (text box/upload),
    • URL (textbox),
    • select (dropdown)
  • Display File Stats
    • Unique/Total words:
    • 5 most common:
    • Longest/Shortest
  • Select Segments: Type (dropdown), Length(textbox, spinner)
  • [Add segment]
  • Display password format (textbox) [default: %W1%s1%d3]
  • Number of choices (textbox)
  • [Generate Passwords]
  • List of choices: Password, Strength (Raw), Copy Icon
  • [Redo] [Reset]

Notes:

  • [Add Segment] creates properly formatted segments - %NX

Segment Definitions:

  • % is the segment delimiter.
  • Properly formatted segment should be % followed by number then type => % + char + length.
  • If no number is provided for length, length of 1 is assumed.
  • If number is 0, random length between 1 and 5 is used.
char type example description
a lower-alpha %a5 5 random lower-alpha characters
A upper-alpha %A5 5 random upper-alpha characters
M or m mixed-case %M3 3 random mixed-case characters
d digits %d14 14 random digits
s symbol %s 5 (default) symbol (aka special character)
\ literal %\! produces !
x any characters %x14 14 random characters of any type
wl word (lower-case) %wl3 3-letter word with all lower-case letters
wu word (upper-case) %wu5 5-letter word with all upper-case letters
wt word (title-case) %wt0 5-letter word with first letter capitalized
nl, nu, nt noun (upper-, lower-, title-case)
vl, vu, vt verb (upper-, lower-, title-case)
jl, ju, jt adjective (upper-, lower-, title-case)
bl, bu, bt adverb (upper-, lower-, title-case)

Usage example

%T5%\\\.%d4%s%x5

segment Descripton
%T5 1 5-letter title-case word
%\. dot
%d4 4 digits
%s random number of symbols
%x5 5 random characters of any type

Possible result

Hello.1234$eH&12


Test your passwords at http://www.passwordmeter.com/