2 min read

[CTF GEMA] Encrypt

CTF GEMA Groupe 2025

Niveau de Difficulté : Medium

Catégorie du Challenge : Reverse

Description :

Cours !

Steps to Solve

Analyser le fichier à l'aide de l'outil IDA

Local Image

Il semble que le code lise l'image en entrée « input_image.png » et le nom de la sortie « encrypted.bin » La sortie nous est donnée

donc n'analysons pas le code pour voir comment la sortie est encodée...

Local Image

On remarque qu'il s'agit de la fonction encrypt ... Cette fonction contient des fonctions sub_144C sub_1559...

Voyons voir sub_144C

Local Image

Ok, comme nous le voyons, il y a un XOR qui se produit ici, l'entrée avec la clé :

Clé = 0xAA

Local Image

Rien d'intéressant ici ...

Maintenant c'est juste un XOR avec la clé 0xAA

Exécutons notre code :

def decrypt(input_file, output_file, key=0xAA):
    with open(input_file, "rb") as f:
        encrypted_data = bytearray(f.read())

    decrypted_data = bytearray(b ^ key for b in encrypted_data)

    with open(output_file, "wb") as f:
        f.write(decrypted_data)

decrypt("encrypted.bin", "decrypted_image.png")
print("Decryption complete!")
Local Image
Local Image

Flag

FLAG{90908833555676676}