Write-Up
title: Cicéron
category: Cryptographie
difficulty: Facile
point: 25
author: Maestran
description:
Cicéron c’est pas carré.
En décodant ce challenge, vous allez trouver une chaine : cybnxxxxxxxxxxxxxxxx
Le flag est alors CYBN{XXXXXXXXX}
Analyse du fichier et recherches
Une chose saute aux yeux en ouvrant le fichier : ce ne sont que des nombre à 2 chiffres.
La description nous disant Cicéron c'est pas carré
, on peut rechercher sur google carré cryptographie
. On tombe alors sur le Carré de Polybe. Il s’agit simplement d’une méthode de chiffrement par substitution qui s’appuie sur un matrice 5x5 avec l’alphabet à l’intérieur. Cette mattrice ressemble à cela :
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | A | B | C | D | E |
2 | F | G | H | I/J | K |
3 | L | M | N | O | P |
4 | Q | R | S | T | U |
5 | V | W | X | Y | Z |
Le texte chiffré à l’aide de cette méthode ressemble étrangement à notre texte, partons là dessus.
Déchiffrement
Petit script python pour déchiffrer tout ça :
with open('./ciceron.txt') as f:
# On récupère les nombres et on les parse en tuple de 2 chiffres
msg = [(int(i[0]), int(i[1])) for i in f.read().split(' ')]
# La matrice de substitution
matrix = ['ABCDE', 'FGHIK', 'LMNOP', 'QRSTU', 'VWXYZ']
# Récupère les lettres dans la matrice et les assemble
print(''.join([matrix[code[0]-1][code[1]-1] for code in msg]))
Output: HLLUHSUEEHTALORSDYAPPROEONDHRSONAFONHSANTERANFHNPOURVOHRSACCOMPLHRSONEOREAHTQUHPARSURCROHTPROEHTAAUPAYSPUHSQUUNMOHSPLUSTARDTOUTUNCGACUNSACCORDAHTPOURNANTHRLHNTRHFANTELUXQUHSOURDAHTDUPUHTSDUNEORTPOUVOHRCURATHESURTOUTANTHCATARRGALMAHSSAPPLHQUANTAUSSHALALBUFOALANCGHLOPSAUXBUBONSAUXCALCULSAUXCGALAZHONSAUTRHSMUSAUPHTYRHASHSAUMALBLANCAUPRURHFOAUMALCADUCAUFLOSSANTGRAXELAFCYBNBRAVOTOTOLOTODODO
On trouve tout à la fin : CYBNBRAVOTOTOLOTODODO
Le flag : CYBN{BRAVOTOTOLOTODODO}