def detect_xor(file_name): f = open(file_name, 'r') d = {} for line in f: line = line.rstrip().lstrip() candidate = decryptor.search_single_byte_xor_key(line) if candidate is None: continue freq = decryptor.analyze_char_freq(candidate) score = decryptor.score_char_freq(freq) d[score] = candidate return d[min(d)]
def test_score_char_freq(self): perfect_score = ''.join(key * int(value*100 * 10) for key, value in decryptor.english_letter_frequencies.items()) self.assertEqual(round(decryptor.score_char_freq(perfect_score),1), 0) self.assertEqual(decryptor.score_char_freq('/'), 100*10)