ImageSteg · Cacher des données dans une image ou un fichier audio

Un portage de steghide 0.5.1 pour le navigateur couvrant ses deux méthodes : pixels/LSB pour BMP et PNG, coefficients DCT pour JPEG, ainsi que les supports audio WAV PCM et MP3. Cachez un fichier ou un message, puis révélez-le avec la phrase secrète.

100 % local

Votre fichier et votre secret ne quittent jamais cet appareil. Le décodage, l’insertion, le chiffrement et l’extraction s’effectuent dans cet onglet. Rien n’est envoyé sur un serveur : il n’y a donc rien à divulguer.

1 · Image ou audio de couverture

Déposez une image ou un fichier audio JPEG, PNG, WebP, GIF, BMP, WAV PCM ou MP3 · décodage local, aucun envoi

Les grands conteneurs contiennent davantage : environ un octet pour huit pixels dans une image, un octet pour seize échantillons dans un WAV PCM et l’espace inutilisé des trames audio dans un MP3.

2 · Données à cacher

Aucun fichier choisi

3 · Phrase secrète & options

Trois étapes simples

Comment cacher un fichier dans une image ou un fichier audio

Sans installation ni envoi : choisissez une image, un WAV ou un MP3, ajoutez votre secret et enregistrez le résultat.

1

Choisir une image ou un fichier audio de couverture

Chargez, déposez ou collez l’image, le WAV ou le MP3 qui portera les données. Les grands fichiers en contiennent davantage, et les photos détaillées ou la musique masquent mieux les modifications.

2

Ajouter le secret et une phrase secrète

Joignez un fichier ou saisissez un message, puis choisissez une phrase secrète. Elle détermine la répartition des données et peut également les chiffrer.

3

Télécharger et partager

Enregistrez le résultat en BMP pour la compatibilité avec steghide, ou en PNG pour un fichier plus léger. Toute personne disposant de l’image et de la phrase secrète peut révéler les données.

Les algorithmes de steghide et des supports audio dans votre navigateur

Appariement de graphes sur pixels, coefficients DCT et échantillons audio

ImageSteg est un portage TypeScript de steghide 0.5.1 couvrant ses deux branches : la méthode pixels/LSB pour BMP et PNG, et la méthode DCT pour JPEG. Il stocke aussi les données de la même manière dans l’audio WAV PCM et dans la fin inutilisée des trames MP3. Aucune méthode ne se contente de parcourir le fichier dans l’ordre.

Insertion fondée sur les graphes

Les échantillons sont regroupés en sommets et un appariement de poids minimal décide des modifications : environ un seul échantillon est modifié par valeur cachée.

Véritable stéganographie JPEG DCT

Un codec entropique JPEG intégré lit les coefficients DCT quantifiés, cache les données dans leur parité et les réencode, à l’étape même où s’arrête la libjpeg de steghide. Les fichiers de base et progressifs sont tous deux pris en charge.

Dispersion guidée par la phrase secrète

Une permutation initialisée par MD5 répartit les données sur toute l’image : le contenu caché n’est donc pas stocké dans un ordre prévisible.

Compression et somme de contrôle

zlib réduit les données avant leur insertion, et une somme de contrôle CRC32 facultative indique immédiatement si l’extraction est fiable.

Chiffrement AES-256 facultatif

Rijndael en mode CBC, avec la même dérivation de clé que libmcrypt, préserve la confidentialité des données même si quelqu’un soupçonne l’image.

À quoi s’attendre

Capacité, vitesse et compatibilité

Limites pratiques de la dissimulation de données dans les pixels d’une image.

BMP · PNGbranche pixels / LSB
JPEGbranche coefficients DCT
0.2 %proportion habituelle d’échantillons modifiés
0 envoitout reste dans votre navigateur

Compatibilité : la disposition des bits, la permutation des échantillons et le chiffrement Rijndael/CBC suivent steghide 0.5.1 : les sorties BMP et JPEG peuvent donc être lues avec steghide extract -sf image.bmp -p passphrase ou -sf image.jpg, et les fichiers produits par l’outil steghide en ligne de commande peuvent être lus ici. Le format de sortie correspond toujours à la couverture : un JPEG produit un JPEG, car les données résident dans des coefficients que seul ce format peut porter. Le PNG est proposé avec le BMP pour les couvertures en pixels ; l’outil steghide en ligne de commande ne lit pas le PNG.

La branche JPEG en détail

La prise en charge JPEG de steghide appelle la fonction libjpeg jpeg_read_coefficients(), qui arrête le décodage juste après le décodage Huffman, avant la déquantification et l’IDCT. Il reste les coefficients DCT quantifiés bruts. Les navigateurs ne proposent aucune API pour y accéder : cette page fournit donc son propre codec entropique JPEG au lieu du décodeur natif. Il couvre les fichiers de base et progressifs, y compris leurs passes d’affinage par approximations successives.

Appliquer le même algorithme au PNG

L’outil d’insertion ne voit aucun format de fichier : il travaille uniquement sur le tableau de pixels décodés. La méthode BMP/LSB de steghide s’applique donc au PNG sans modification. Quatre détails comptent en pratique :

Questions et réponses

Questions fréquentes sur ImageSteg

ImageSteg est-il gratuit ?

Oui. Cacher et révéler des données est gratuit, sans inscription, filigrane ni limite artificielle de taille de fichier.

Mon image ou mon fichier secret sont-ils envoyés ?

Non. Le décodage, l’insertion, la compression et le chiffrement s’exécutent localement dans votre navigateur avec JavaScript et WebCrypto. Rien n’est envoyé au serveur 73hi.

Quels formats d’image sont pris en charge ?

Toute image que votre navigateur peut décoder peut servir de couverture en pixels, tandis que les JPEG de base et progressifs utilisent la branche DCT de steghide. La sortie suit la couverture : JPEG en entrée, JPEG en sortie ; une couverture en pixels donne un BMP et une copie PNG. L’outil steghide en ligne de commande lit les sorties BMP et JPEG, mais pas PNG.

Comment le mode JPEG cache-t-il les données ?

Dans les coefficients DCT quantifiés, exactement comme l’outil steghide en ligne de commande. La page comprend un codec entropique JPEG qui décode les passes jusqu’aux coefficients, modifie leur parité et les réencode.

Puis-je utiliser un JPEG progressif ?

Oui. Les fichiers progressifs sont décodés sur toute leur séquence de passes — sélection spectrale et affinage par approximations successives — puis réécrits de la même manière. Le résultat reste donc un JPEG progressif portant les coefficients d’origine.

Qu’en est-il des JPEG à codage arithmétique ?

Ils sont pris en charge en lecture. Les fichiers utilisant le codage QM (arithmétique binaire) au lieu de Huffman — SOF9 en séquentiel, SOF10 en progressif — sont décodés avec le même décodeur arithmétique que libjpeg : les coefficients obtenus sont donc identiques. Le résultat est réécrit avec le codage Huffman, comme le fait steghide.

Quelle quantité de données puis-je cacher ?

Environ un octet de données pour huit pixels, moins la place de l’en-tête, du nom de fichier enregistré et de l’éventuel surcoût du chiffrement. L’outil affiche la capacité utile dès que vous choisissez une image.

L’outil steghide en ligne de commande peut-il lire le résultat ?

Oui, si vous téléchargez le BMP. La disposition des bits, la permutation des échantillons fondée sur la phrase secrète et le chiffrement Rijndael/CBC suivent steghide 0.5.1.

Pourquoi l’extraction échoue-t-elle après modification de l’image ?

Les données résident dans les valeurs individuelles des pixels. Une recompression, un redimensionnement, un filtrage ou une conversion vers un format avec perte comme JPEG les détruit. Conservez le BMP d’origine ou une copie PNG sans perte.

Puis-je cacher deux secrets dans la même image ?

Pas en effectuant deux insertions dans le même fichier. Le second passage choisit ses propres positions aléatoires sur toute la couverture et écrase une partie des premières données. Comme les données sont compressées avant d’être chiffrées, quelques bits modifiés rendent tout le message illisible : la perte est totale, pas partielle. L’outil steghide d’origine se comporte de la même façon. Réutiliser la même phrase secrète n’aide pas : cela réécrit les mêmes positions depuis le début, et seul le dernier message subsiste. Pour créer de vraies couches, imbriquez plutôt les fichiers : cachez le premier secret dans une petite image, téléchargez le résultat, puis cachez ce fichier entier dans une image plus grande avec une seconde phrase secrète. Chaque couche reste intacte octet pour octet, car elle est transportée comme donnée protégée et non comme pixels modifiés.

Ouvrir une image contenant déjà des données cachées les détruit-il ?

Non. Charger un fichier ne fait que lire ses octets : les couvertures JPEG donnent directement accès aux coefficients DCT quantifiés, sans transformation inverse ni requantification, et les couvertures en pixels sont décodées sans perte. Les données cachées restent donc intactes. Un JPEG peut être enregistré avec une taille légèrement différente parce que le codage entropique est réécrit, sans affecter les données. Vous pouvez ouvrir sans risque un fichier préparé par quelqu’un d’autre pour révéler son contenu.

ImageSteg peut-il aider à protéger mes droits d’auteur ?

Oui. Intégrez votre mention de droits d’auteur ou une preuve de propriété directement dans la photo. Les données résident dans les pixels ou les coefficients JPEG et restent invisibles lors d’un affichage normal : vous pouvez partager l’image publiquement sans qu’elles soient remarquées. Si quelqu’un réutilise l’image sans autorisation, la marque cachée reste dans le fichier. Lorsque vous publiez la même image sur une plateforme tierce pour documenter l’infraction, cette copie porte également votre preuve, ce qui vous donne un élément solide à l’appui d’une demande de retrait ou d’une réclamation.

Puis-je cacher un message que je n’ose pas dire en personne ?

Bien sûr. Cachez un message comme « Je t’aime », ou tout ce qui est difficile à dire en face, dans une photo ordinaire de votre quotidien, et choisissez la date de naissance du destinataire comme phrase secrète. Envoyez-lui la photo et demandez-lui de l’ouvrir dans ImageSteg, ou de visiter 73hi.com/image-steg.html, pour la déverrouiller. Seule une personne connaissant la phrase secrète peut révéler les mots : vous pouvez ainsi vous exprimer sans la gêne de les prononcer à voix haute.