Update crack.py
This commit is contained in:
@@ -1 +1,48 @@
|
||||
|
||||
from itertools import product as col
|
||||
|
||||
def generator(key, char, length):
|
||||
char_len = key.count(char)
|
||||
key_piece = key[:length - char_len:]
|
||||
list_keys = [key_piece + "".join(i) for i in list(col([chr(i) for i in range(65, 65 + 26)], repeat=char_len))]
|
||||
return list_keys
|
||||
|
||||
def vigenere(x, key):
|
||||
lst_final = []
|
||||
code = list(x)
|
||||
j = 0
|
||||
for i, char in enumerate(code):
|
||||
if char.isalpha():
|
||||
code[i] = key[(i + j) % len(key)]
|
||||
lst_final.append((ord(x[i]) - ord(code[i])) % 26)
|
||||
else:
|
||||
lst_final.append(ord(char))
|
||||
j -= 1
|
||||
for i, char in enumerate(code):
|
||||
if char.isalpha():
|
||||
lst_final[i] = chr(lst_final[i] + 65)
|
||||
else:
|
||||
lst_final[i] = chr(lst_final[i])
|
||||
return ''.join(lst_final)
|
||||
|
||||
phrase = "OOGNVMTNTCLUOGZSZSHTXAZGMOMEPKWDDQM"
|
||||
possibleKeys = []
|
||||
with open("english.txt", "r", encoding="utf-8") as dictionary:
|
||||
for key in dictionary:
|
||||
possibleKeys.append(key.strip("\n"))
|
||||
i = 1
|
||||
possibleAnswers = {}
|
||||
answerToPossibleNr = {}
|
||||
for x in possibleKeys:
|
||||
print("Attempt: ", i)
|
||||
i += 1
|
||||
value = 0
|
||||
decrypted = vigenere(phrase, x).replace("\n", "")
|
||||
for j in possibleKeys:
|
||||
if j in decrypted:
|
||||
value += len(j)
|
||||
possibleAnswers[x + "/" + decrypted] = value
|
||||
possibleAnswers = dict(sorted(possibleAnswers.items(), key=lambda item: item[1], reverse=True))
|
||||
with open("result.txt", "w", encoding="utf-8") as file:
|
||||
for x in possibleAnswers:
|
||||
file.write(x + " " + str(possibleAnswers[x]) + "\n")
|
||||
|
||||
Reference in New Issue
Block a user