Bébé nageur

Résolution

Il s’agit d’un chiffrement affine, on est donc face à un problème du type c(x) = ax+b [n], où a et b sont les clés de notre chiffre. On peut effectuer un brute-force sur a et b (les valeurs possibles étant très restreintes). L’autre façon de faire est de récupérer a et b en faisant une attaque à clair connu. En effet, le format du flag est 404CTF{ ... }. De plus, on a la correspondance entre les caractères et leur représentation numérique. En prennant les deux premiers caractères du flag, on a un système du type :

ax1 + b = y1 et ax2 + b = y2

Qui est équivalent à

a = (y2 - y1) * (x2 - x1) ^(-1) [n]
b = y1 - ax1 [n] 

On en déduit a et b, on déchiffre ensuite avec la fonction : f(y) = a^(-1)*(y-b) [n]

Read More

Le petit bain

Résolution

Il s’agit de la suite du challenge Bébé nageur. Ce challenge est inspiré du principe de chiffrement par blocs avec un chiffrement affine. Ce chiffrement est composé de 6 rounds, chaque round a la forme suivante : round_schema Cependant, on remarque deux propriétés particulières de cette permutation p:

  • p^6 est l’identité
  • Pour chaque sous-bloc de 6 caractères, la permutation est identique
Read More