Tutoriel de

SGANOGRAPHIE

où l'on apprendra comment dissimuler des informations dans une image numérique

 

Richard TERRAT

Ingénieur Arts et Métiers

Docteur en Informatique

 

Ce tutoriel est une application concrète des principes que l'on peut consulter ici

1. Avant de commencer

Télécharger les applications suivantes :

    -  GIMP

    -  PYTHON3

 

Ces deux logiciels sont en général installés d'office sur Linux, mais pas sur Mac-OS ni sur PC-Windows.

Pour les installer, c'est très simple, il suffit de se rendre sur les sites

 

http://www.gimpfr.org/presentation.php pour GIMP

https://www.python.org/downloads/release/python-365 pour PYTHON3

 

PYTHON3 est l'interpréteur des programmes écrits en Python3

IDLE3 est l'éditeur des des programmes écrits en Python3

 

Au moment du téléchargement de PYTHON3, IDLE3 est automatiquement chargé avec lui

Télécharger ensuite les programmes (choisir : Enregistrer le fichier)

 

Dissimuler-Fichier.py

Decouvrir-Fichier.py

Ces fichiers s’ouvrent par IDLE3 et s'exécutent par PYTHON3

 

Il est fortement conseillé de créer des raccourcis des applications GIMP et IDLE3 sur le bureau afin d'ouvrir facilement les fichiers correspondants par un simple « glisser-déposer » (« drag and drop ») sur ces  raccourcis

 

Pour les tester, on peut, par exemple, télécharger les fichiers suivants par la commande « Enregistrer sous » du menu « Fichier » en leur donnant un nom simple

 

Lena Söderberg :  une image qui servira d’hôte d’un fichier à dissimuler  (nom : Lena.jpg)

François Villon :  un texte à dissimuler (nom : Villon.pdf)

7 ptêt du Jazz:  une image à dissimuler (nom : Septet.jpg)

Sing Sing Sing :  un morceau de musique à dissimuler (nom : Sing.mp3)

Ces fichiers doivent être situés dans le même répertoire que les programmes les utilisant

2. Pour créer le fichier hôte du fichier à dissimuler

-  Ouvrir avec GIMP le fichier image qui servira d’hôte - par exemple Lena.jpg - (par un « glisser-déposer » sur le raccourci GIMP placé sur le bureau)

-  Dans l’onglet Fichier (en haut) cliquer sur Exporter

-  Dans la fenêtre qui s’ouvre cliquer sur le menu Sélectionner le type de fichier situé en bas à gauche

-  Dans ce menu choisir Image PPM et cliquer dessus

-  Cliquer sur Exporter en bas de la fenêtre

-  Dans la fenêtre qui s’ouvre choisir ASCII

-  Cliquer à nouveau sur Exporter dans cette fenêtre

-  Enregistrer le fichier exporté dans le même dossier que le fichier d'origine avec le suffixe ppm (par exemple Lena.ppm)

 

L’Image hôte est alors créée au format PPM ASCII dans le même dossier

 

3. Pour dissimuler un fichier dans un fichier image hôte

-  Lancer le programme « Dissimuler-Fichier.py » (par un « glisser-déposer » sur le raccourci IDLE3 placé sur le bureau), puis :

-  Lancer l’exécution de ce programme dans la fenêtre de IDLE3 avec la touche de fonction F5

- La fenêtre de PYTHON 3 s'ouvrira automatiquement

-  Dans cette fenêtre :

    -  Entrer le nom du fichier image hôte  (par exemple Lena.ppm)

    -  Attendre la demande suivante (ça peut être assez long)

    -  Entrer le nom du fichier à insérer  (par exemple Villon.pdf, Septet.jpg ou Sing..mp3)

    -  Entrer la profondeur* du fichier à insérer : au choix 1, 2 ou 4

    -  Entrer un nom du fichier résultant avec le suffixe ppm (par exemple LenaAvecVillon.ppm, LenaAvecSeptet.ppm ou LenaAvecSing.ppm)

    -  Attendre la fin du programme (affichage de >>>)

 

* Il s'agit du nombre de bits de poids faible des octets codant l'image hôte utilisés pour insérer le fichier à dissimuler ; plus la profondeur est importante, plus l'image hôte sera altérée et plus la taille du fichier à dissimuler pourra être importante

 

Pour voir les différences entre l'image originale (par exemple Lena.ppm) et l'image après stéganographie (par exemple LenaAvecVillon.ppm, LenaAvecSeptet.ppm ou LenaAvecSing.ppm) on peut :

    - visualiser ces images en les ouvrant côte à côte avec GIMP

    - visualiser le codage de ces images en les ouvrant côte à côte avec un éditeur de texte tel que Gedit (Linux), TextEdit (Mac) ou  Wordpad (Windows) (dont il est aussi recommandé d'avoir créé un raccourci sur le bureau) ou même tout simplement avec IDLE3

 

Attention : ne pas ouvrir ces fichiers avec un traitement de texte type Word, LibreOffice ou Pages qui, au mieux, visualiserait l'image et non son codage, mais plus probablement ne visualiserait rien du tout !

 

4. Pour extraire un fichier dissimulé dans une image PPM ASCII

-  Lancer le programme « Decouvrir-Fichier.py » (par un « glisser-déposer » sur le raccourci IDLE3 placé sur le bureau), puis :

-  Lancer l’exécution de ce programme dans la fenêtre de IDLE3 avec la touche de fonction F5

- La fenêtre de PYTHON 3 s'ouvrira automatiquement

-  Dans cette fenêtre :

    -  Entrer le nom du fichier image d’origine au format PPM ASCII (par exemple LenaAvecVillon.ppm, LenaAvecSeptet.ppm ou LenaAvecSing.ppm)

    -  Attendre la demande suivante (ça peut être assez long)

    -  Entrer un nom de fichier résultant (par exemple Villon-extrait.pdf, Septet-extrait.jpg ou Sing-extrait.mp3)

    -  Attendre la fin du programme (affichage de >>>)

 

Il ne reste plus qu’à comparer le fichier dissimulé avec le fichier découvert.

Si c’est le même, bravo, vous avez gagné !

Vous pouvez maintenant stéganographier vos propres images.

 

5. Pour archiver un fichier PPM ASCII contenant un fichier dissimulé

-  Ouvrir ce fichier par GIMP (par un « glisser-déposer » sur le raccourci GIMP placé sur le bureau)

-  Exporter dans un format non compressé (bmp ou tiff) ou compressé sans perte (gif ou png)

 

Ne jamais archiver dans un format compressé (tel que jpg) ; le fichier dissimulé serait perdu !

Remarques

-  Tous les fichiers utilisés doivent se trouver dans le même dossier que les programmes « Dissimuler-Fichier.py » et « Decouvrir-Fichier.py »

-  N’importe quelle image (format jpg, png, gif, …) peut être utilisée pour générer une image hôte au format PPM ASCII

-  N’importe quel fichier de importe quel type (texte, image, musique, programme, …) peut être dissimulé dans l’image hôte à condition que sa taille n’excède pas les capacités de dissimulation de l’image hôte, ce qui dépend de sa taille et de la profondeur d’insertion du fichier à dissimuler

-  Les techniques présentées ici ne sont pas préconisées pour dissimuler des programmes contenant sciemment ou non des virus !

-  Le texte, les images et le morceau de musique utilisés pour les tests sont libres de droits :

    -  François Villon est introuvable, probablement décédé et sans descendance connue

    -  Lena Söderberg est un modèle ayant posé en 1972 dans un célèbre magazine américain ; son portrait est utilisé depuis par de nombreux professionnels de traitement d'image

    -  7 ptêt du Jazz a déclaré ne réclamer aucun droit d'auteur pour son image

    -  Sing Sing Sing est un morceau de musique écrit par Louis Prima en 1936, interprété ici par la formation de Jazz locale  7 ptêt du Jazz

Il aurait été possible de dissimuler un fichier directement dans une image non compressée ou compressée sans perte. L'intérêt du passage par le format PPM ASCII est pédagogique : en ouvrant cette image les fichiers hôtes avant et après insertion grâce à un éditeur de texte, on peut voir par comparaison les modifications effectuées.

Challenge : que se cache-t-il dans  ?

Indication : enregistrer l'image (clic droit dessus) puis exporter au format PPM ASCII