You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.5 KiB
42 lines
1.5 KiB
import re
|
|
input = "cqjxjnds"
|
|
|
|
mistakeable_letters = re.compile(r"([iol])")
|
|
doubles = re.compile(r"(.)\1")
|
|
|
|
def gen_new_password(pInput):
|
|
new_password = False
|
|
ret = pInput
|
|
while new_password != True:
|
|
characters = list(ret)
|
|
char = characters[len(characters)-1]
|
|
characters[len(characters)-1] = chr(ord(char) + 1)
|
|
for i in range(len(characters)-1, 0, -1):
|
|
if characters[i] == '{':
|
|
characters[i] = 'a'
|
|
characters[i-1] = chr(ord(characters[i-1]) + 1)
|
|
ret = "".join(characters)
|
|
|
|
no_mistakable_letter = False
|
|
two_doubles = False
|
|
letter_sequence = False
|
|
mistakeable_letter_count = len(re.findall(mistakeable_letters, ret))
|
|
if mistakeable_letter_count == 0:
|
|
no_mistakable_letter = True
|
|
|
|
double_count = len(re.findall(doubles, ret))
|
|
if double_count >= 2:
|
|
two_doubles = True
|
|
|
|
for i in range(0, len(characters)-3):
|
|
if ord(characters[i+1]) == ord(characters[i]) + 1 and ord(characters[i+2]) == ord(characters[i]) + 2:
|
|
letter_sequence = True
|
|
|
|
if no_mistakable_letter == True and two_doubles == True and letter_sequence == True:
|
|
new_password = True
|
|
return ret
|
|
|
|
password_1 = gen_new_password(input)
|
|
password_2 = gen_new_password(password_1)
|
|
print("First new password: " + password_1)
|
|
print("Second new password: " + password_2)
|