investigation ECHELON images/petit_logo_jcd.gif

stéganographie ...... retour

 

 

 

 

la stéganographie est l'art de cacher un texte dans une image ou un fichier son.

 

[le jeu] devenez espion vous même !  

 

exupery.gif exupery_hidden.gif
avant après

ces deux images ont l'air identiques, pourtant l'image de droite cache un message secret.
pour le lire il faut vous procurer le programme de stéganographie qui va bien sur internet,
chercher le mot de passe (il s'agit du prénom du poète de charleville),
lire le message, trouver qui en est l'auteur,
m'envoyer un
mail avec la réponse. j'inscrirai ici le nom du premier espion qui aura trouvé la réponse (à moins, bien sûr, qu'il ne souhaite garder l'anonymat ! ).

 

 

le jeu a débuté le 07/02/2002........
[.actuellement ........
(2) réponses exactes.]
Jozette tigre13 (08/03/2002)...
William Bloyed (04/10/2002)...

 

si vous ne trouvez pas, il vous reste la possibilité de lire les textes de Saint Exupéry.
(vous aurez noté la malice d'utiliser une photographie de l'aviateur écrivain pour transporter un message écrit).


la stéganographie
le programme utilisé pour cacher le message dans la photographie de St Exupéry, je l'ai trouvé sur internet. Très facilement, il faut dire. Il doit en exister de nombreux autres.
celui-ci est relativement élaboré. Il permet le cryptage du message et gère différents formats d'images ou de sons. L'insertion d'un document dans l'image se fait par "glisser-déposer" sous windows.
si ce sont les terroristes et les tranfiquants de cocaïne qui utilisent ce genre de programme, on peut dire qu'on leur rend la vie facile !
cependant, la réalisation d'un programme de stéganographie est simple. pour illustrer cette technique, j'ai réalisé un prototype en quelques heures. il est sommaire, mais il fonctionne !

[le principe]

un fichier image comme celui-ci,

gris.gif

a une dimension de 100 points sur 100 points,
soit 10 000 points (10 000 pixels).
Chaque point est représenté par trois couleurs
rouge, vert, bleu.
et pour chacune des trois couleurs primaires, on dispose de 256 valeurs (un octet).
Si on modifie chaque octet d'une unité (en remplaçant, par exemple 201 par 200)
on peut s'attendre que la différence sera invisible à l'oeil,
car cela correspond une variation de seulement 1/256ème (0,3%).
En utilisant ces bits "invisibles" pour stocker des caractères, on peut cacher
dans un fichier de 10 000 points, jusqu'à 3750 caractères (8 bits pour chaque caractère),
=> 10 000 caractères * 3 couleurs / 8 bits = 3750,
c'est à dire un texte de
plusieurs pages.


[la mise en oeuvre]

Le prototype utilise une image en format BMP
Le fichier possède un en-tête de 53 octets (adresse 35h) commençant par BM
Ensuite, chaque pixel est codé avec trois octets RVB
Pour cette image orange, les pixels sont codés alternativement 00 80 FF ( bleu=00, vert=80, rouge=FF).

000000 42 4D 3E 75 00 00 00 00 00 00 36 00 00 00 28 00 BM>u......6...(.
000010 00 00 64 00 00 00 64 00 00 00 01 00 18 00 00 00 ..d...d.........
000020 00 00 30 75 00 00 61 0F 00 00 61 0F 00 00 00 00 ..0u..a...a.....
000030 00 00 00 00 00 00 00 80 FF 00 80 FF 00 80 FF 00 ................
000040 80 FF 00 80 FF 00 80 FF 00 80 FF 00 80 FF 00 80 ................
000050 FF 00 80 FF 00 80 FF 00 80 FF 00 80 FF 00 80 FF ................
000060 00 80 FF 00 80 FF 00 80 FF 00 80 FF 00 80 FF 00 ................

il pourrait exister des variantes du format BMP - je n'ai pas vérifié - pour lesquelles le programme proposé ne fonctionnerait pas.


[le codage]

Le texte suivant est inséré dans l'image :

Petit texte d'essai à insérer dans l'image BMP.

ce qui correspond aux codes suivants

000000 50 65 74 69 74 20 74 65 78 74 65 20 64 27 65 73 Petit texte d'es
000010 73 61 69 20 E0 20 69 6E 73 E9 72 65 72 20 64 61 sai . ins.rer da
000020 6E 73 20 6C 27 69 6D 61 67 65 20 42 4D 50 2E 20 ns l'image BMP.

le programme "addfile.bas" permet de placer ce texte dans l'image.
le résultat obtenu est le suivant :

000000 42 4D 3E 75 00 00 00 00 00 00 36 00 00 00 28 00 BM>u......6...(.
000010 00 00 64 00 00 00 64 00 00 00 01 00 18 00 00 00 ..d...d.........
000020 00 00 30 75 00 00 61 0F 00 00 61 0F 00 00 00 00 ..0u..a...a.....
000030 00 00 00 00 00 00 00 80 FE 00 81 FE 01 80 FF 00 ................
000040 81 FE 00 81 FF 00 80 FE 01 80 FF 01 81 FE 01 80 ................
000050 FE 01 80 FF 01 80 FE 00 81 FE 01 81 FF 00 80 FE ................
000060 00 80 FE 01 80 FE 00 80 FF 00 81 FF 01 80 FF 00 ................

pour vérifier que cela fonctionne, il faut extraire le bit de poids faible de chaque octet du fichier image et reconstituer les codes du texte inséré :

00 -> bit 0
80 -> 0
FE -> 0
00 -> 0

81 -> 1
FE -> 0
01 -> 1
80 -> 0
...............ce qui permet de reconstituer 0000 1010
................ il faut encore retrouver l'ordre initial 0101 0000 soit 50h (lettre P)
................ qui est bien le caractère recherché !

pour l'octet suivant :FF 00 81 FE - 00 81 FF 00 -> les bits sont 1010-0110
et après restauration de l'ordre initial, 65h (e), etc.


[le matériel]

le programme "addfile.bas" permet l'insertion d'un texte dans une image.
il demande un nom de fichier image BMP :
orange.bmp
et un texte :
petit.txt

le résultat est dans hidden.bmp

le programme "extfile.bas" permet de récupérer le texte caché dans l'image.
il demande un nom de fichier image BMP :
hidden.bmp

le résultat est dans : clear.txt

 


[l'auto critique]

les programmes addfile et extfile sont élémentaires. ils ne savent traiter que le format BMP (un des formats BMP ?) et ne font aucun contrôle sur les noms de fichiers.
ils fonctionnent sous DOS; ce n'est pas très pratique. ils sont très lents. il faut deux programmes. ce serait mieux de les fusionner en un seul.
le codage est des plus simples. le programme de décodage ne peut pas vérifier si un fichier a effectivement été caché dans l'image traitée. on ne sait rien non plus, sur la longueur du fichier à extraire, ce qui fait que des caractères parasites peuvent apparaître à la fin du fichier résultat.
des améliorations sont envisageables pour rendre le codage plus discret. on pourrait utiliser un algorithme de cryptage avec mot de passe (comme le fait le programme utilisé au début de cette page). on peut imaginer aussi de ne pas cacher le texte systématiquement au début de l'image, de le découper en plusieurs parties, de les mélanger de manière un peu plus astucieuse.
enfin il pourrait être possible de placer plusieurs fichiers dans la même image (mais ce serait quand même un luxe !).
si vous utilisez ce logiciel, il faut choisr une image qui ne risque pas d'attirer l'attention. une bonne idée est de prendre la photo de son chanteur favori. on a prétendu que les gens d'Al Qaïda utilisaient la stéganographie en cachant leurs messages diaboliques dans des images pornographiques. Ça n'a pas été confirmé; c'était probablement faux (une manoeuvre de désinformation pour les rendre plus antipathiques encore).
il faut changer l'image souvent, sinon elle deviendrait une signature ! il est, en effet, très simple de comparer les images avant et après pour s'apercevoir que le contenu a changé, ce pourrait être un critère de sélection pour des logiciels de recherche automatique.
dès lors qu'un message a été caché dans une image, il ne faut plus la modifier avec un logiciel de retouche : changer son format d'enregistrement, sa taille, son contraste, etc., sinon le message sera perdu.

 

 

retour ; page echelon ; début de page


me contacter par e-mail jean-claude.devaux (site officiel) mise à jour le 15/10/2002