Difficulté: facile

Points: 100

Challenge

Énoncé

Solution

Il s’agit du challenge d’introduction de la catégorie Cryptanalyse du 404CTF 2023. L’énoncé nous donne une chaine hexadécimale et une “recette” d’instruction pour retrouver le flag. Suivons donc cette recette à la lettre 👨‍🍳 :

L’outil CyberChef est très utile pour effectuer ce genre de transformation sur une chaîne de caractères. Dans un premier temps utilisons le pour décoder l’hexadécimal :

Cyberchef hedaxécimal

La recette nous indique maintenant de “développer” afin de faire disparaitre les chiffres. Dans cette chaîne chaque lettre est précédée d’un nombre. Il faut comprendre que le code Deadfish a été “compressé” de façon à ce que le nombre qui précède chaque lettre indique son nombre de répétitions dans le Deadfish. Utilisons le script Python suivant pour développer cette chaîne :

cipher = "2i1s4i1s15d1o49i1o4d1o3i1o15d1o22d1o20d1o19i1o7d1\
o5d1o2i1o55i1o1d1o19d1o17d1o18d1o29i1o12i1o26i1o8d1o59d1o27\
i1o6d1o17i1o12d1o7d1o5i1o1d1o2d1o12i1o9d1o26d1o"
deadfish = ""

count = 0
for c in cipher:
    if c.isdigit():
        count = 10 * count + int(c)
    else:
        deadfish += count * c
        count = 0
        
print(deadfish)

Deadfish est, à l’instar du Brainfuck, un langage de programation utilisant très peu de caractères (i, s, d, o). Dcode propose un interpréteur de Deadfish nous permettant de passer à l’étape suivante :

Dcode interpréteur Deadfish

Enfin la dernière étape consiste à décoder la base 85 pour obtenir le flag en ASCII. Réutilisons Cyberchef puis récupérons nos premiers points de la catégorie Cryptanalyse :

Cyberchef base85