Stéganographie

Le cadenas de Mario

Mario a perdu la combinaison à 4 lettres du cadenas qui sécurise son coffre. Le code est caché dans une image numérique.
C'est de la stéganographie.


Votre objectif : Utiliser le protocole de codage pour retrouver le code à 4 lettres.

Protocole de codage :

  • Chaque lettre du code à cacher est représentée par son code ASCII en binaire. Par exemple, le code ASCII de la lettre "A" est 01000001 (voir tableau de correspondance ASCII ci-joint).

  • La première lettre est codée à partir du pixel de coordonnées (colonne 19 ; ligne 29) jusqu'au pixel(colonne 26; ligne 29) .

  • Une seule lettre est cachée par ligne. La deuxième lettre est codée à partir du pixel (colonne 19 ; ligne 28) … L'origine est choisie en bas à gauche de l'image.

  • Les caractères « 0 » ou « 1 » sont codé dans les composantes RVB des pixels : si le nombre est pair il code pour un « 0 », s'il est impair, pour un « 1 ».

  • Pour réaliser ce codage, les valeurs des composantes RVB des pixels d'origine ont pu être modifiées, en ajoutant 1, pour s'assurer de leur parité.


Exemple pour coder la lettre V :

En appliquant ce système de code à l'image de gauche, on obtient l'image de droite. On ne perçoit aucune différente à l’œil nu.

Les outils pour coder/décoder :

Ouvrir l’image mario-code.png dans le logiciel ImLab (téléchargeable ici) et afficher son tableau de nombres.

Protocole de décodage :



Votre objectif : Utiliser le protocole de décodage pour retrouver le code à 4 lettres caché dans l'image mario-code.png (connaissant mario.png)

Chaque composante R,V,B de chaque pixel est remplacé
par 0 si elle est pair,
1 si elle est impair.

iNDICE : vérifier que la 1ere lettre est
codée à partir du pixel de coordonnées (colonne 19 ; ligne 29) jusqu'au pixel(colonne 26; ligne 29) vaut ((122,47,40)(116,46,42)(111,29,22))

Vérifier que cela correspond au code 01000011

Vérifier que cela correspond à la lettre C

Faire la même chose pour les 3 lettres restantes du code

Ce qu'il faut retenir :

  • Une image est constituée de pixels.

  • La définition d’une image est le nombre total de pixels : (3 mégapixels = 3 millions de pixels)

  • Une image peut être représentée par un tableau de nombres où une case représente un pixel

  • La position du pixel est repérée par sa colonne (noté x) et sa ligne (noté y) par rapport à une origine.

  • L'origine (x=0 ; y=0) est située dans un coin de l’image (En bas à gauche dans le logiciel ImLab. En haut à gauche dans le langage Python.).

Attention : Une image de 100 pixels en hauteur est représentée par un tableau de 100 lignes numérotées de 0 à 99.

  • La couleur du pixel s’obtient par synthèse additive des couleurs des 3 sous pixels : rouge, vert et bleu (RVB).

  • La couleur d’un sous-pixel est associée à un nombre allant de 0 à 255.

  • Pour obtenir un pixel gris ses trois sous-pixels doivent avoir la même valeur.