Activité Bonus :

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). 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és 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érence à 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.

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

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.