eric6/Utilities/PasswordChecker.py

changeset 7259
7c017076c12e
parent 7229
53054eb5b15a
child 7360
9190402e4505
equal deleted inserted replaced
7258:aff39db4dacc 7259:7c017076c12e
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
552 # judge the requirement status 574 # judge the requirement status
553 self.basicRequirements["status"] = self.__determineStatus( 575 self.basicRequirements["status"] = self.__determineStatus(
554 self.basicRequirements["count"] - 576 self.basicRequirements["count"] -
555 self.basicRequirements["minimum"]) 577 self.basicRequirements["minimum"])
556 if self.basicRequirements["status"] != self.Status_Failed: 578 if self.basicRequirements["status"] != self.Status_Failed:
557 self.basicRequirements["rating"] = \ 579 self.basicRequirements["rating"] = (
558 self.basicRequirements["bonus"] + \ 580 self.basicRequirements["bonus"] +
559 self.basicRequirements["factor"] * \ 581 self.basicRequirements["factor"] *
560 self.basicRequirements["count"] 582 self.basicRequirements["count"]
561 else: 583 )
562 self.basicRequirements["rating"] = \ 584 else:
585 self.basicRequirements["rating"] = (
563 self.basicRequirements["penalty"] 586 self.basicRequirements["penalty"]
587 )
564 self.score["count"] += self.basicRequirements["rating"] 588 self.score["count"] += self.basicRequirements["rating"]
565 589
566 # beyond basic requirements 590 # beyond basic requirements
567 self.recommendedPasswordLength["status"] = self.__determineStatus( 591 self.recommendedPasswordLength["status"] = self.__determineStatus(
568 self.recommendedPasswordLength["count"] - 592 self.recommendedPasswordLength["count"] -
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

eric ide

mercurial