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 :
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.