ecb_cut_and_paste.py (929B)
1 import re 2 from Crypto.Cipher import AES 3 from Crypto import Random 4 5 key = Random.new().read(AES.block_size) 6 7 def encrypt(msg): 8 pad_len = AES.block_size - (len(msg) % AES.block_size) 9 return AES.new(key, AES.MODE_ECB).encrypt(msg + ''.join([chr(pad_len) for i in range(pad_len)])) 10 11 def decrypt_and_parse(cipher): 12 return parse_string_to_dict(AES.new(key, AES.MODE_ECB).decrypt(cipher)) 13 14 def parse_string_to_dict(token): 15 return {entry.split('=')[0] : entry.split('=')[1] for entry in token.split('&')} 16 17 def profile_for(email): 18 return encrypt("email=" + re.sub("[&|=]", '', email) + "&uid=10&role=user") 19 20 admin_cipher = profile_for("x04x04x04x04x04x04x04x04x04x04adminx04x04x04x04x04x04x04x04x04x04x04") 21 email_cipher = profile_for("michael770211@gmail.comx04x04x04x04x04x04") 22 23 print decrypt_and_parse(email_cipher[:AES.block_size * 3] + admin_cipher[AES.block_size : 2 * AES.block_size])