Categories
CTF Writeups

[CTF] Inter-IUT 2021 – Mystère au village des irréductibles gaulois (cryptographie)

Aujourd'hui premier write-up, je vais décrire le challenge de cryptographie "Mystère au village des irréductibles gaulois". Ce challenge était présent lors de l'édition 2021 du CTF Inter-IUT.

Nous sommes en 85 av J.-C (Jean Claude bien sûr). Comme à son habitude, Abraracourcix, le chef du village fait un grand festin. C'est alors qu'Assurancetourix, retranché pour pouvoir chanter librement, trouva une tablette magique qu'il ramena au village. Mais impossible de décoder cette dernière. Même Agecanonix ne connait pas cette écriture d'une époque lointaine. Abraracourcix décide donc de missioner Astérix et Obélix pour trouver la personne qui saura déchiffrer cette tablette. En échange vous recevrez 10 kg en pièces d'or.

" ... Supérieure en nombre ... on ne peut pas dire ... ils étaient au moins de 7 ..."

On dispose également de cette image.

Le challenge n'ayant pas de solve, un indice est ajouté par les organisateurs : Un système proche des mayas.

A la lecture de l'énoncé, dont la fin parait intéressante sans trop savoir pourquoi au départ, et de l'indice, je commence à chercher des systèmes de comptages qui se rapprochent de celui des mayas.

Après de très, trop ?, nombreuses recherches, j'apprend que le système présent sur l'image sort de toute pièce de l'esprit du créateur du challenge.

Il faut ensuite comprendre, et c'est là la partie compliquée, que chaque colonne, composée de trois "nombres", forme un nombre en ASCII, correspondant à un caractère.

C'est là que l'énoncé prend toute son importance. Rappelez vous, " ... Supérieure en nombre ... on ne peut pas dire ... ils étaient au moins de 7 ...". On comprend ainsi qu'on a affaire à un alphabet en base 7.

Il ne nous reste plus qu'à déterminer à quel chiffre de 0 à 6 correspond chaque symbole, et calculer le nombre obtenu lors du passage de cette base 7 à une base 10.

Petit rappel sur le changement de base

Prenons exemple C921 en hexadecimal et passons ce nombre en decimal.

Après avoir décomposé de cette façon, il ne nous reste plus qu'à remplacer le "C" par sa valeur décimal "12" et de calculer.

On trouve ainsi que C921 en base 16 équivaut à 51 489 en base 10. Oui c'est beaucoup.

Revenons en à nos moutons

Lorsqu'on a compris cela, il reste une difficulté, trouver à quel chiffre correspond chaque symbole. Coup de bol, on connait le format du flag, CTFIUT{...} !

Commençons par la première colonne.

Après de rapides calculs, on trouve une combinaison qui fonctionne, soit :

  • 1er symbole : 1
  • 2ème symbole : 2
  • 3ème symbole : 4

On a ainsi :

1*7^2 + 2*7^1 + 4 * 7^0 = 67

Soit "C" en ASCII. Le premier calcul est donc correct et on a ainsi découvert 3 correspondances de la base.

Si l'on suit ce même principe sur les colonnes suivantes, on finit par déchiffrer la base entière, ce qui nous donne :

Avec tous les chiffres de déchiffrés, il est alors bien plus rapide de décoder l'ensemble des colonnes.

On finit par découvrir le flag !!

CTFIUT{sYStEM^SEpT}