Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
steganographer — Stéganographie en Python | Cacher des fichiers ou des données dans des fichiers image | Kitploit
Outils/GitHubGitHub/priyansh-anand/steganographer
Outils de Chiffrement/DéchiffrementExfiltration de DonnéesStéganographieApprentissage et Éducation
GitHubpriyansh-anand/steganographer

steganographer

Stéganographie en Python | Cacher des fichiers ou des données dans des fichiers image

Voir le dépôt
169348il y a 4 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Steganographie en Python

Ce script cachera des fichiers dans des images et enregistrera l'image modifiée sur le disque.

La taille maximale du fichier pouvant être caché dans une image dépend des dimensions de l'image.

root@kitploit:~
max_file_size = ( height_of_image * width_of_image * 6 / 8 ) bytes

Le fichier '100k words.txt' est caché dans 'original_image.png' nommé 'image_with_100k words.png'. Allez voir si vous pouvez repérer la différence entre ces deux images. Vous pouvez utiliser ce module pour extraire '100k words.txt' de 'image_with_100k words.png'.

Exemple

Image originale Image originale

Image modifiée Image modifiée

Cette image contient 100 000 mots (un fichier texte) cachés à l'intérieur !

Comment ça marche ?

Il repose sur un principe simple : si l'on modifie les bits de poids faible (LSB) de chaque pixel, le changement ne sera pas significatif et ne sera pas perceptible à l'œil nu.

Ainsi, ce module prend 2 bits de données du fichier à cacher et remplace les 2 derniers bits d'un pixel par ces 2 bits, puis passe au pixel suivant. Le changement maximal dans un pixel peut être de 4 unités, et la plage de valeurs dans une image PNG est (0,255), donc ce changement ne sera pas significatif.

Dans une image PNG, chaque pixel a 3 canaux : Rouge, Vert et Bleu. (Certaines images PNG ont 1 ou 4 canaux, mais ce programme les convertira en 3 canaux). Un pixel typique dans une image PNG ressemble à :

root@kitploit:~
a_pixel = (17,32,11)     # (ROUGE, VERT, BLEU)

Ainsi, nous pouvons sauvegarder 3 fois 2 bits dans un pixel, soit 6 bits par pixel. Cela nous amène à la limite supérieure de la taille du fichier pouvant être caché dans une image :

root@kitploit:~
max_file_size = ( height_of_image * width_of_image * 6 / 8 ) bytes

Comprenons cela avec un exemple. Les données à cacher sont :

root@kitploit:~
binary_data = 0b100111

Prenons les deux premiers bits et remplaçons-les par le canal ROUGE de notre 'a_pixel'.

root@kitploit:~
a_pixel = (0b10001, 0b100000, 0b1011)   # représentation binaire des valeurs de a_pixel
# Changeons le canal ROUGE de a_pixel
# 0b10001 -> 0b10010  ( Les 2 premiers bits sont 10 )
a_pixel = (0b10010, 0b100000, 0b1011)  # pixel modifié

Prenons à nouveau 2 bits de binary_data et remplaçons les 2 derniers bits du canal VERT par ceux-ci.

root@kitploit:~
a_pixel = (0b10010, 0b100000, 0b1011)
# Changeons le canal VERT de a_pixel
# 0b100000 -> 0b100001  ( Les 2 bits sont 01 )
a_pixel = (0b10010, 0b100001, 0b1011)  # pixel modifié

Faisons cela une fois de plus avec le canal BLEU et nous aurons terminé.

root@kitploit:~
a_pixel = (0b10010, 0b100001, 0b1011)
# Changeons le canal BLEU de a_pixel
# 0b1011 -> 0b1011  ( Les 2 bits sont 11 ) ; Remarquez que la valeur n'a pas changé cette fois-ci
a_pixel = (0b10010, 0b100001, 0b1011)  # le pixel n'a pas été modifié cette fois-ci

Ainsi, nous avons caché notre message de 6 bits dans un pixel, voyons les changements dans le pixel :

root@kitploit:~
a_pixel             = (0b10001, 0b100000, 0b1011) = (17, 32, 11)
a_pixel_with_data   = (0b10010, 0b100001, 0b1011) = (18, 33, 11)

Comme nous pouvons le voir, le changement n'est même pas perceptible au niveau du pixel. Le module répète cette opération jusqu'à ce que toutes nos données soient sauvegardées dans l'image.

Données cachées dans l'image brute

NOTE : Le bruit dans la photo est augmenté et si nous utilisons un logiciel de retouche photo pour la comparer avec l'image originale, alors cette image aura beaucoup plus de bruit que l'image originale.

Solution à ce problème : Ne jamais télécharger/partager l'image originale sur Internet.

À faire

  • Ajouter la prise en charge des images JPEG
  • Ajouter la détection automatique du nom du fichier à extraire

Licence

MIT

Logiciel libre, Et ouais !

Télécharger l’outil