detect_single_character_xor_char_frequency.py (487B)
1 hex_strings = open('files/4.txt').read().splitlines() 2 3 frequent_letters = "etaoi " 4 candidate = "" 5 candidate_frequency = 0 6 7 for hex in hex_strings: 8 for plaintext in [''.join([chr(x ^ ord(a)) for a in hex.decode("hex")]) for x in range(256)]: 9 frequency = sum([plaintext.count(frequent_letters[n]) for n in range(len(frequent_letters))]) 10 11 if frequency > candidate_frequency: 12 candidate = plaintext 13 candidate_frequency = frequency 14 15 print candidate