Stéganographie audio : messages cachés dans les fichiers son
Des données peuvent se dissimuler dans un fichier audio sans altérer son écoute perceptible. Les techniques vont de la simple manipulation temporelle — inverser ou ralentir le signal — à l’encodage visuel dans le spectrogramme, où un message ou une image se lit dans la représentation fréquentielle du son.
Manipulations du signal temporel
Section titled “Manipulations du signal temporel”Certains messages sont cachés par transformation directe du signal. Ces techniques ne nécessitent aucun outil spécialisé — Audacity suffit.
Inverser l’audio
Section titled “Inverser l’audio”Un message vocal enregistré à l’envers passe inaperçu à l’écoute normale. Inverser la piste révèle le contenu :
Audacity → sélectionner la piste entière (Ctrl+A) → menu Effets → InverserEn ligne de commande avec ffmpeg :
ffmpeg -i message.wav -af areverse reversed.wavModifier la vitesse
Section titled “Modifier la vitesse”Un message enregistré à vitesse réduite ou accélérée devient inintelligible. Ramener le tempo à une valeur standard le rend lisible :
# Ralentir de moitié (factor 0.5 = deux fois plus lent)ffmpeg -i message.wav -af atempo=0.5 slow.wav
# Accélérer (factor 2.0 = deux fois plus rapide)ffmpeg -i message.wav -af atempo=2.0 fast.wavDans Audacity, l’effet Changer le tempo modifie la vitesse sans altérer la hauteur des sons.
Modifier la hauteur (pitch)
Section titled “Modifier la hauteur (pitch)”Le message peut être enregistré dans une plage de fréquences inhabituelle — trop grave ou trop aigu pour l’oreille humaine. Transposer le signal vers une plage audible normale :
# Baisser d'une octave (shift -1200 centièmes)ffmpeg -i message.wav -af asetrate=22050,aresample=44100 lowpitch.wavDans Audacity : Effets → Changer la hauteur.
Analyse spectrale et spectrogramme
Section titled “Analyse spectrale et spectrogramme”Le spectrogramme représente le signal en trois dimensions :
- Axe horizontal — le temps
- Axe vertical — les fréquences (en Hz)
- Couleur ou intensité — l’amplitude à chaque fréquence et à chaque instant
Un signal audio ordinaire produit un spectrogramme sans forme reconnaissable. Un fichier contenant un message encodé dans les fréquences affiche du texte ou une image lisible directement dans cette vue.
Principe de l’encodage spectral
Section titled “Principe de l’encodage spectral”L’encodage repose sur la transformée de Fourier : le signal temporel est décomposé en ses composantes fréquentielles. En plaçant de l’énergie à des fréquences précises et à des instants précis, il est possible de dessiner des formes dans le spectrogramme — une image rendue sonore.
L’oreille humaine ne distingue pas ce type d’encodage : les fréquences modifiées sont généralement situées dans des plages peu perceptibles, ou le niveau d’énergie ajouté est trop faible pour altérer l’écoute de manière évidente.
Afficher le spectrogramme dans Audacity
Section titled “Afficher le spectrogramme dans Audacity”Audacity → cliquer sur le nom de la piste (flèche déroulante) → SpectrogrammeAjuster la plage de fréquences affichée si le message n’est pas visible :
Clic droit sur l'axe vertical → Propriétés du spectrogramme→ Min frequency : 0 Hz→ Max frequency : 22000 Hz→ Échelle : LinéaireAfficher le spectrogramme dans Sonic Visualiser
Section titled “Afficher le spectrogramme dans Sonic Visualiser”Sonic Visualiser offre une résolution et des options d’affichage supérieures à Audacity pour l’analyse spectrale :
Fichier → Ouvrir le fichier audioCalque → Ajouter un spectrogramme→ Fenêtre → Propriétés du calque → Window size : 4096 (plus la fenêtre est grande, plus la résolution fréquentielle est haute) → Colour : White on Black (contraste maximal)Les messages textuels encodés apparaissent en blanc sur fond noir dans les fréquences hautes.
Analyser le spectre avec Python
Section titled “Analyser le spectre avec Python”import numpy as npimport scipy.io.wavfile as wavimport matplotlib.pyplot as plt
rate, data = wav.read("message.wav")
# Convertir en mono si stéréoif data.ndim == 2: data = data.mean(axis=1)
plt.specgram(data, Fs=rate, NFFT=4096, cmap="inferno")plt.colorbar(label="Amplitude (dB)")plt.xlabel("Temps (s)")plt.ylabel("Fréquence (Hz)")plt.ylim(0, rate // 2)plt.savefig("spectrogramme.png", dpi=150)plt.show()Outils
Section titled “Outils”| Outil | Usage | Accès |
|---|---|---|
| Audacity | Manipulation audio, spectrogramme intégré | Logiciel libre, multiplateforme |
| Sonic Visualiser | Analyse spectrale haute résolution | Logiciel libre, multiplateforme |
| ffmpeg | Manipulation en ligne de commande | CLI, multiplateforme |
| Python + scipy | Analyse et visualisation scriptée | Bibliothèques open source |
| Coagula Light | Encoder une image dessinée en signal audio | Windows |
| Spectrum Analyzer | Visualisation rapide en ligne | Outil web |
Encoder un message dans un spectrogramme avec Coagula Light
Section titled “Encoder un message dans un spectrogramme avec Coagula Light”Coagula Light convertit une image en signal sonore — les zones claires de l’image deviennent des fréquences présentes dans le son.
1. Dessiner le message (texte ou image) dans la fenêtre noire de Coagula2. Sound → Render Image (conversion image → son)3. File → Save Sound As (exporter en WAV)Le fichier WAV produit affiche le dessin original quand on l’ouvre dans un spectrogramme.
Workflow en pratique
Section titled “Workflow en pratique”Face à un fichier audio suspect, l’ordre d’analyse à suivre :
1. Écouter le fichier normalement → un message intelligible ? des artefacts sonores ?
2. Vérifier les métadonnées exiftool fichier.wav
3. Inspecter le fichier brut strings fichier.wav | head -50 hexdump -C fichier.wav | head -30
4. Afficher le spectrogramme dans Audacity ou Sonic Visualiser → chercher du texte ou des formes dans les fréquences hautes
5. Inverser le signal ffmpeg -i fichier.wav -af areverse reversed.wav → réécouter
6. Tester les modifications de vitesse ffmpeg -i fichier.wav -af atempo=0.5 slow.wav ffmpeg -i fichier.wav -af atempo=2.0 fast.wav
7. Si le fichier est stéréo, séparer les canaux ffmpeg -i fichier.wav -map_channel 0.0.0 left.wav ffmpeg -i fichier.wav -map_channel 0.0.1 right.wav → analyser chaque canal indépendammentLes canaux gauche et droit d’un fichier stéréo peuvent contenir des signaux différents. Un message peut être encodé uniquement dans l’un des deux canaux.
À retenir
Section titled “À retenir”Le spectrogramme est la première chose à afficher face à un fichier audio suspect — un message textuel ou une image y est visible à l’œil nu sans aucun décodage. Les manipulations temporelles (inversion, ralentissement) se testent en moins d’une minute avec ffmpeg et révèlent les techniques les plus simples.