Objectif
Déchiffrer l’image qui a été chiffré avec la clé :
k = 0x00112233445566778899aabbccddeeff
- et l’iv
iv = 0
.
Réalisation
Tout d’abord, on importe le fichier flag.jpg.enc
dans python.
Pour pouvoir l’utiliser on ouvre le fichier en mode "rb"
et on le stocke dans une variable :
f = open("flag.jpc.enc", "rb")
enc = f.read()
f.close()
Ensuite nous devons créer notre chiffrement AES-128
.
Le mode utilisé est le mode CTR.
from Crypto.Cipher import AES
from Crypto.Util import Counter
k, iv = bytes.fromhex("00112233445566778899aabbccddeeff"), 0
counter = Counter.new(nbits=128, initial_value=iv)
cipher = AES.new(key=k, mode=AES.MODE_CTR, counter=counter)
Ensuite on peut déchiffrer le contenu de la variable enc
avec ce chiffrement :
plain = cipher.decrypt(enc)
Le code source de notre image déchiffrée est dès lors stocké dans la variable plain sous forme de bytes
.
On va alors écrire dans un nouveau fichier image le contenu de la variable plain
:
f = open("flag.jpg", "wb")
f.write(plain)
f.close()
À noter qu’en python, si le fichier flag.jpg
n’existe pas, il sera créé.
On peut donc alors ouvrir l’image et lire le flag dessus.
FCSF{879C2FEE3B9EFBC651050F881841D209}