Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import binascii
- potential_results = []
- character_frequencies = {
- 'a': .08167, 'b': .01492, 'c': .02782, 'd': .04253,
- 'e': .12702, 'f': .02228, 'g': .02015, 'h': .06094,
- 'i': .06094, 'j': .00153, 'k': .00772, 'l': .04025,
- 'm': .02406, 'n': .06749, 'o': .07507, 'p': .01929,
- 'q': .00095, 'r': .05987, 's': .06327, 't': .09056,
- 'u': .02758, 'v': .00978, 'w': .02360, 'x': .00150,
- 'y': .01974, 'z': .00074, ' ': .13000
- }
- encoded = binascii.unhexlify(enc_str) #hex to byte strings
- for xor_key in range(256):
- decoded = ''.join(chr(b ^ xor_key) for b in encoded)
- if decoded.isprintable():
- score = sum([character_frequencies.get(byte, 0) for byte in decoded], [0])
- data = {'message':decoded, 'score':score, 'key':xor_key}
- potential_results.append(data)
- best_score = sorted(potential_results, key=lambda x: x['score'], reverse=True)
- for item in best_score:
- print("{}: {}".format(item.title(), best_score[item]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement