Skip to content

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.

Certains messages sont cachés par transformation directe du signal. Ces techniques ne nécessitent aucun outil spécialisé — Audacity suffit.

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 → Inverser

En ligne de commande avec ffmpeg :

Terminal window
ffmpeg -i message.wav -af areverse reversed.wav

Un message enregistré à vitesse réduite ou accélérée devient inintelligible. Ramener le tempo à une valeur standard le rend lisible :

Terminal window
# 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.wav

Dans Audacity, l’effet Changer le tempo modifie la vitesse sans altérer la hauteur des sons.

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 :

Terminal window
# Baisser d'une octave (shift -1200 centièmes)
ffmpeg -i message.wav -af asetrate=22050,aresample=44100 lowpitch.wav

Dans Audacity : Effets → Changer la hauteur.

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.

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.

Audacity → cliquer sur le nom de la piste (flèche déroulante)
→ Spectrogramme

Ajuster 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éaire

Afficher 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 audio
Calque → 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.

import numpy as np
import scipy.io.wavfile as wav
import matplotlib.pyplot as plt
rate, data = wav.read("message.wav")
# Convertir en mono si stéréo
if 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()
OutilUsageAccès
AudacityManipulation audio, spectrogramme intégréLogiciel libre, multiplateforme
Sonic VisualiserAnalyse spectrale haute résolutionLogiciel libre, multiplateforme
ffmpegManipulation en ligne de commandeCLI, multiplateforme
Python + scipyAnalyse et visualisation scriptéeBibliothèques open source
Coagula LightEncoder une image dessinée en signal audioWindows
Spectrum AnalyzerVisualisation rapide en ligneOutil 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 Coagula
2. 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.

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épendamment

Les 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.

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.