from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Util.number import bytes_to_long
from hashlib import sha256
from mpmath import mp
import os

mp.dps = 2000

with open('flag.txt', 'r') as f :
    FLAG = f.read()

ks = [os.urandom(16) for _ in range(8)]
ms = [mp.mpf(bytes_to_long(k)) for k in ks]
hints = []

for i, m in zip(range(2, 10), ms) :
    res = mp._nthroot(m, i)
    hint = str(res).split('.')[1]
    hints.append(hint)

print(f"{hints = }")

final_key = sha256(b"".join(ks)).digest()[:16]
cipher = AES.new(final_key, AES.MODE_CBC)
ct = cipher.encrypt(pad(FLAG.encode(), 16))
print(f"iv = {cipher.iv}")
print(f"{ct = }")