Esempio n. 1
0
def test_add_frequency_lists():
    matching.add_frequency_lists(
        {'test_words': ['qidkviflkdoejjfkd', 'sjdshfidssdkdjdhfkl']})

    assert 'test_words' in matching.RANKED_DICTIONARIES
    assert matching.RANKED_DICTIONARIES['test_words'] == {
        'qidkviflkdoejjfkd': 1,
        'sjdshfidssdkdjdhfkl': 2,
    }
Esempio n. 2
0
 def __init__(self,
              wordfile=None,
              min_length=5,
              max_length=9,
              valid_chars="."):
     self.wordfile = xp.locate_wordfile(wordfile)
     self.words = xp.generate_wordlist(wordfile=wordfile,
                                       min_length=min_length,
                                       max_length=max_length,
                                       valid_chars=".")
     add_frequency_lists({"words": self.words})
    def validate(self, password, user=None):
        """Validate method, run zxcvbn and check score."""
        user_inputs = []
        if user is not None:
            for attribute in self.user_attributes:
                if hasattr(user, attribute):
                    user_inputs.append(getattr(user, attribute))

        add_frequency_lists(self.frequency_lists)

        results = zxcvbn(password, user_inputs=user_inputs)
        if results.get('score', 0) < self.min_score:
            suggestions = results.get('feedback', {}).get('suggestions', [])
            warnings = [results.get('feedback', {}).get('warning', [])]
            raise ValidationError([_(msg) for msg in [*warnings, *suggestions]], code=self.code, params={})
Esempio n. 4
0
def perform_audit(keepass: PyKeePass,
                  pws: List[str],
                  score: float,
                  show_passwords=False) -> List[Tuple[float, Entry]]:
    global pw_column

    add_frequency_lists({"my_passwords": [pw.lower() for pw in pws]})

    pw_data = [
        entry for entry in keepass.entries
        if isinstance(entry, Entry) and entry.password is not None
    ]

    annotated = map(lambda entry: (get_zxcvbn_score(entry), entry), pw_data)
    filtered = filter(lambda entry: entry[0] < score, annotated)
    sorted_entries = sorted(filtered, key=lambda entry: entry[0])

    print_pws(sorted_entries, show_passwords)

    return sorted_entries
Esempio n. 5
0
import os
from zxcvbn import zxcvbn
from zxcvbn.matching import add_frequency_lists

add_frequency_lists({
    ##### INSERT DICTIONARY WORDS HERE TO IMPROVE BREAKING SPEEDS #####
    'my_list': ['carolina', 'Carolina', 'tarheel', 'Tarheel'],
})

cwdOutput = str(os.getcwd()) + "\output_data.txt"

# Start an output file to write to
file = open(cwdOutput, "w+")

# Write to output file using each line as new password and data about it
# Also using a comma as a delimiter for possible conversion into excel sheet
results1 = zxcvbn('math1001!', user_inputs=['irrelevant', 'irrelevant'])
results2 = zxcvbn('whogoesthere', user_inputs=['irrelevant', 'irrelevant'])
results3 = zxcvbn('1234$$4321', user_inputs=['irrelevant', 'irrelevant'])
results4 = zxcvbn('mater9gator', user_inputs=['irrelevant', 'irrelevant'])
results5 = zxcvbn('cat2lime!', user_inputs=['irrelevant', 'irrelevant'])
results6 = zxcvbn('overthemountain', user_inputs=['irrelevant', 'irrelevant'])
results7 = zxcvbn('hasanA1998', user_inputs=['irrelevant', 'irrelevant'])
results8 = zxcvbn('$industrio', user_inputs=['irrelevant', 'irrelevant'])
results9 = zxcvbn('busyasabee', user_inputs=['irrelevant', 'irrelevant'])
results10 = zxcvbn('LaughingOutLoud', user_inputs=['irrelevant', 'irrelevant'])
results11 = zxcvbn('bark@myd0g', user_inputs=['irrelevant', 'irrelevant'])
results12 = zxcvbn('stranger1!Danger',
                   user_inputs=['irrelevant', 'irrelevant'])
results13 = zxcvbn('Maximum*Overdrive',
                   user_inputs=['irrelevant', 'irrelevant'])
Esempio n. 6
0
from zxcvbn import zxcvbn
from zxcvbn.matching import add_frequency_lists
import discord

with open('data/xato-net-10-million-passwords.txt', 'r') as infile:
    xato = infile.read().split('\n')
add_frequency_lists({'xato': xato})


class Analyze:
    """A realistic password strength estimator"""

    # location of file with help string
    helpFile = 'docs/password_analyzer.md'

    # reads help file
    def getHelp():
        with open(Analyze.helpFile, 'r') as fp:
            return fp.read()

    # prints help message if switch is used
    def isHelp(message):
        if message == '-h' or message == '--help':
            return True
        return False

    # analyze a given password
    def check_password(message):
        splitMessage = message.split(' ')

        if len(splitMessage) == 1 or Analyze.isHelp(splitMessage[1]):