Path: blob/master/Authenticated-Encryption/AES-GCM/Attack-Forbidden/Challenges/Forbidden/task.py
1074 views
from cryptography.hazmat.backends import default_backend1from cryptography.hazmat.primitives.ciphers import (2Cipher, algorithms, modes3)4#from secret import key567def encrypt(iv, key, plaintext, associated_data):8encryptor = Cipher(9algorithms.AES(key),10modes.GCM(iv),11backend=default_backend()12).encryptor()13encryptor.authenticate_additional_data(associated_data)14ciphertext = encryptor.update(plaintext) + encryptor.finalize()1516return (ciphertext, encryptor.tag)171819def decrypt(key, associated_data, iv, ciphertext, tag):20decryptor = Cipher(21algorithms.AES(key),22modes.GCM(iv, tag),23backend=default_backend()24).decryptor()25decryptor.authenticate_additional_data(associated_data)2627return decryptor.update(ciphertext) + decryptor.finalize()282930iv = "9313225df88406e555909c5aff5269aa".decode('hex')31key = "\x1eh_[Q\xa0\xae\xfb\x9b,\x11\x85\xfb\xa6\xbe\xaa"3233ciphertext1, tag1 = encrypt(iv, key, "From: John Doe\nTo: John Doe\nSend 100 BTC", "John Doe")34ciphertext2, tag2 = encrypt(iv, key, "From: VolgaCTF\nTo: VolgaCTF\nSend 0.1 BTC", "VolgaCTF")35ciphertext3, tag3 = encrypt(iv, key, "From: John Doe\nTo: VolgaCTF\nSend ALL BTC", "John Doe")363738