Utilities/PasswordChecker.py

changeset 3034
7ce719013078
parent 2997
7f0ef975da9e
child 3039
8dd0165d805d
equal deleted inserted replaced
3033:58fe260e7469 3034:7ce719013078
323 # not make sense to check the password "ab" for the sequential data 323 # not make sense to check the password "ab" for the sequential data
324 # "abc" 324 # "abc"
325 lowercasedPassword = password.lower() 325 lowercasedPassword = password.lower()
326 326
327 if self.passwordLength["count"] >= self.sequentialLetters["length"]: 327 if self.passwordLength["count"] >= self.sequentialLetters["length"]:
328 for index in range(len(self.sequentialLetters["data"]) - \ 328 for index in range(len(self.sequentialLetters["data"]) -
329 self.sequentialLetters["length"] + 1): 329 self.sequentialLetters["length"] + 1):
330 fwd = self.sequentialLetters["data"][ 330 fwd = self.sequentialLetters["data"][
331 index:index + self.sequentialLetters["length"]] 331 index:index + self.sequentialLetters["length"]]
332 rev = self.__strReverse(fwd) 332 rev = self.__strReverse(fwd)
333 if lowercasedPassword.find(fwd) != -1: 333 if lowercasedPassword.find(fwd) != -1:
335 if lowercasedPassword.find(rev) != -1: 335 if lowercasedPassword.find(rev) != -1:
336 self.sequentialLetters["count"] += 1 336 self.sequentialLetters["count"] += 1
337 337
338 # Check for sequential numeric string patterns (forward and reverse) 338 # Check for sequential numeric string patterns (forward and reverse)
339 if self.passwordLength["count"] >= self.sequentialNumerics["length"]: 339 if self.passwordLength["count"] >= self.sequentialNumerics["length"]:
340 for index in range(len(self.sequentialNumerics["data"]) - \ 340 for index in range(len(self.sequentialNumerics["data"]) -
341 self.sequentialNumerics["length"] + 1): 341 self.sequentialNumerics["length"] + 1):
342 fwd = self.sequentialNumerics["data"][ 342 fwd = self.sequentialNumerics["data"][
343 index:index + self.sequentialNumerics["length"]] 343 index:index + self.sequentialNumerics["length"]]
344 rev = self.__strReverse(fwd) 344 rev = self.__strReverse(fwd)
345 if lowercasedPassword.find(fwd) != -1: 345 if lowercasedPassword.find(fwd) != -1:
351 patternsMatched = [] 351 patternsMatched = []
352 if self.passwordLength["count"] >= self.keyboardPatterns["length"]: 352 if self.passwordLength["count"] >= self.keyboardPatterns["length"]:
353 for pattern in self.keyboardPatterns["data"]: 353 for pattern in self.keyboardPatterns["data"]:
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 lowercasedPassword.find(fwd) != -1:
360 if fwd not in patternsMatched: 360 if fwd not in patternsMatched:
361 self.keyboardPatterns["count"] += 1 361 self.keyboardPatterns["count"] += 1
365 self.keyboardPatterns["count"] += 1 365 self.keyboardPatterns["count"] += 1
366 patternsMatched.append(rev) 366 patternsMatched.append(rev)
367 367
368 # Try to find repeated sequences of characters. 368 # Try to find repeated sequences of characters.
369 if self.passwordLength["count"] >= self.repeatedSequences["length"]: 369 if self.passwordLength["count"] >= self.repeatedSequences["length"]:
370 for index in range(len(lowercasedPassword) - \ 370 for index in range(len(lowercasedPassword) -
371 self.repeatedSequences["length"] + 1): 371 self.repeatedSequences["length"] + 1):
372 fwd = lowercasedPassword[ 372 fwd = lowercasedPassword[
373 index:index + self.repeatedSequences["length"]] 373 index:index + self.repeatedSequences["length"]]
374 if lowercasedPassword.find( 374 if lowercasedPassword.find(
375 fwd, index + self.repeatedSequences["length"]) != -1: 375 fwd, index + self.repeatedSequences["length"]) != -1:
376 self.repeatedSequences["count"] += 1 376 self.repeatedSequences["count"] += 1
377 377
378 # Try to find mirrored sequences of characters. 378 # Try to find mirrored sequences of characters.
379 if self.passwordLength["count"] >= self.mirroredSequences["length"]: 379 if self.passwordLength["count"] >= self.mirroredSequences["length"]:
380 for index in range(len(lowercasedPassword) - \ 380 for index in range(len(lowercasedPassword) -
381 self.mirroredSequences["length"] + 1): 381 self.mirroredSequences["length"] + 1):
382 fwd = lowercasedPassword[ 382 fwd = lowercasedPassword[
383 index:index + self.mirroredSequences["length"]] 383 index:index + self.mirroredSequences["length"]]
384 rev = self.__strReverse(fwd) 384 rev = self.__strReverse(fwd)
385 if lowercasedPassword.find( 385 if lowercasedPassword.find(
393 # passwordLength 393 # passwordLength
394 # credit additional length or punish "under" length 394 # credit additional length or punish "under" length
395 if self.passwordLength["count"] >= self.passwordLength["minimum"]: 395 if self.passwordLength["count"] >= self.passwordLength["minimum"]:
396 # credit additional characters over minimum 396 # credit additional characters over minimum
397 self.passwordLength["rating"] = self.passwordLength["bonus"] + \ 397 self.passwordLength["rating"] = self.passwordLength["bonus"] + \
398 (self.passwordLength["count"] - 398 (self.passwordLength["count"] -
399 self.passwordLength["minimum"]) * \ 399 self.passwordLength["minimum"]) * \
400 self.passwordLength["factor"] 400 self.passwordLength["factor"]
401 else: 401 else:
402 self.passwordLength["rating"] = self.passwordLength["penalty"] 402 self.passwordLength["rating"] = self.passwordLength["penalty"]
403 self.score["count"] += self.passwordLength["rating"] 403 self.score["count"] += self.passwordLength["rating"]
407 # penalty on it 407 # penalty on it
408 if self.passwordLength["count"] >= \ 408 if self.passwordLength["count"] >= \
409 self.recommendedPasswordLength["minimum"]: 409 self.recommendedPasswordLength["minimum"]:
410 self.recommendedPasswordLength["rating"] = \ 410 self.recommendedPasswordLength["rating"] = \
411 self.recommendedPasswordLength["bonus"] + \ 411 self.recommendedPasswordLength["bonus"] + \
412 (self.passwordLength["count"] - \ 412 (self.passwordLength["count"] -
413 self.recommendedPasswordLength["minimum"]) * \ 413 self.recommendedPasswordLength["minimum"]) * \
414 self.recommendedPasswordLength["factor"] 414 self.recommendedPasswordLength["factor"]
415 else: 415 else:
416 self.recommendedPasswordLength["rating"] = \ 416 self.recommendedPasswordLength["rating"] = \
417 self.recommendedPasswordLength["penalty"] 417 self.recommendedPasswordLength["penalty"]
548 # requirement met 548 # requirement met
549 self.basicRequirements["count"] += 1 549 self.basicRequirements["count"] += 1
550 550
551 # judge the requirement status 551 # judge the requirement status
552 self.basicRequirements["status"] = self.__determineStatus( 552 self.basicRequirements["status"] = self.__determineStatus(
553 self.basicRequirements["count"] - 553 self.basicRequirements["count"] -
554 self.basicRequirements["minimum"]) 554 self.basicRequirements["minimum"])
555 if self.basicRequirements["status"] != self.Status_Failed: 555 if self.basicRequirements["status"] != self.Status_Failed:
556 self.basicRequirements["rating"] = \ 556 self.basicRequirements["rating"] = \
557 self.basicRequirements["bonus"] + \ 557 self.basicRequirements["bonus"] + \
558 self.basicRequirements["factor"] * \ 558 self.basicRequirements["factor"] * \
562 self.basicRequirements["penalty"] 562 self.basicRequirements["penalty"]
563 self.score["count"] += self.basicRequirements["rating"] 563 self.score["count"] += self.basicRequirements["rating"]
564 564
565 # beyond basic requirements 565 # beyond basic requirements
566 self.recommendedPasswordLength["status"] = self.__determineStatus( 566 self.recommendedPasswordLength["status"] = self.__determineStatus(
567 self.recommendedPasswordLength["count"] - \ 567 self.recommendedPasswordLength["count"] -
568 self.recommendedPasswordLength["minimum"]) 568 self.recommendedPasswordLength["minimum"])
569 self.middleNumerics["status"] = self.__determineStatus( 569 self.middleNumerics["status"] = self.__determineStatus(
570 self.middleNumerics["count"] - \ 570 self.middleNumerics["count"] -
571 self.middleNumerics["minimum"]) 571 self.middleNumerics["minimum"])
572 self.middleSymbols["status"] = self.__determineStatus( 572 self.middleSymbols["status"] = self.__determineStatus(
573 self.middleSymbols["count"] - \ 573 self.middleSymbols["count"] -
574 self.middleSymbols["minimum"]) 574 self.middleSymbols["minimum"])
575 self.sequentialLetters["status"] = self.__determineBinaryStatus( 575 self.sequentialLetters["status"] = self.__determineBinaryStatus(
576 self.sequentialLetters["count"]) 576 self.sequentialLetters["count"])
577 self.sequentialNumerics["status"] = self.__determineBinaryStatus( 577 self.sequentialNumerics["status"] = self.__determineBinaryStatus(
578 self.sequentialNumerics["count"]) 578 self.sequentialNumerics["count"])

eric ide

mercurial