À propos
zsteg analyse les bits de poids faible (LSB) et d'autres plans de bits des images PNG et BMP en testant automatiquement des dizaines de combinaisons : canal (R, G, B, A), ordre des bits (LSB/MSB), ordre de lecture (xy, yx, diagonal...), et nombre de bits utilisés (1 à 8). Lorsque le résultat contient du texte lisible ou un header de fichier reconnu, zsteg le signale.
Installation
ruby >= 2.0 + rubygemsgem install zstegapt install ruby && gem install zsteggem update zstegCommandes essentielles
zsteg image.pngTeste les combinaisons LSB les plus courantes et affiche les résultats lisibles.
zsteg -a image.pngTeste toutes les combinaisons de bits, canaux et ordres. Plus lent mais plus complet.
zsteg -E "b1,rgb,lsb,xy" image.png > output.binExtrait les données du canal RGB bit 1, LSB, ordre XY dans un fichier binaire.
zsteg --all image.png 2>/dev/null | head -20Affiche les premières combinaisons avec résultats non vides.
zsteg image.bmpFonctionne identiquement avec les fichiers BMP.
Lire la sortie
b1,rgb,lsb,xy .. text: "FLAG{hidden_message}"
b1,r,lsb,xy .. text: "...z..R.v.."
b2,rgb,lsb,xy .. file: PNG image data, 100 x 100Format : b[bits],canaux,ordre,direction — ici b1,rgb,lsb,xy = bit 1 des canaux R+G+B, LSB en premier, lecture gauche→droite haut→bas.
Limites
zsteg ne détecte que les données non chiffrées (ou faiblement obfusquées) en cherchant du texte lisible ou des magic bytes de fichiers connus. Un message chiffré avant encodage LSB (comme avec Steghide) produira un résultat binaire aléatoire — non détecté par zsteg. Fonctionne uniquement sur PNG et BMP (pas JPEG, qui est avec perte).