13 avr. 20262 min de lecture
Cheat sheet — Stéganographie (CTF)
Méthodologie complète d'analyse stégano : vérification de type/métadonnées, données brutes, images (PNG/JPEG/GIF, LSB, Zsteg, Steghide), audio (spectre, LSB, DTMF/SSTV), fichiers polyglottes et encodages ésotériques.
intermediate#steganographie#ctf#forensic#osint#cheatsheet
Mis à jour le 21 sept. 2026
1. Type de fichier & métadonnées
file data.raw # type réel via les magic bytes (faux positifs possibles)
exiftool data.raw # métadonnées
En cas de doute, inspecter la structure en hexadécimal (hexed.it) pour identifier le format. Beaucoup de formats (PNG, WAV…) stockent leur taille dans l’en-tête : la réduire/augmenter peut masquer ou révéler une partie du média.
2. Données brutes
- Importer un
.rawdans Audacity (Fichier → Importer → Données brutes) pour l’écouter, ou dans GIMP pour le voir. - BinVis.io : visualisation graphique d’un binaire.
stringsavec ses variantes d’encodage :-s,-S,-b,-l,-B,-L.
3. Images
| PNG | JPEG | BMP | |
|---|---|---|---|
| Zsteg | ✅ | ❌ | ✅ |
| Steghide | ❌ | ✅ | ✅ |
| OutGuess | ❌ | ✅ | ❌ |
- Recherche inversée (Google/Yandex Images) pour retrouver le média original, puis comparer (taille et type identiques).
- Stegsolve : opérations entre deux images (XOR cover vs stego), exploration des plans de bits.
- Zsteg (PNG/BMP, LSB) :
zsteg file.png 2b,g,lsb,xy
zsteg file.png -E '1b,rgb,lsb'
- Steghide / OutGuess (JPEG/BMP, à clé) :
steghide extract -p "secret" -sf file.jpg
outguess -k secret file.jpg output.raw
Le mot de passe est souvent le nom du fichier, une chaîne tirée de
strings/exiftool, ou le sujet de l’image ; sinon bruteforce :
stegcracker file.jpg /usr/share/wordlists/rockyou.txt
Extraction des pixels en Python (Pillow) pour du scripting fin :
from PIL import Image
pxs = list(Image.open("file.png").getdata())
print(pxs[:10])
- PNG : pas de compression → LSB exploitables (Zsteg). TweakPNG répare les CRC, réordonne les chunks, agrandit la zone visible. L’extension APNG (animée) peut cacher des frames de durée nulle.
- GIF : frames de durée nulle, message encodé sur les durées (morse/binaire).
Extraire les frames :
ffmpeg -i file.gif -vsync 0 output/%d.png.
4. Audio
- Spectre : un message peut être dessiné dans le spectrogramme → Sonic Visualiser, Audacity (vue spectrale), dcode.
- Fréquences inaudibles (>20 kHz, <20 Hz) : morse/binaire caché.
- Signaux encodés : DTMF (décodeur dialabc), SSTV (QSSTV).
- WAV : bloc DataSize modifiable en hexa ; LSB via
stegolsb wavsteg. - Steghide / DeepSound : à clé (deviner ou wordlist).
5. Fichiers polyglottes
Un fichier valide pour plusieurs formats à la fois :
- simple (concaténation), parasite (un format dans l’autre), mille-feuilles (couches alternées), chimère (un corps, plusieurs en-têtes), schizophrène (interprété différemment selon l’outil), angecryption (chiffrer/déchiffrer donne un autre fichier valide).
- Les
docx,jar,apk,pptx,odfsont des archives ZIP → tenter de les décompresser.filene détecte pas les polyglottes.
6. Encodages & langages ésotériques
- ASCII en binaire : blocs de 8 bits commençant par
0(parfois réduits à 7). - CyberChef (option Magic) pour détecter l’encodage et décoder.
- Langages ésotériques fréquents en CTF : Brainfuck, Whitespace, Piet, Malbolge — référencés sur esolangs.org.