mirror of
https://github.com/autistic-symposium/sec-pentesting-toolkit.git
synced 2025-04-25 10:09:08 -04:00
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
#!/bin/python
|
|
|
|
__author__= 'bt3gl'
|
|
|
|
import string
|
|
import sys
|
|
import operator
|
|
|
|
|
|
FREQ_ENGLISH = [0.0749, 0.0129, 0.0354, 0.0362, 0.1400, 0.0218, 0.0174, 0.0422, 0.0665, 0.0027, 0.0047, 0.0357,0.0339, 0.0674, 0.0737, 0.0243, 0.0026, 0.0614, 0.0695, 0.0985, 0.0300, 0.0116, 0.0169, 0.0028, 0.0164, 0.0004]
|
|
|
|
|
|
def find_frequency(msg):
|
|
dict_freq = dict([(c, 0) for c in string.lowercase])
|
|
total_letters = 0.0
|
|
for c in msg.lower():
|
|
if 'a'<= c <= 'z':
|
|
dict_freq[c] += 1
|
|
total_letters += 1
|
|
list_freq = sorted(dict_freq.items(), key=operator.itemgetter(1))
|
|
return [(c, freq/total_letters) for (c, freq) in list_freq]
|
|
|
|
|
|
|
|
def main(filename):
|
|
with open(filename, 'r') as f:
|
|
cipher = f.readlines()
|
|
cipher = cipher[0].strip()
|
|
flist = find_frequency(cipher)
|
|
elist = dict((k, value) for (k, value) in zip(string.lowercase, FREQ_ENGLISH))
|
|
elist = sorted(elist.items(), key=operator.itemgetter(1))
|
|
trans, key = '', ''
|
|
for i, f in enumerate(flist):
|
|
trans += f[0]
|
|
key += elist[i][0]
|
|
print "CIPHER: %s -> %.5f, ENGLISH: %s -> %.5f" %(f[0], f[1], elist[i][0], elist[i][1])
|
|
print "Key is " + key + " for " + trans
|
|
|
|
# print key sorted to translate to a-z
|
|
res = zip(trans, key)
|
|
res.sort()
|
|
trans, key = '', ''
|
|
for letter in res:
|
|
trans += letter[1].upper()
|
|
key += letter[0].upper()
|
|
print "tr [" + key + "] [" + trans + "]"
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(str(sys.argv[1]))
|
|
|