354 for index in range( |
354 for index in range( |
355 len(pattern) - self.keyboardPatterns["length"] + 1): |
355 len(pattern) - self.keyboardPatterns["length"] + 1): |
356 fwd = pattern[index:index + |
356 fwd = pattern[index:index + |
357 self.keyboardPatterns["length"]] |
357 self.keyboardPatterns["length"]] |
358 rev = self.__strReverse(fwd) |
358 rev = self.__strReverse(fwd) |
359 if lowercasedPassword.find(fwd) != -1: |
359 if ( |
360 if fwd not in patternsMatched: |
360 lowercasedPassword.find(fwd) != -1 and |
361 self.keyboardPatterns["count"] += 1 |
361 fwd not in patternsMatched |
362 patternsMatched.append(fwd) |
362 ): |
363 if lowercasedPassword.find(rev) != -1: |
363 self.keyboardPatterns["count"] += 1 |
364 if fwd not in patternsMatched: |
364 patternsMatched.append(fwd) |
365 self.keyboardPatterns["count"] += 1 |
365 if ( |
366 patternsMatched.append(rev) |
366 lowercasedPassword.find(rev) != -1 and |
|
367 fwd not in patternsMatched |
|
368 ): |
|
369 self.keyboardPatterns["count"] += 1 |
|
370 patternsMatched.append(rev) |
367 |
371 |
368 # Try to find repeated sequences of characters. |
372 # Try to find repeated sequences of characters. |
369 if self.passwordLength["count"] >= self.repeatedSequences["length"]: |
373 if self.passwordLength["count"] >= self.repeatedSequences["length"]: |
370 for index in range(len(lowercasedPassword) - |
374 for index in range(len(lowercasedPassword) - |
371 self.repeatedSequences["length"] + 1): |
375 self.repeatedSequences["length"] + 1): |
638 # save value before redundancy |
642 # save value before redundancy |
639 self.score["beforeRedundancy"] = self.score["count"] |
643 self.score["beforeRedundancy"] = self.score["count"] |
640 |
644 |
641 # apply the redundancy |
645 # apply the redundancy |
642 # is the password length requirement fulfilled? |
646 # is the password length requirement fulfilled? |
643 if self.recommendedPasswordLength["status"] != self.Status_Exceeded: |
647 if ( |
|
648 self.recommendedPasswordLength[ |
|
649 "status"] != self.Status_Exceeded and |
|
650 self.score["count"] > 0 |
|
651 ): |
644 # full penalty, because password is not long enough, only for |
652 # full penalty, because password is not long enough, only for |
645 # a positive score |
653 # a positive score |
646 if self.score["count"] > 0: |
654 self.score["count"] *= 1.0 / self.redundancy["value"] |
647 self.score["count"] *= 1.0 / self.redundancy["value"] |
|
648 |
655 |
649 # level it out |
656 # level it out |
650 if self.score["count"] > 100: |
657 if self.score["count"] > 100: |
651 self.score["adjusted"] = 100 |
658 self.score["adjusted"] = 100 |
652 elif self.score["count"] < 0: |
659 elif self.score["count"] < 0: |