from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64

key = b'A'*32  # Unknown 32-byte key
encrypted_flag = base64.decodebytes(b"uS0D11dq3RM9QimRWfXcewwQdoxYwrZRNUGT205pDfQ=")

def encrypt(plaintext, flag):
    padded = pad(plaintext + flag, 32)
    cipher = AES.new(key, AES.MODE_ECB)

    ciphertext = cipher.encrypt(padded)
    return ciphertext.hex()


def bruteforce():
    flag = ''
    total = 64 - 1
    chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-~!?#%&@{}'

    while True:
        payload = '1' * (total - len(flag))
        ciphertext_1 = encrypt((payload+flag).encode())

        for c in chars:
            ciphertext_2 = encrypt((payload + flag + c).encode())
            # Comapare the middle blocks ([32:64]) of each encrypted text
            if ciphertext_2[64:128] == ciphertext_1[64:128]:
                flag += c
            print(flag)
            break
        
bruteforce()
