cryptopals

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit fe7eb3c653e1221b2a752ab9b42823210669a2e6
parent a3619d7b1afcb7c3eb8f146bb65803ef52c63914
Author: mpizzzle <michael.770211@gmail.com>
Date:   Mon, 23 Oct 2017 23:02:21 +0100

set 2 challenge 13 complete

Diffstat:
Mset2/ecb_cut_and_paste.py | 16++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/set2/ecb_cut_and_paste.py b/set2/ecb_cut_and_paste.py @@ -7,19 +7,19 @@ def random_key(): key = random_key() -def encrypt(key, msg): - return AES.new(key, AES.MODE_ECB).encrypt(msg + ''.join(['\x04' for i in range(AES.block_size - (len(msg) % AES.block_size ))]) if len(msg) % AES.block_size != 0 else msg) +def encrypt(msg): + return AES.new(key, AES.MODE_ECB).encrypt(msg + ''.join(['\x04' for i in range(AES.block_size - (len(msg) % AES.block_size))]) if len(msg) % AES.block_size != 0 else msg) -def decrypt_and_parse(key, cipher): +def decrypt_and_parse(cipher): return parse_string_to_dict(AES.new(key, AES.MODE_ECB).decrypt(cipher)) def parse_string_to_dict(token): return {entry.split('=')[0] : entry.split('=')[1] for entry in token.split('&')} def profile_for(email): - email_entry = "email=" + re.sub("[&|=]", '', email) - cipher = encrypt(key, email_entry) - return decrypt_and_parse(key, cipher) + return encrypt("email=" + re.sub("[&|=]", '', email) + "&uid=10&role=user") -encoded_user_profile = "michael770211@gmail.com&uid=10&role=admin" -print profile_for(encoded_user_profile) +admin_cipher = profile_for("\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04admin\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04\x04") +email_cipher = profile_for("michael770211@gmail.com\x04\x04\x04\x04\x04\x04") + +print decrypt_and_parse(email_cipher[:AES.block_size * 3] + admin_cipher[AES.block_size : 2 * AES.block_size])