PCM et samples audio
Un fichier WAV au format PCM (Pulse-Code Modulation) stocke l'audio comme une séquence d'échantillons (samples). Chaque sample représente l'amplitude du son à un instant donné, codée sur 16 bits (valeur de -32768 à 32767). À 44 100 Hz stéréo, il y a 88 200 samples par seconde, soit 176 400 octets de données audio.
Modifier le bit de poids faible d'un sample de 16 bits revient à changer sa valeur de ±1 sur 65 536 niveaux possibles, soit 0,0015 % de variation. Cette modification est physiquement imperceptible à l'oreille humaine.
Sample 16 bits : 12450 → binaire : 0011000010100010
↑
bit de poids faible
Message bit = 1 → 12451 (00110000101000 11)
Message bit = 0 → 12450 (00110000101000 10)
Variation sonore : ±1 / 65536 = 0.0015%
Fréquence humaine : 20 Hz - 20 kHz → variation inaudibleFonctionnement LSB audio
Un fichier WAV est structuré en chunks RIFF. Le chunk "data" contient les octets PCM bruts. On parcourt ces octets séquentiellement et on remplace le LSB de chacun par un bit du message. Un octet nul (0x00) marque la fin du message — identique à la technique LSB image.
Fichier WAV (RIFF)
├── "RIFF" (4 bytes) signature
├── taille (4 bytes) taille totale du fichier
├── "WAVE" (4 bytes) format
├── chunk "fmt "
│ ├── format audio (PCM = 1)
│ ├── canaux (1=mono, 2=stéréo)
│ ├── sample rate (44100, 48000...)
│ └── bits/sample (8, 16, 24...)
└── chunk "data"
├── taille (octets de données)
└── [PCM bytes] ← on modifie les LSB ici
byte[0] LSB = bit 0 du message
byte[1] LSB = bit 1 du message
...
byte[n] = 0x00 ← terminateur nulPourquoi WAV et pas MP3
Le MP3 utilise une compression psychoacoustique avec perte : il supprime les fréquences masquées par d'autres sons, quantise agressivement les coefficients et regroupe les samples en frames compressées. Toute modification LSB effectuée avant la compression MP3 est écrasée lors de l'encodage. Le WAV PCM est non compressé — les samples sont préservés bit pour bit.
WAV PCM
- — Non compressé
- — Samples préservés
- — LSB intact
- — Fichiers volumineux
MP3 / AAC / OGG
- — Compression psychoacoustique
- — Samples modifiés
- — LSB détruit
- — Fichiers légers
Capacité de stockage
La capacité dépend du nombre d'octets PCM — donc de la durée, du sample rate, du nombre de canaux et de la profondeur de bits.
| Configuration | Durée | Octets data | Capacité |
|---|---|---|---|
| 44100 Hz, 16bit, Mono | 1 min | 5 292 000 | ~661 500 |
| 44100 Hz, 16bit, Stéréo | 1 min | 10 584 000 | ~1 323 000 |
| 44100 Hz, 16bit, Stéréo | 3 min | 31 752 000 | ~3 969 000 |
| 48000 Hz, 24bit, Stéréo | 1 min | 17 280 000 | ~2 160 000 |
Détection
La stéganographie audio LSB est détectable par la même analyse statistique que l'image LSB. Les outils comme StegSpy et DeepSound analysent la distribution des samples pairs/impairs. Un silence encodé présente des LSB aléatoires alors qu'un silence naturel a des LSB proches de zéro.
⚠ Comme pour les images : ne jamais transmettre via un service qui re-encode l'audio (YouTube, SoundCloud, WhatsApp). Toujours envoyer le fichier WAV original directement.
Questions fréquentes
C'est quoi le LSB dans un fichier audio ?
Exactement le même principe que pour les images, appliqué au son. Un fichier audio WAV stocke des millions de 'samples' (mesures du son), chacun sur 16 ou 24 bits. On modifie le bit de poids faible de chaque sample — une variation inférieure à 1/32768 de l'amplitude totale, inaudible même avec des écouteurs de studio.
Mon message va-t-il survivre si je convertis le WAV en MP3 ?
Non. MP3, AAC et Ogg utilisent une compression psychoacoustique qui remodèle les samples pour réduire la taille — et détruit les modifications LSB. Utilisez uniquement WAV ou FLAC (formats sans perte). Si le fichier passe par une conversion MP3, votre message est irrécupérable.
Comment décoder un message caché dans un audio en CTF ?
Commencez par : 1) ouvrir dans Audacity et analyser le spectrogramme (certains messages y sont directement visibles), 2) essayer DeepSound ou Steghide sur le WAV, 3) analyser les métadonnées avec ExifTool, 4) chercher des patterns dans les samples. Les outils classiques : DeepSound, SilentEye, MP3Stego.
Peut-on cacher un fichier entier (pas juste du texte) ?
Oui. Un fichier WAV de 3 minutes (44100 Hz, 16 bits, stéréo) offre environ 47 Mo de capacité LSB — suffisant pour cacher un PDF, une image ou même un exécutable. Steghide supporte directement l'encodage de fichiers dans des fichiers audio WAV.
Y a-t-il des outils grand public pour faire ça facilement ?
Oui. DeepSound (Windows) offre une interface graphique simple. SilentEye fonctionne sur plusieurs plateformes. Steghide est en ligne de commande mais très simple : 'steghide embed -cf audio.wav -sf secret.txt'. Ces outils gèrent aussi le chiffrement du message.
Tester la technique
Encodez un message dans un fichier WAV directement dans votre navigateur.