1Data::Password::zxcvbn:U:sMeartcCho:n:tDriicbtuDitaoetndaa:rP:yeP(ra3ls)sDwoocrudm:e:nztxactvibonn::Match::Dictionary(3)
2
3
4

NAME

6       Data::Password::zxcvbn::Match::Dictionary - match class for words in
7       passwords
8

VERSION

10       version 1.1.2
11

DESCRIPTION

13       This class represents the guess that a certain substring of a password
14       can be guessed by going through a dictionary.
15

ATTRIBUTES

17   "reversed"
18       Boolean, true if the token appears to be a dictionary word that's been
19       reversed (i.e. last letter first)
20
21   "substitutions"
22       Hashref representing the characters that need to be substituted to make
23       the token match a dictionary work (e.g. if the token is "s!mpl3", this
24       hash would be "{ '!' => 'i', '3' => 'e' }").
25
26   "rank"
27       Number, indicating how common the dictionary word is. 1 means "most
28       common".
29
30   "dictionary_name"
31       String, the name of the dictionary that the word was found in. Usually
32       one of:
33
34       •   "english_wikipedia"
35
36           words extracted from a dump of the English edition of Wikipedia
37
38       •   "male_names", "female_names", "surnames"
39
40           common names from the 1990 US census
41
42       •   "passwords"
43
44           most common passwords, extracted from the "xato" password dump
45
46       •   "us_tv_and_film"
47
48           words from a 2006 Wiktionary word frequency study over American
49           television and movies
50

METHODS

52   "l33t"
53       Returns true if the token had any "substitutions" (i.e. it was written
54       in "l33t-speak")
55
56   "make"
57         my @matches = @{ Data::Password::zxcvbn::Match::Dictionary->make(
58           $password,
59           { # these are the defaults
60             ranked_dictionaries => \%Data::Password::zxcvbn::RankedDictionaries::ranked_dictionaries,
61             l33t_table => \%Data::Password::zxcvbn::Match::Dictionary::l33t_table,
62           },
63         ) };
64
65       Scans the $password for substrings that match words in the
66       "ranked_dictionaries", possibly reversed, possibly with substitutions
67       from the "l33t_table".
68
69       The "ranked_dictionaries" should look like:
70
71         { some_dictionary_name => { 'word' => 156, 'another' => 13, ... },
72           ... }
73
74       (i.e. a hash of dictionaries, each mapping words to their frequency
75       rank) and the "l33t_table" should look like:
76
77         { a => [ '4', '@' ], ... }
78
79       (i.e. a hash mapping characters to arrays of other characters)
80
81   "estimate_guesses"
82       The number of guesses is the product of the rank of the word, how many
83       case combinations match it, how many substitutions were used, doubled
84       if the token is reversed.
85
86   "does_word_start_upper"
87   "does_word_end_upper"
88   "is_word_all_not_upper"
89   "is_word_all_not_lower"
90   "is_word_all_upper"
91         if ($self->does_word_start_upper($word)) { ... }
92
93       These are mainly for sub-classes, to use in ""feedback_warning"" and
94       ""feedback_suggestions"".
95
96   "feedback_warning"
97   "feedback_suggestions"
98       This class suggests not using common words or passwords, especially on
99       their own. It also suggests that capitalisation, "special characters"
100       substitutions, and writing things backwards are not very useful.
101
102   "fields_for_json"
103       The JSON serialisation for matches of this class will contain "token i
104       j guesses guesses_log10 dictionary_name reversed rank substitutions".
105

AUTHOR

107       Gianni Ceccarelli <gianni.ceccarelli@broadbean.com>
108
110       This software is copyright (c) 2022 by BroadBean UK, a CareerBuilder
111       Company.
112
113       This is free software; you can redistribute it and/or modify it under
114       the same terms as the Perl 5 programming language system itself.
115
116
117
118perl v5.36.1                      2D0a2t3a-:0:9P-a1s3sword::zxcvbn::Match::Dictionary(3)
Impressum