-
Notifications
You must be signed in to change notification settings - Fork 0
/
tester.py
89 lines (62 loc) · 1.85 KB
/
tester.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from cracker import crack
from encoder import encoder
from random import choice
def main():
text = readFile("ciphers.txt")[0]
encoded = encoder(text)
key = encoded["key"]
plainText = encoded["plain"]
cipher = encoded["cipher"]
keyMap = crack(cipher)
# print(getUnfound(keyMap))
for key in keyMap:
print(key + ": " + str(keyMap[key]))
print(getInitGuess(keyMap))
def readFile(fileName):
with open(fileName) as file:
lines = [line.rstrip() for line in file]
return lines
def getDefinite(keyMap):
definite = []
for key in keyMap:
if len(keyMap[key]) == 1:
definite.append(keyMap[key][0])
return definite
def getCounts(keyMap):
definite = getDefinite(keyMap)
counts = []
for key in keyMap:
if len(keyMap[key]) != 1:
counts.append(len(keyMap[key]))
return counts
def getInitGuess(keyMap):
guess = list("__________________________")
alphabet = "abcdefghijklmnopqrstuvwxyz"
for key in keyMap:
if len(keyMap[key]) == 1:
index = alphabet.index(keyMap[key][0])
guess[index] = key
for i in range(1, 26):
for key in keyMap:
if len(keyMap[key]) == i:
value = choice(keyMap[key])
while value in guess:
value = choice(keyMap[key])
index = alphabet.index(value)
guess[index] = key
print("".join(char for char in guess))
print(alphabet)
print("hi")
def getUnfound(keyMap):
found = []
unfound = []
alphabet = "abcdefghijklmnopqrstuvwxyz"
for key in keyMap:
for char in keyMap[key]:
if char not in found:
found.append(char)
for letter in alphabet:
if letter not in found:
unfound.append(letter)
return unfound
main()