begin process at 2010 02 10 07:17:58
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CACHER DU TEXTE DANS UNE IMAGE PAR STÉGANOGRAPHIE

CACHER DU TEXTE DANS UNE IMAGE PAR STÉGANOGRAPHIE


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Source .NET ( DotNet ) Classé sous :image, cacher, text, stéganographie, bitmap Niveau :Débutant Date de création :11/05/2006 Date de mise à jour :11/03/2008 20:07:04 Vu / téléchargé :15 530 / 1 383

Auteur : Bidou

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Cacher du texte dans une image en C#

Je suis tombé tout par hasard sur ce code en delphi crée par aymenk (que vous pouvez trouver à cette adresse : http://www.delphifr.com/code.aspx?ID=32615) et il m'a prit l'envie de le traduire en C#. Je n'ai donc rien inventé en soit, mais simplement traduit cette source. Voilà ce que nous dit l'auteur de la source :

"Voler 1 bit ou 2 pour chaque jeu RGB ne fait de mal à personne et surtout à une image...
Par cette méthode on peut cacher du texte dans une image et récupérer le texte caché."

Si on regarde le code source, on constate que tout tient sur 3 lignes qui sont un peu compliquées (opération sur les bits). Pour mieux comprendre ce qu'il se passe réellement, je vous propose de lire les commentaires sur la source delphi (adresse ci-dessus).

Source

  • // Insertion
  • ImgTransform.Include(this.pictureBox.Image as Bitmap, txt);
  • // Extraction
  • this.txtInnerText.Text = ImgTransform.Extract(this.pictureBox.Image as Bitmap);
// Insertion
ImgTransform.Include(this.pictureBox.Image as Bitmap, txt);

// Extraction
this.txtInnerText.Text = ImgTransform.Extract(this.pictureBox.Image as Bitmap);

 Conclusion

Petit bug : si on charge une image qui n'est pas un bmp, on peut inclure et extraire du texte sans problème, mais si on sauve l'image, qu'on la recharge et qu'on extrait, le text n'est pas retrouvé. Il doit se produire un problème lors du Save() mais je n'ai pas encore compris de quoi ça venait.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) CHESS GAME CORE - LIBRAIRIE JEU D'ÉCHEC EN C#
Source avec Zip Source avec une capture Source .NET (Dotnet) CUBE-IT: PETIT JEU EN WPF
Source avec Zip Source avec une capture Source .NET (Dotnet) YOUTUBE VIEWER
Source avec Zip Source avec une capture Source .NET (Dotnet) COLOR WHEEL
Source avec Zip Source avec une capture Source .NET (Dotnet) PETIT EXEMPLE UTILISANT XAML ET WPF

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) NOTIFICATIONS DANS UN DELEGATE ASYNCHRONE par olivieram2
Source avec Zip Source avec une capture Source .NET (Dotnet) PIXEL SHADER - CRÉATION, UTILISATION, ET BINDING par yoannd
Source avec Zip Source avec une capture Source .NET (Dotnet) UITYPEEDITOR HACKING, PROPERTYGRID ET LISTVIEW CONFIGURABLES... par gourky
Source avec Zip Source .NET (Dotnet) CONVERTION D'UNE IMAGE EN G-CODE, GRAVURE CNC par gourky
Source avec Zip Source .NET (Dotnet) CAROUSEL EN WPF (USERCONTROL) par CoolSpirit

 Sources en rapport avec celle ci

Source avec Zip REDIMENSION D'IMAGE EN C# par VinceMonkeyz
Source avec Zip Source .NET (Dotnet) CONVERTION D'UNE IMAGE EN G-CODE, GRAVURE CNC par gourky
Source avec Zip Source .NET (Dotnet) TRAITEUR D'IMAGE (MINI) par ycyril
Source avec Zip Source avec une capture Source .NET (Dotnet) IMAGES : FILTRES PAR CONVOLUTION par tkfe
Source avec Zip Source avec une capture Source .NET (Dotnet) [C#] [TUTORIAL BASIQUE] STÉGANOGRAPHIE IMAGE BITMAP par scoubidou944

Commentaires et avis

Commentaire de wizad le 11/05/2006 15:19:31

Trés sympa et originale comme source (même si ce n'est qu'une translation depuis une source delphi).

Concernant ton problème avec les autres format que bmp il est possible que cela vienne de la compression appliqué à ces format.

Commentaire de Bidou le 11/05/2006 15:33:33 administrateur CS

C'est pour son originalité que je me suis amusé à le traduire :-)
Pour le problème du format, c'est possible que ça soit un problème de compression. J'essayerai de regarder les jours qui viennent si je peux corriger ça!

Commentaire de VBSorcier le 11/05/2006 18:01:57

pour répondre à ta question de l'explication finale :

ce procédé s'appele la Stéganographie, c'est l'art de cacher des choses dans autre chose ici du texte dans de l'image....

je n'ai pas regarder ton code (celui de aymenk) mais le principe reste le mem partout !!!

le texte à cacher est par exemple : "0123" ce qui donne en  ASCII :
0x30 0x31 0x32 0x33 (en héxa) puis
00110000 00110001 00110010 00110011 en binaire

dans ton image chaque pixel est codé en RGB (red green blue)
par l'opération suivante : B*256*256 + G*256 + R (R,G,B, valeur entre 0 et 255)

donc tu deconpose ton pixel en 3 couleur puis tu prend le dernier ou les 2 dernier bits de chaque couleur que tu remplace par  le code ascii de ta lettre (une a une)
ca veux dir que le texte "0123" vas etre codé sur 32 bits (4*8bits)
et comme chaque pixel est sur 24 bits (8bits par couleurs)mais que tu peu au plus prendre 6 bits par pixel pour ne pas trop dégrader l'image donc il te faudra 5 pixel minimum + 1 couleur d'un pixel suplementaire


voila je sais pas si ta bien pigé le principe
donc c'est pour ca que tu peut que faire avec du bitmap car le bitmap ne compresse pas alors que le jpeg par exemple est un algorithme de compression destructifs => donc perte de données.

la encore je sais pas si tu vois ...

faut essayer de comprendre le mecanisme avant de poster une source d'un autre


bonne continuation
a+
VBSorcier

Commentaire de Bidou le 11/05/2006 18:25:21 administrateur CS

Euh, qui a dit que j'avais rien pigé?
Ceci dit, merci pour les explications (tout ce que tu dis se trouve déjà sur le lien que j'ai mentionné mais ça évitera aux gens de devoir aller sur delphifr).

Commentaire de badrbadr le 11/05/2006 21:19:24

En informatique, la Stéganographie fonctionne génralement sur des formats qui ne subissent pas de compressions.
Ton programme fonctionne très bien avec le format bmp. Il fonctionnera avec le format gif à condition que tu gères toi-même la palette (en d'autres termes, laisse pas GDI faire).
Finalement, de tels programmes fonctionneront avec les fichiers wav aussi. oubli les mp3 :)

des améliorations que tu pourras ajouter:
- plus on prend de bits par octet, plus l'image est mauvaise et plus on peut stocker de texte. tu devrais permettre à l'utilisateur de régler ces paramètres.
- selon les paramètres, afficher en temps réel le nombre de caractères que l'utilisateur peut saisir.
- tu peux permettre l'affichage des deux versions de l'image, celle qui contient du texte et l'originale.
- crypter le texte selon une paraphrase
- support pour le format gif (très compliquée générer la palette idéal)
Ce sont des idées. Je voulais en faire un comme celui-là mais j'ai jamais eu le temps :)
Bye et bonne continuation

Commentaire de ennixo le 17/06/2006 19:30:21

pour apprendre des trucs en stéganographie je vous conseille http://www.binary-universe.net/
c'est une allemande qui présente ses recherches (code source à l'appui) en stégano.
on y trouve la possibilité de cacher du texte dans des images, de façon simple à très puissante, dans des avi et des gif, mais aussi dans des assembly .net, des fichiers midi, wav ou encore de façon plus folklorique : sur une k7 audio ou dans une liste (en fonction du tri, ce qui peut avoir beaucoup d'applications)

Commentaire de sghchafaa le 25/08/2008 13:55:44

Bonjour;

c'ete interessant de suivre la communication pour votre sujet a propos la STEGANOGRAPHIE;;

mais; je pense que c'est trés compliquer d'utiliser que la fomat bmp,non compresser pour benéficier du codage RGB,, tout est expliquer dans le message de "VBSorcier"; et puisque chaque lettre va etre code dans une pixel, alors le longueur de message est limiter au nbr de pixel.
je ne sais pas si j'ai bien exprimer ou si tu m'a compris ou pas,aussi il y on a une autre prob dans votre code,,c'est que le message integrer dans l'image et non-lisible lors de sa recuperation, il est presenter sous forme des caractères illisibles dans le text box.
alors pourkoi supporter tout ses limites,((limite de longueur de message en termes des lettres+limite de format obligatoirement non-compresser pour beneficier de RGB+limite de l'incroyable traitement fait par le micro processeur pour coder le message dans chaque pixel+probleme d'influance sur la qualités d'image+.....infiniment de limites))),,or qu'on peut arriver à la meme résultat par le moindre coût possible...!!!!

eh oui,vous savez la commande copy du MS-DOS,,celle qui sert a copier un fichier/rep de source vers destination,, elle est utiliser aussi pour integrer deux fichier dans un seule,voila un exemple

C:\>copy a.jpeg/b + s.txt/a 012.jpeg

1-un fichier image en format jpeg nommé "a.jpeg",qui sera utiliser pour cacher le texte dedans.
2-un fichier texte nommé "s.txt" qui porte le texte qu'on veut cacher
3-un fichier image nommé "012.jpeg" qui sera génerer automatiquement aprés la validation du commande.

le principe est le suivant:copier(concaténer) un fichier image "a.jpeg" qui suit le codage binaire(/b) dans un fichier texte "s.txt" qui suit le codage ASCII(/a) dans un fichier image nommé "012.jpeg",,tel que tout ces fichier se présentent dans le racine C:\\

et puis pour decoder le contenue du l'image"012.jpeg",il suffit d'un click-glisse de l'image dans un fichier txt vide,et lire les derniers lignes situer dans le fichier text.

voila,on gagne l'espace de stockage des donneés,,la format de l'image utiliser,le taritement de micro processeur,la non influance sur la qualité d'image et LE COMPTE EST BON........

Qu'est ce que tu pense!!!!!!!!

Commentaire de /dev/null le 23/01/2009 09:04:36

@sghchafaa:
Foncièrement tu n'a pas tord, on peut même faire mieux avec des streams NTFS. Mais la question n'est pas là. Ta technique ne permet que de copier deux fichier a la suite. Si tu me transfert ce fichier, en moins de 2s je sais qu'il y'a une information dedans, contrairement à la stéganographie.
Si le system est bien conçue (cryptage du contenu et des coordonnées ou commence la stégano, et padding avec des valeur aléatoire non crypté) il faut utilisé un analyser de spectre ou une transformé de fourrier (je sais c'est un peut synonyme ;)) pour pouvoir détecter la simple présence d'un contenue hypothétique. En effet, ce traitement te permettra juste d'extraire le "bruit" ajouter à l'image (qui peut être due a autre chose qu'une stéganographie).
Tu n'auras plus qu'a trouver le point d'entrée, les donné padding, puis peut être la clé de décodage.
Rien a voir au niveaux de la sécurité quoi ^^

Je tien juste a préciser que la chaine étant considérée comme une suite d'octet à encoder, on peut remplacer la String par un byte[] de manière a sténographier ce que l'on désire, voir un fichier exécutable ^^.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

dessiner un graphics sur une image contenue dans une pictureBox [ par godefrw ] Bonjour, je cherche à afficher un objet Graphics (sur lequel j'ai dessiner des formes rectangles, rond etc) par dessus une image. Mon image est conte pb d'affichage avec directx / c# [ par amorosalain ] SAMJ'essaye d'afficher une image par dessus mon espace 3D. J'utilise donc des PositionNormalTextured pour mon environnement 3D et je voulais utiliser Bitmap: colorisation de pixels...Help! [ par Zekez ] Bonjour,Voil&#224;, j'ai un petit probl&#232;me de colorisation d'une Bitmap... Je dois effectuer un remplissage de couleur (comme dans Paint) et je d declarer une image, comment??? [ par Fildomen ] salutje veux faire :Image im = new Image();et ca marche po :-[vous pouvez me dire comment declarer une nouvelle image?mercisinon, comment utiliser l Bitmap à partir d'une fenêtre... Help! [ par Zekez ] Bonjour,je suis en train de faire une application en C# dans laquelle j'ai besoin d'ins&#233;rer une sorte de printscreen d'une fen&#234;tre dans une class Bitmap obscur [ par sebseb42 ] Salut a tous, j'ai un truc plutot bizarre, je cherche a compresser des images a la voler sans passer par le disque-dur.je fait ceci :public Truc(Bitma Déclaration de bitmap [ par mael45 ] Bonjour Je fais un travail pour l'&#233;cole et l&#224; je suis compl&#233;tement bloqu&#233;.Je dois pouvoir dessiner &#224; chaque clic de souris su Conversion d'un Bitmap en Tableau a 2 dimension [ par astragoth66 ] Bonjour, j'aimerai savoir s'il est possible de convertir une image Bitmap, en un tableau &#224; 2 dimension. pouvoir regarder les pixels de mon image Impossible de visualiser un bitmap sous Photoshop ou IE... [ par robbielove ] Bonjour,Je cherche &#224; transformer les couleurs d'une image. Pour cela je cr&#233;e un bitamp aux dimensions de l'image origianle, je remplis le bi modifier un bitmap [ par catamenia ] bonjours,J'aimerais modifier une image bitmap que je viens d'ouvrir.Pour cela je fais : Bitmap b = new Bitmap(this<FONT siz


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales