Utilities/PasswordChecker.py

branch
Py2 comp.
changeset 3060
5883ce99ee12
parent 3057
10516539f238
parent 3039
8dd0165d805d
child 3145
a9de05d4a22f
equal deleted inserted replaced
3058:0a02c433f52d 3060:5883ce99ee12
325 # not make sense to check the password "ab" for the sequential data 325 # not make sense to check the password "ab" for the sequential data
326 # "abc" 326 # "abc"
327 lowercasedPassword = password.lower() 327 lowercasedPassword = password.lower()
328 328
329 if self.passwordLength["count"] >= self.sequentialLetters["length"]: 329 if self.passwordLength["count"] >= self.sequentialLetters["length"]:
330 for index in range(len(self.sequentialLetters["data"]) - \ 330 for index in range(len(self.sequentialLetters["data"]) -
331 self.sequentialLetters["length"] + 1): 331 self.sequentialLetters["length"] + 1):
332 fwd = self.sequentialLetters["data"][ 332 fwd = self.sequentialLetters["data"][
333 index:index + self.sequentialLetters["length"]] 333 index:index + self.sequentialLetters["length"]]
334 rev = self.__strReverse(fwd) 334 rev = self.__strReverse(fwd)
335 if lowercasedPassword.find(fwd) != -1: 335 if lowercasedPassword.find(fwd) != -1:
337 if lowercasedPassword.find(rev) != -1: 337 if lowercasedPassword.find(rev) != -1:
338 self.sequentialLetters["count"] += 1 338 self.sequentialLetters["count"] += 1
339 339
340 # Check for sequential numeric string patterns (forward and reverse) 340 # Check for sequential numeric string patterns (forward and reverse)
341 if self.passwordLength["count"] >= self.sequentialNumerics["length"]: 341 if self.passwordLength["count"] >= self.sequentialNumerics["length"]:
342 for index in range(len(self.sequentialNumerics["data"]) - \ 342 for index in range(len(self.sequentialNumerics["data"]) -
343 self.sequentialNumerics["length"] + 1): 343 self.sequentialNumerics["length"] + 1):
344 fwd = self.sequentialNumerics["data"][ 344 fwd = self.sequentialNumerics["data"][
345 index:index + self.sequentialNumerics["length"]] 345 index:index + self.sequentialNumerics["length"]]
346 rev = self.__strReverse(fwd) 346 rev = self.__strReverse(fwd)
347 if lowercasedPassword.find(fwd) != -1: 347 if lowercasedPassword.find(fwd) != -1:
353 patternsMatched = [] 353 patternsMatched = []
354 if self.passwordLength["count"] >= self.keyboardPatterns["length"]: 354 if self.passwordLength["count"] >= self.keyboardPatterns["length"]:
355 for pattern in self.keyboardPatterns["data"]: 355 for pattern in self.keyboardPatterns["data"]:
356 for index in range( 356 for index in range(
357 len(pattern) - self.keyboardPatterns["length"] + 1): 357 len(pattern) - self.keyboardPatterns["length"] + 1):
358 fwd = pattern[index:index + 358 fwd = pattern[index:index +
359 self.keyboardPatterns["length"]] 359 self.keyboardPatterns["length"]]
360 rev = self.__strReverse(fwd) 360 rev = self.__strReverse(fwd)
361 if lowercasedPassword.find(fwd) != -1: 361 if lowercasedPassword.find(fwd) != -1:
362 if fwd not in patternsMatched: 362 if fwd not in patternsMatched:
363 self.keyboardPatterns["count"] += 1 363 self.keyboardPatterns["count"] += 1
367 self.keyboardPatterns["count"] += 1 367 self.keyboardPatterns["count"] += 1
368 patternsMatched.append(rev) 368 patternsMatched.append(rev)
369 369
370 # Try to find repeated sequences of characters. 370 # Try to find repeated sequences of characters.
371 if self.passwordLength["count"] >= self.repeatedSequences["length"]: 371 if self.passwordLength["count"] >= self.repeatedSequences["length"]:
372 for index in range(len(lowercasedPassword) - \ 372 for index in range(len(lowercasedPassword) -
373 self.repeatedSequences["length"] + 1): 373 self.repeatedSequences["length"] + 1):
374 fwd = lowercasedPassword[ 374 fwd = lowercasedPassword[
375 index:index + self.repeatedSequences["length"]] 375 index:index + self.repeatedSequences["length"]]
376 if lowercasedPassword.find( 376 if lowercasedPassword.find(
377 fwd, index + self.repeatedSequences["length"]) != -1: 377 fwd, index + self.repeatedSequences["length"]) != -1:
378 self.repeatedSequences["count"] += 1 378 self.repeatedSequences["count"] += 1
379 379
380 # Try to find mirrored sequences of characters. 380 # Try to find mirrored sequences of characters.
381 if self.passwordLength["count"] >= self.mirroredSequences["length"]: 381 if self.passwordLength["count"] >= self.mirroredSequences["length"]:
382 for index in range(len(lowercasedPassword) - \ 382 for index in range(len(lowercasedPassword) -
383 self.mirroredSequences["length"] + 1): 383 self.mirroredSequences["length"] + 1):
384 fwd = lowercasedPassword[ 384 fwd = lowercasedPassword[
385 index:index + self.mirroredSequences["length"]] 385 index:index + self.mirroredSequences["length"]]
386 rev = self.__strReverse(fwd) 386 rev = self.__strReverse(fwd)
387 if lowercasedPassword.find( 387 if lowercasedPassword.find(
395 # passwordLength 395 # passwordLength
396 # credit additional length or punish "under" length 396 # credit additional length or punish "under" length
397 if self.passwordLength["count"] >= self.passwordLength["minimum"]: 397 if self.passwordLength["count"] >= self.passwordLength["minimum"]:
398 # credit additional characters over minimum 398 # credit additional characters over minimum
399 self.passwordLength["rating"] = self.passwordLength["bonus"] + \ 399 self.passwordLength["rating"] = self.passwordLength["bonus"] + \
400 (self.passwordLength["count"] - 400 (self.passwordLength["count"] -
401 self.passwordLength["minimum"]) * \ 401 self.passwordLength["minimum"]) * \
402 self.passwordLength["factor"] 402 self.passwordLength["factor"]
403 else: 403 else:
404 self.passwordLength["rating"] = self.passwordLength["penalty"] 404 self.passwordLength["rating"] = self.passwordLength["penalty"]
405 self.score["count"] += self.passwordLength["rating"] 405 self.score["count"] += self.passwordLength["rating"]
409 # penalty on it 409 # penalty on it
410 if self.passwordLength["count"] >= \ 410 if self.passwordLength["count"] >= \
411 self.recommendedPasswordLength["minimum"]: 411 self.recommendedPasswordLength["minimum"]:
412 self.recommendedPasswordLength["rating"] = \ 412 self.recommendedPasswordLength["rating"] = \
413 self.recommendedPasswordLength["bonus"] + \ 413 self.recommendedPasswordLength["bonus"] + \
414 (self.passwordLength["count"] - \ 414 (self.passwordLength["count"] -
415 self.recommendedPasswordLength["minimum"]) * \ 415 self.recommendedPasswordLength["minimum"]) * \
416 self.recommendedPasswordLength["factor"] 416 self.recommendedPasswordLength["factor"]
417 else: 417 else:
418 self.recommendedPasswordLength["rating"] = \ 418 self.recommendedPasswordLength["rating"] = \
419 self.recommendedPasswordLength["penalty"] 419 self.recommendedPasswordLength["penalty"]
550 # requirement met 550 # requirement met
551 self.basicRequirements["count"] += 1 551 self.basicRequirements["count"] += 1
552 552
553 # judge the requirement status 553 # judge the requirement status
554 self.basicRequirements["status"] = self.__determineStatus( 554 self.basicRequirements["status"] = self.__determineStatus(
555 self.basicRequirements["count"] - 555 self.basicRequirements["count"] -
556 self.basicRequirements["minimum"]) 556 self.basicRequirements["minimum"])
557 if self.basicRequirements["status"] != self.Status_Failed: 557 if self.basicRequirements["status"] != self.Status_Failed:
558 self.basicRequirements["rating"] = \ 558 self.basicRequirements["rating"] = \
559 self.basicRequirements["bonus"] + \ 559 self.basicRequirements["bonus"] + \
560 self.basicRequirements["factor"] * \ 560 self.basicRequirements["factor"] * \
564 self.basicRequirements["penalty"] 564 self.basicRequirements["penalty"]
565 self.score["count"] += self.basicRequirements["rating"] 565 self.score["count"] += self.basicRequirements["rating"]
566 566
567 # beyond basic requirements 567 # beyond basic requirements
568 self.recommendedPasswordLength["status"] = self.__determineStatus( 568 self.recommendedPasswordLength["status"] = self.__determineStatus(
569 self.recommendedPasswordLength["count"] - \ 569 self.recommendedPasswordLength["count"] -
570 self.recommendedPasswordLength["minimum"]) 570 self.recommendedPasswordLength["minimum"])
571 self.middleNumerics["status"] = self.__determineStatus( 571 self.middleNumerics["status"] = self.__determineStatus(
572 self.middleNumerics["count"] - \ 572 self.middleNumerics["count"] -
573 self.middleNumerics["minimum"]) 573 self.middleNumerics["minimum"])
574 self.middleSymbols["status"] = self.__determineStatus( 574 self.middleSymbols["status"] = self.__determineStatus(
575 self.middleSymbols["count"] - \ 575 self.middleSymbols["count"] -
576 self.middleSymbols["minimum"]) 576 self.middleSymbols["minimum"])
577 self.sequentialLetters["status"] = self.__determineBinaryStatus( 577 self.sequentialLetters["status"] = self.__determineBinaryStatus(
578 self.sequentialLetters["count"]) 578 self.sequentialLetters["count"])
579 self.sequentialNumerics["status"] = self.__determineBinaryStatus( 579 self.sequentialNumerics["status"] = self.__determineBinaryStatus(
580 self.sequentialNumerics["count"]) 580 self.sequentialNumerics["count"])
581 self.keyboardPatterns["status"] = self.__determineBinaryStatus( 581 self.keyboardPatterns["status"] = self.__determineBinaryStatus(

eric ide

mercurial