bsupetnain
-
21 nov. 2001 à 17:43
cs_ragam
Messages postés1Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention27 mars 2005
-
27 mars 2005 à 10:11
Je galere grave pour trouver des infos serieuses sur la
steganographie.Je voudrais pouvoir developper un programme
dos en C++ pour cacher un texte dans une image BMP ou JPEG.
Help please et donnez moi un algorithme pour pouvoir faire
ca ou alors un morceau de code.
Merci
J'ai programmé ça en Turbo Pascal, mais je n'ai pas le code ici (il est chez moi, là chui à l'école :-).
Le truc est d'utiliser des images BMP en 24bits/pixel :
8 bits pour le Bleu
8 pour le Vert
8 pour le Rouge
Mais vu que 2^8 ça donne 256 combinaisons, et 256^3=16.7 millions de nuances, ça fait un paquet! Ton oeil ne verra pas la différence entre 543789 et 543689 (déjà rien que le nom on peut se tromper ;-). Donc le truc est d'écrire sur le bit de poids faible de chaque couleur primaire :
8 bits -> xxxxxxxA, et tu écris dans A le bit 0 ou 1
Pour lire le bit 0 (faible) : valeur8bits & 1 (AND 1).
Ecrire : "valeur8bits & (~1) | monboolean", le "& (~1)" permet de mettre le bit 1 à zéro. "|" = OR, écrit le bit (s'il est à zéro avant).
Lit le bit n°x dans ta valeur 8 bits : "valeur8bits >> (x-1) & 1", ">> n" = division par 2^n (d'où le -1 car pour le 1er bit, pas besoin de diviser!)
Tu peux écrire deux bits pour gagner de la place. Pas 3 car entre 240 et 255, on voit la nuance à l'oeil nu!
Tu peux aussi faire ça sur des BMP codé en RLE! ... pas essayé, mais c plus dur.
Pour + de sécurité : tu écris juste sur une couleur primaire, par exemple : le bleu. Voir écrire la même valeur sur les 3 ... enfin tout ça j'en doute! ... Faut voir.
Sache aussi qu'il existe des softs pour détecter la stéganographie!!!
Allez @+
Haypo
haypo.pasdepub@ifrance.com (sans le ".pasdepub" bien sûr) pour + d'info
J'ai programmé ça en Turbo Pascal, mais je n'ai pas le code ici (il est chez moi, là chui à l'école :-).
Le truc est d'utiliser des images BMP en 24bits/pixel :
8 bits pour le Bleu
8 pour le Vert
8 pour le Rouge
Mais vu que 2^8 ça donne 256 combinaisons, et 256^3=16.7 millions de nuances, ça fait un paquet! Ton oeil ne verra pas la différence entre 543789 et 543689 (déjà rien que le nom on peut se tromper ;-). Donc le truc est d'écrire sur le bit de poids faible de chaque couleur primaire :
8 bits -> xxxxxxxA, et tu écris dans A le bit 0 ou 1
Pour lire le bit 0 (faible) : valeur8bits & 1 (AND 1).
Ecrire : "valeur8bits & (~1) | monboolean", le "& (~1)" permet de mettre le bit 1 à zéro. "|" = OR, écrit le bit (s'il est à zéro avant).
Lit le bit n°x dans ta valeur 8 bits : "valeur8bits >> (x-1) & 1", ">> n" = division par 2^n (d'où le -1 car pour le 1er bit, pas besoin de diviser!)
Tu peux écrire deux bits pour gagner de la place. Pas 3 car entre 240 et 255, on voit la nuance à l'oeil nu!
Tu peux aussi faire ça sur des BMP codé en RLE! ... pas essayé, mais c plus dur.
Pour + de sécurité : tu écris juste sur une couleur primaire, par exemple : le bleu. Voir écrire la même valeur sur les 3 ... enfin tout ça j'en doute! ... Faut voir.
Sache aussi qu'il existe des softs pour détecter la stéganographie!!!
Allez @+
Haypo
haypo.pasdepub@ifrance.com (sans le ".pasdepub" bien sûr) pour + d'info
-------------------------------
Réponse au message :
-------------------------------
J'ai programmé ça en Turbo Pascal, mais je n'ai pas le code ici (il est chez moi, là chui à l'école :-).
Le truc est d'utiliser des images BMP en 24bits/pixel :
8 bits pour le Bleu
8 pour le Vert
8 pour le Rouge
Mais vu que 2^8 ça donne 256 combinaisons, et 256^3=16.7 millions de nuances, ça fait un paquet! Ton oeil ne verra pas la différence entre 543789 et 543689 (déjà rien que le nom on peut se tromper ;-). Donc le truc est d'écrire sur le bit de poids faible de chaque couleur primaire :
8 bits -> xxxxxxxA, et tu écris dans A le bit 0 ou 1
Pour lire le bit 0 (faible) : valeur8bits & 1 (AND 1).
Ecrire : "valeur8bits & (~1) | monboolean", le "& (~1)" permet de mettre le bit 1 à zéro. "|" = OR, écrit le bit (s'il est à zéro avant).
Lit le bit n°x dans ta valeur 8 bits : "valeur8bits >> (x-1) & 1", ">> n" = division par 2^n (d'où le -1 car pour le 1er bit, pas besoin de diviser!)
Tu peux écrire deux bits pour gagner de la place. Pas 3 car entre 240 et 255, on voit la nuance à l'oeil nu!
Tu peux aussi faire ça sur des BMP codé en RLE! ... pas essayé, mais c plus dur.
Pour + de sécurité : tu écris juste sur une couleur primaire, par exemple : le bleu. Voir écrire la même valeur sur les 3 ... enfin tout ça j'en doute! ... Faut voir.
Sache aussi qu'il existe des softs pour détecter la stéganographie!!!
Allez @+
Haypo
haypo.pasdepub@ifrance.com (sans le ".pasdepub" bien sûr) pour + d'info
-------------------------------
Réponse au message :
-------------------------------
Je galere grave pour trouver des infos serieuses sur la
steganographie.Je voudrais pouvoir developper un programme
dos en C++ pour cacher un texte dans une image BMP ou JPEG.
Help please et donnez moi un algorithme pour pouvoir faire
ca ou alors un morceau de code.
Merci
Et tu sais comment on fait pour les fichiers jpeg parceque le bmp 54 bits c'est pas courant et lourd pour passer par e-mail(avec un 56K)?En plus je sais que le message est inutilisable apres compression.Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Si tu est intéressé par un programme de stéganographie avec des documents qui expliquent la stégano donne moi ton adresses je vais te les envoyer LUDAW
Koryn38
Messages postés6Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention22 septembre 2003 4 août 2003 à 14:52
Bonjour,
Je suis intéressé également.
Ma problèmatique est la suivante : je dois ajouter à une image (BMP 8 bits 256 couleurs) des informations textes sur les conditions de prise de vue. Je dois conserver une qualité irréprochable de l'image afindde passer un OCR (reconnaissance de caractères) ensuite sur cette image (l'OCR passera sur des plaques de véhicules prises en photos et non sur le texte ajouté).
J'essaye actuellement d'afficher les infos textes sur l'image acquise avant de sauvegarder le tout, mais l'affichage réalisé se fait sur un calque en avant plan de l'image et je n'arrive pas à sauvegarder les informations avec l'image. C'est pourquoi, je penses que le principe de stéganographie peut m'intéresser.
Maintenant si tu est aussi en mesure de me fournir une solution dans le sens actuel de ma recherche, je suis partente.
Koryn38
NB : environnement de programmation VISUAL Studio .NET (visual C++) avec les MFC.
cs_ragam
Messages postés1Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention27 mars 2005 27 mars 2005 à 10:11
salut tout le monde
je suis entrains de devellopper le meme programme et j'aurrais vraiment besoin
de plus d'informations sur le sujet "comment faire pour changer le bit le moins
significatif dans un canal donnè et eviter le pading aussi", l'algorithme avec si
c'est possible ca va etre plus claire.
je vous remerci d'avance.