code utilisé: getElementById(), charAt(), style, backgroundColor

La stéganographie

La page sur les images vous aidera peut-être… et vous trouverez ici un exemple plus complet de stéganographie.

Le principe

La stéganographie est est l'art de cacher des messages. Ici il s'agit de cacher une image, disons une courge à l'intérieur d'une autre image, disons un hibou. Un logiciel va transformer légèrement l'image de couverture, celle du hibou , en image codée, qui lorsqu'on la décodera, donnera une image très proche de celle de la courge.

Image de couverture Image à cacher
On traite ces images avec un logiciel de stéganographie…
Image codée Image décodée

Le procédé simplifié

Le procédé utilisé par les logiciels, en particulier celui présenté, est plus subtil que ce que nous allons décrire, mais l'idée générale est semblable.

Pixel couverture Pixel à cacher
# #
# #
Pixel codé Pixel décodé

code hexadécimal

En cliquant sur Exemple, vous affichez deux codes de couleurs hexadécimaux. Vous pouvez aussi les entrer à la main . En cliquant sur Afficher, vous faites apparaître deux carrés, que l'on appelera pixels, le premier servant de couverture à l'autre. Chaque code comporte 6 caractères choisis dans {0,1,2,…,8,9,a;b;c;d;e;f}. Les deux premiers correspondent à la quantité de rouge , le premier caractère est très déterminant (il compte 16 fois plus que le deuxième). On va dire que le 1er, 3e et 5e sont forts, les autres faibles

Le codage

L'idée est de garder les caractères forts de la couleur du premier pixel et de remplacer ses caractères faibles par les caractères forts de la couleur du deuxième pixel . Ainsi, quand on code le premier pixel, sa couleur change peu.

Cliquer sur Codage.

Le décodage

Pour révéler l'image cachée, on va remplacer la couleur de code #123456 par 214365, (on echange le premier avec le deuxième caractère, le troisième avec le quatrième et le cinquiéme avec le sixième. La conséquence est que le pixel révélé a les mêmes caractères forts que le pixel que l'on voulait cacher et la couleur est à peu près la même.

résumé en couleur

Travaux pratiques

Téléchargez l'image hibou.bmp et code.bmp et ouvrez les avec Gimp ou un autre logiciel de traitement d'image, zoomer à 800% et, avec la pipette, relevez le code du premier pixel (en haut à gauche) dans chaque image. Pour hibou.bmp, on trouve 67705a et pour code 6a725b.Avec le zoom, les différences apparaissent plus nettement

Le logiciel et la documentation

J'ai utilisé le logiciel Revelation disponible ici . Il est écrit en Java et d'utilisation très simple sur les fichier .bmp. J'ai essayé aussi Steghide qui permet de cacher du texte avec mot de passe dans une image. Il est disponible ici .

Visitez la page wiki ici, ainsi que celle-ci sur bibmath.net.

Fragments de code

décodage


hexadec=	hexaco.charAt(1)+hexaco.charAt(0)
		+hexaco.charAt(3)+hexaco.charAt(2)	
		+hexaco.charAt(5)+hexaco.charAt(4);

On récupére le deuxiéme caractère de la chaine codée : hexaco.charAt(1), on lui adjoint le premier : +hexaco.charAt(0)

affichage de couleur

On modifie la couleur de l'objet dont l'identité est couv avec style.backgroundColor.

function affiche()
{	
	var hexacouv="";
	var hexacach="";
	hexacouv="#"+document.machineSteg.couverture.value;
	hexacach="#"+document.machineSteg.cache.value;
	document.getElementById("couv").style.backgroundColor=hexacouv;
	document.getElementById("cach").style.backgroundColor=hexacach;
}

Les photos

La photo du hibou ( asio otus ) appartient à mon fils Élie Roux et j'ai pris la photo de la courge ( cucurbita moschata ) après des heures d'affût, dans un environnement hostile.