PROFIL / INDEX© Clément Depernet / 2026

← Retour à la liste

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 .raw dans Audacity (Fichier → Importer → Données brutes) pour l’écouter, ou dans GIMP pour le voir.
  • BinVis.io : visualisation graphique d’un binaire.
  • strings avec 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, odf sont des archives ZIP → tenter de les décompresser. file ne 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.
SEC / OPS / CD-01

Astro + Tailwind, conteneurisé, servi derrière Caddy · Inspiration · Thème sonore : Severance (Theodore Shapiro) · Trop mignon le favicon, non ?

PRÊT / CD-01