Solution de BuzzYbis pour Le Rat Conteur

intro crypto

5 décembre 2023

Table des matières

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}