386 if lowercasedPassword.find( |
386 if lowercasedPassword.find( |
387 fwd, index + self.mirroredSequences["length"]) != -1: |
387 fwd, index + self.mirroredSequences["length"]) != -1: |
388 self.mirroredSequences["count"] += 1 |
388 self.mirroredSequences["count"] += 1 |
389 |
389 |
390 # Initial score based on length |
390 # Initial score based on length |
391 self.score["count"] = self.passwordLength["count"] * \ |
391 self.score["count"] = ( |
392 self.passwordLength["factor"] |
392 self.passwordLength["count"] * self.passwordLength["factor"] |
|
393 ) |
393 |
394 |
394 # passwordLength |
395 # passwordLength |
395 # credit additional length or punish "under" length |
396 # credit additional length or punish "under" length |
396 if self.passwordLength["count"] >= self.passwordLength["minimum"]: |
397 if self.passwordLength["count"] >= self.passwordLength["minimum"]: |
397 # credit additional characters over minimum |
398 # credit additional characters over minimum |
398 self.passwordLength["rating"] = self.passwordLength["bonus"] + \ |
399 self.passwordLength["rating"] = ( |
|
400 self.passwordLength["bonus"] + |
399 (self.passwordLength["count"] - |
401 (self.passwordLength["count"] - |
400 self.passwordLength["minimum"]) * \ |
402 self.passwordLength["minimum"]) * |
401 self.passwordLength["factor"] |
403 self.passwordLength["factor"] |
|
404 ) |
402 else: |
405 else: |
403 self.passwordLength["rating"] = self.passwordLength["penalty"] |
406 self.passwordLength["rating"] = self.passwordLength["penalty"] |
404 self.score["count"] += self.passwordLength["rating"] |
407 self.score["count"] += self.passwordLength["rating"] |
405 |
408 |
406 # recommendedPasswordLength |
409 # recommendedPasswordLength |
407 # Credit reaching the recommended password length or put a |
410 # Credit reaching the recommended password length or put a |
408 # penalty on it |
411 # penalty on it |
409 if self.passwordLength["count"] >= \ |
412 if ( |
410 self.recommendedPasswordLength["minimum"]: |
413 self.passwordLength["count"] >= |
411 self.recommendedPasswordLength["rating"] = \ |
414 self.recommendedPasswordLength["minimum"] |
412 self.recommendedPasswordLength["bonus"] + \ |
415 ): |
|
416 self.recommendedPasswordLength["rating"] = ( |
|
417 self.recommendedPasswordLength["bonus"] + |
413 (self.passwordLength["count"] - |
418 (self.passwordLength["count"] - |
414 self.recommendedPasswordLength["minimum"]) * \ |
419 self.recommendedPasswordLength["minimum"]) * |
415 self.recommendedPasswordLength["factor"] |
420 self.recommendedPasswordLength["factor"] |
416 else: |
421 ) |
417 self.recommendedPasswordLength["rating"] = \ |
422 else: |
|
423 self.recommendedPasswordLength["rating"] = ( |
418 self.recommendedPasswordLength["penalty"] |
424 self.recommendedPasswordLength["penalty"] |
|
425 ) |
419 self.score["count"] += self.recommendedPasswordLength["rating"] |
426 self.score["count"] += self.recommendedPasswordLength["rating"] |
420 |
427 |
421 # lowercaseLetters |
428 # lowercaseLetters |
422 # Honor or punish the lowercase letter use |
429 # Honor or punish the lowercase letter use |
423 if self.lowercaseLetters["count"] > 0: |
430 if self.lowercaseLetters["count"] > 0: |
424 self.lowercaseLetters["rating"] = \ |
431 self.lowercaseLetters["rating"] = ( |
425 self.lowercaseLetters["bonus"] + \ |
432 self.lowercaseLetters["bonus"] + |
426 self.lowercaseLetters["count"] * \ |
433 self.lowercaseLetters["count"] * |
427 self.lowercaseLetters["factor"] |
434 self.lowercaseLetters["factor"] |
|
435 ) |
428 else: |
436 else: |
429 self.lowercaseLetters["rating"] = self.lowercaseLetters["penalty"] |
437 self.lowercaseLetters["rating"] = self.lowercaseLetters["penalty"] |
430 self.score["count"] += self.lowercaseLetters["rating"] |
438 self.score["count"] += self.lowercaseLetters["rating"] |
431 |
439 |
432 # uppercaseLetters |
440 # uppercaseLetters |
433 # Honor or punish the lowercase letter use |
441 # Honor or punish the lowercase letter use |
434 if self.uppercaseLetters["count"] > 0: |
442 if self.uppercaseLetters["count"] > 0: |
435 self.uppercaseLetters["rating"] = \ |
443 self.uppercaseLetters["rating"] = ( |
436 self.uppercaseLetters["bonus"] + \ |
444 self.uppercaseLetters["bonus"] + |
437 self.uppercaseLetters["count"] * \ |
445 self.uppercaseLetters["count"] * |
438 self.uppercaseLetters["factor"] |
446 self.uppercaseLetters["factor"] |
|
447 ) |
439 else: |
448 else: |
440 self.uppercaseLetters["rating"] = self.uppercaseLetters["penalty"] |
449 self.uppercaseLetters["rating"] = self.uppercaseLetters["penalty"] |
441 self.score["count"] += self.uppercaseLetters["rating"] |
450 self.score["count"] += self.uppercaseLetters["rating"] |
442 |
451 |
443 # numerics |
452 # numerics |
444 # Honor or punish the numerics use |
453 # Honor or punish the numerics use |
445 if self.numerics["count"] > 0: |
454 if self.numerics["count"] > 0: |
446 self.numerics["rating"] = self.numerics["bonus"] + \ |
455 self.numerics["rating"] = ( |
|
456 self.numerics["bonus"] + |
447 self.numerics["count"] * self.numerics["factor"] |
457 self.numerics["count"] * self.numerics["factor"] |
|
458 ) |
448 else: |
459 else: |
449 self.numerics["rating"] = self.numerics["penalty"] |
460 self.numerics["rating"] = self.numerics["penalty"] |
450 self.score["count"] += self.numerics["rating"] |
461 self.score["count"] += self.numerics["rating"] |
451 |
462 |
452 # symbols |
463 # symbols |
453 # Honor or punish the symbols use |
464 # Honor or punish the symbols use |
454 if self.symbols["count"] > 0: |
465 if self.symbols["count"] > 0: |
455 self.symbols["rating"] = self.symbols["bonus"] + \ |
466 self.symbols["rating"] = ( |
|
467 self.symbols["bonus"] + |
456 self.symbols["count"] * self.symbols["factor"] |
468 self.symbols["count"] * self.symbols["factor"] |
|
469 ) |
457 else: |
470 else: |
458 self.symbols["rating"] = self.symbols["penalty"] |
471 self.symbols["rating"] = self.symbols["penalty"] |
459 self.score["count"] += self.symbols["rating"] |
472 self.score["count"] += self.symbols["rating"] |
460 |
473 |
461 # middleSymbols |
474 # middleSymbols |
462 # Honor or punish the middle symbols use |
475 # Honor or punish the middle symbols use |
463 if self.middleSymbols["count"] > 0: |
476 if self.middleSymbols["count"] > 0: |
464 self.middleSymbols["rating"] = self.middleSymbols["bonus"] + \ |
477 self.middleSymbols["rating"] = ( |
|
478 self.middleSymbols["bonus"] + |
465 self.middleSymbols["count"] * self.middleSymbols["factor"] |
479 self.middleSymbols["count"] * self.middleSymbols["factor"] |
|
480 ) |
466 else: |
481 else: |
467 self.middleSymbols["rating"] = self.middleSymbols["penalty"] |
482 self.middleSymbols["rating"] = self.middleSymbols["penalty"] |
468 self.score["count"] += self.middleSymbols["rating"] |
483 self.score["count"] += self.middleSymbols["rating"] |
469 |
484 |
470 # middleNumerics |
485 # middleNumerics |
471 # Honor or punish the middle numerics use |
486 # Honor or punish the middle numerics use |
472 if self.middleNumerics["count"] > 0: |
487 if self.middleNumerics["count"] > 0: |
473 self.middleNumerics["rating"] = self.middleNumerics["bonus"] + \ |
488 self.middleNumerics["rating"] = ( |
|
489 self.middleNumerics["bonus"] + |
474 self.middleNumerics["count"] * self.middleNumerics["factor"] |
490 self.middleNumerics["count"] * self.middleNumerics["factor"] |
|
491 ) |
475 else: |
492 else: |
476 self.middleNumerics["rating"] = self.middleNumerics["penalty"] |
493 self.middleNumerics["rating"] = self.middleNumerics["penalty"] |
477 self.score["count"] += self.middleNumerics["rating"] |
494 self.score["count"] += self.middleNumerics["rating"] |
478 |
495 |
479 # sequentialLetters |
496 # sequentialLetters |
480 # Honor or punish the sequential letter use |
497 # Honor or punish the sequential letter use |
481 if self.sequentialLetters["count"] == 0: |
498 if self.sequentialLetters["count"] == 0: |
482 self.sequentialLetters["rating"] = \ |
499 self.sequentialLetters["rating"] = ( |
483 self.sequentialLetters["bonus"] + \ |
500 self.sequentialLetters["bonus"] + |
484 self.sequentialLetters["count"] * \ |
501 self.sequentialLetters["count"] * |
485 self.sequentialLetters["factor"] |
502 self.sequentialLetters["factor"] |
486 else: |
503 ) |
487 self.sequentialLetters["rating"] = \ |
504 else: |
|
505 self.sequentialLetters["rating"] = ( |
488 self.sequentialLetters["penalty"] |
506 self.sequentialLetters["penalty"] |
|
507 ) |
489 self.score["count"] += self.sequentialLetters["rating"] |
508 self.score["count"] += self.sequentialLetters["rating"] |
490 |
509 |
491 # sequentialNumerics |
510 # sequentialNumerics |
492 # Honor or punish the sequential numerics use |
511 # Honor or punish the sequential numerics use |
493 if self.sequentialNumerics["count"] == 0: |
512 if self.sequentialNumerics["count"] == 0: |
494 self.sequentialNumerics["rating"] = \ |
513 self.sequentialNumerics["rating"] = ( |
495 self.sequentialNumerics["bonus"] + \ |
514 self.sequentialNumerics["bonus"] + |
496 self.sequentialNumerics["count"] * \ |
515 self.sequentialNumerics["count"] * |
497 self.sequentialNumerics["factor"] |
516 self.sequentialNumerics["factor"] |
498 else: |
517 ) |
499 self.sequentialNumerics["rating"] = \ |
518 else: |
|
519 self.sequentialNumerics["rating"] = ( |
500 self.sequentialNumerics["penalty"] |
520 self.sequentialNumerics["penalty"] |
|
521 ) |
501 self.score["count"] += self.sequentialNumerics["rating"] |
522 self.score["count"] += self.sequentialNumerics["rating"] |
502 |
523 |
503 # keyboardPatterns |
524 # keyboardPatterns |
504 # Honor or punish the keyboard patterns use |
525 # Honor or punish the keyboard patterns use |
505 if self.keyboardPatterns["count"] == 0: |
526 if self.keyboardPatterns["count"] == 0: |
506 self.keyboardPatterns["rating"] = \ |
527 self.keyboardPatterns["rating"] = ( |
507 self.keyboardPatterns["bonus"] + \ |
528 self.keyboardPatterns["bonus"] + |
508 self.keyboardPatterns["count"] * \ |
529 self.keyboardPatterns["count"] * |
509 self.keyboardPatterns["factor"] |
530 self.keyboardPatterns["factor"] |
|
531 ) |
510 else: |
532 else: |
511 self.keyboardPatterns["rating"] = self.keyboardPatterns["penalty"] |
533 self.keyboardPatterns["rating"] = self.keyboardPatterns["penalty"] |
512 self.score["count"] += self.keyboardPatterns["rating"] |
534 self.score["count"] += self.keyboardPatterns["rating"] |
513 |
535 |
514 # Count our basicRequirements and set the status |
536 # Count our basicRequirements and set the status |
587 # we apply them only, if the length is not awesome |
611 # we apply them only, if the length is not awesome |
588 if self.recommendedPasswordLength["status"] != self.Status_Exceeded: |
612 if self.recommendedPasswordLength["status"] != self.Status_Exceeded: |
589 # repeatedSequences |
613 # repeatedSequences |
590 # Honor or punish the use of repeated sequences |
614 # Honor or punish the use of repeated sequences |
591 if self.repeatedSequences["count"] == 0: |
615 if self.repeatedSequences["count"] == 0: |
592 self.repeatedSequences["rating"] = \ |
616 self.repeatedSequences["rating"] = ( |
593 self.repeatedSequences["bonus"] |
617 self.repeatedSequences["bonus"] |
|
618 ) |
594 else: |
619 else: |
595 self.repeatedSequences["rating"] = \ |
620 self.repeatedSequences["rating"] = ( |
596 self.repeatedSequences["penalty"] + \ |
621 self.repeatedSequences["penalty"] + |
597 self.repeatedSequences["count"] * \ |
622 self.repeatedSequences["count"] * |
598 self.repeatedSequences["factor"] |
623 self.repeatedSequences["factor"] |
|
624 ) |
599 |
625 |
600 # mirroredSequences |
626 # mirroredSequences |
601 # Honor or punish the use of mirrored sequences |
627 # Honor or punish the use of mirrored sequences |
602 if self.mirroredSequences["count"] == 0: |
628 if self.mirroredSequences["count"] == 0: |
603 self.mirroredSequences["rating"] = \ |
629 self.mirroredSequences["rating"] = ( |
604 self.mirroredSequences["bonus"] |
630 self.mirroredSequences["bonus"] |
|
631 ) |
605 else: |
632 else: |
606 self.mirroredSequences["rating"] = \ |
633 self.mirroredSequences["rating"] = ( |
607 self.mirroredSequences["penalty"] + \ |
634 self.mirroredSequences["penalty"] + |
608 self.mirroredSequences["count"] * \ |
635 self.mirroredSequences["count"] * |
609 self.mirroredSequences["factor"] |
636 self.mirroredSequences["factor"] |
|
637 ) |
610 |
638 |
611 # save value before redundancy |
639 # save value before redundancy |
612 self.score["beforeRedundancy"] = self.score["count"] |
640 self.score["beforeRedundancy"] = self.score["count"] |
613 |
641 |
614 # apply the redundancy |
642 # apply the redundancy |