from Crypto.Cipher import AES
from itertools import product
plaintext="MessaggioChiaro0"
pchiave1="ChiaveSegretaX"
k1=pchiave1+"23"
k2=pchiave1+"bc"
enc1=AES.new(k1,AES.MODE_ECB)
enc2=AES.new(k2,AES.MODE_ECB)
cifra=enc2.encrypt(enc1.encrypt(plaintext))
## MEET IN THE MIDDLE
# INIZIALIZZA DIZIONARI
encoded={}
decoded={}
# POSSIBILI PASSWORDS
for x in product(range(128),repeat=2):
psx=pchiave1
suff="".join([ chr(t) for t in x])
psx=psx+suff
enc=AES.new(psx,AES.MODE_ECB)
encoded[enc.encrypt(plaintext)]=psx
decoded[enc.decrypt(cifra)]=psx
# Cerca collisioni
meet=[ (encoded[key],decoded[key])
for key in encoded.keys() if key in decoded.keys() ]
print(meet)