Aller au contenu

Petit gadget : du texte caché dans une image


ZeBrian

Sujets conseillés

Bonjour,

J'écris juste pour vous faire connaître un énième gadget de ma conception : un petit script qui cache un texte dans une image avec un mot de passe ! Avec un peu de maths, mais j'ai réussi à faire que la perturbation engendrée pour obtenir l'image "secrète" ne soit pas visible à l'oeil nu...

Voici par exemple une jolie moto : http://local.izipub.com/project_hide/moto.jpg

et sa version contenant un texte crypté avec le mot de passe "test" : http://local.izipub.com/project_hide/abc878.png

Pour décoder l'image cryptée, c'est ici

Pour crypter une nouvelle image, c'est là !

Voilà, amusez-vous bien :P

Lien vers le commentaire
Partager sur d’autres sites

j'adore !

Par contre, ton original fait 65ko, tandis que la photo avec le texte fait 221ko.

Sans ça ça me ferait un outil de copyright très pratique ;)

Modifié par Phobos
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Le fonctionnement est très simple :

1) à partir du mot de passe, on génère une clef

2) pour chaque lettre du texte, on choisit un pixel de l'image : le parcours des pixels choisis dépend de la clef

3) étant donné que les lettres peuvent être codées sur 8 bits tandis que la couleur d'un pixel est codée sur 24 bits, il est relativement facile de modifier très légèrement la couleur du pixel afin d'y coder une valeur correspondant à la lettre (la manière de modifier la couleur dépend également de la clef)

Pour décoder, une fois équipé du mot de passe, on génère la clef, on en déduit le parcours des pixels, on extrait chaque lettre une par une et on recolle le tout !

Par rapport à la sortie en PNG, je suis en train de voir si je ne pourrais pas sortir du JPEG mais mes premiers essais ne sont pas concluants : même avec une compression de qualité 100%, il semble que des informations sur les couleurs des pixels soient perdues, on ne peut alors plus récupérer le texte...

Edit : En fait, après quelques tests, sur une image de 180.000 pixels que je passe en JPEG avec une compression de qualité maximale avec GD, j'ai 61.753 pixels dont les couleurs sont légèrement modifiées... Ma méthode ne peut donc pas s'appliquer avec une compression JPEG :(

Modifié par ZeBrian
Lien vers le commentaire
Partager sur d’autres sites

En effet, c'est un peu du watermark, sauf que le texte n'est pas accessible directement ! En fait, je n'avais même pas pensé à cette utilité au départ ;)

Lien vers le commentaire
Partager sur d’autres sites

Salut ;)

Assez impressionnant... J'ai regardé avec une image noire quels étaient les pixels changés, ça forme une jolie figure, ça doit être impossible à décrypter sans connaissances de cryptage :P

Par contre...

Fatal error: Maximum execution time of 30 seconds exceeded in E:\Public\project_hide\decode.php on line 68

Impossible de tester si le texte a bien marché sur mon image. Frustrant !

Lien vers le commentaire
Partager sur d’autres sites

Excellent ce petit gadget !

Je ne savais même pas que ca pouvait éxister ce genre de petite protection pour cacher des infos... Je garde les liens précieusement en tout cas, merci :)

Lien vers le commentaire
Partager sur d’autres sites

sarc : En effet, ton image génère une boucle infinie dans mon algorithme ! Il faut simplement que j'affine un peu la méthode pour générer les emplacements des pixels à changer, celui-ci finit par tourner en boucle pour certaines images... Je m'y mets de suite ;)

Wolf18 : De rien, mais puisque je vois que vous avez l'air d'aimer, j'en ferai une version plus correcte bientôt ! :)

Lien vers le commentaire
Partager sur d’autres sites

Cool ! J'étais sûr d'arriver à faire buguer ton programme rapidement :blush: ... J'ai eu la chance de créer un programme sur les images (algorithmes de compression, modifications d'images, etc.), et je sais quelles sont les erreurs à deux francs qu'on peut avoir... Généralement, les limites (255 et 0) sont génératrices d'erreurs. Je ne sais pas si c'est ça qui a fait buguer avec mon image noire, m'enfin...

Et euh, juste par curiosité : ça sert à quoi ? Enfin, pour quelle application tu as écrit ce programme ? Simple entraînement ou tu y trouves un intérêt pour un site ?

Lien vers le commentaire
Partager sur d’autres sites

Il risque d'être contacté par la mafia rapidement si il perfectionne encore un peu le principe :P

En effet, une version plus stable et plus agréable à regarder sera la bienvenue :)

Bonne continuation.

Lien vers le commentaire
Partager sur d’autres sites

Moi qui utilise des images en PNG en temps normal, je vais aussi m'y mettre :)

Merci!

Ton outil est librement utilisable?

/EDIT : Tu ne gères pas les transparences

//EDIT 2 : J'avais mis comme mot de passe "azerty" mais j'ai récupéré le texte en ne mettant que "azert" en mot de passe... "azerty" marche aussi, d'ailleurs.

Modifié par Théo B.
Lien vers le commentaire
Partager sur d’autres sites

Bien sûr, ce n'est qu'une première version, j'ai omis de préciser qu'environ un mot de passe sur 600 fonctionne pour toutes les images :P

En fait, j'ai fait ça par simple curiosité : l'idée m'est venue après m'être intéressé au problème de cacher une image dans une autre (en effaçant les bits faibles de chacune des deux images et en utilisant les bits forts de l'image à cacher en tant que bits faibles de l'image rendue)

Par rapport au bug engendré par l'image noire, il est en fait dû aux dimensions de l'image et non aux couleurs ;)

Sinon pour la libre utilisation de cet outil, je ne vois pas pourquoi j'en restreindrai l'usage ! Je suis étudiant donc je n'ai pas le temps de me lancer dans des poursuites judiciaires :P

Enfin, pour la question de la transparence, c'est une limitation de la librairie GD pour PHP : elle ne gère pas le canal alpha des PNG :unsure:

Lien vers le commentaire
Partager sur d’autres sites

En effet, c'est un peu du watermark, sauf que le texte n'est pas accessible directement ! En fait, je n'avais même pas pensé à cette utilité au départ ;)

Parce que dans un watermark le texte est accessible directement :- ?

Lien vers le commentaire
Partager sur d’autres sites

Arf voui j'aurais du faire un tour sur Wikipédia ;). Mais y ayant passé l'aprem pour des recherches en économie je n'ai bizarrement pas eu le réflexe :P.

Lien vers le commentaire
Partager sur d’autres sites

mdr ;)

Sinon, j'arrive à faire des trucs intéressants avec la prochaine version de l'algorithme... Par exemple stocker 50 ko de données dans une image de 500x360 pixels, sans que le changement ne soit visible (et pourtant j'ai de bons yeux :P).

Bien sûr, on garde les limitations de poids du format PNG, et les multiples nuances augmentent la taille du fichier final, mais le texte reste complètement invisible, ce qui quand on veut surtout faire passer anonymement des données est le principal ! Par contre, je ne vais peut-être pas trop vanter ce côté-là de l'algorithme car j'ai peur d'avoir des ennuis avec la CIA :P

A bientôt pour une nouvelle version avec possibilité de cacher n'importe quel type de données ;)

Lien vers le commentaire
Partager sur d’autres sites

y aurait il un moyen d'avoir le source, ca pourrait m'interesser pour certaines applicaions : en gros c'est open source (si oui quel type de licence) ?

En tout cas un boulot vraiment interessant

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Entre libre d'utilisation et open source, il y a tout de même une grosse différence...

Etant donné que ça a l'air de plaire, j'essaierai peut-être d'en faire un service web gratuit avec quelques publicités, ce qui rend donc l'idée de partager le code source assez risquée... Je ne pense donc pas distribuer le code source dans un premier temps ! :unsure:

De plus, je n'ai strictement aucune compétence en cryptographie ! Tout ce que j'ai fait est d'utiliser astucieusement quelques formules mathématiques, il est donc possible que l'on puisse hacker relativement rapidement le cryptage. Utiliser cet algorithme dans un logiciel sérieux serait donc contre-indiqué...

Edit : La nouvelle version semble prometteuse : 300.000 essais de mots de passe ne suffisent pas pour arriver à décoder une image :)

Edit2 : 1 million d'essais non plus :D

Edit3 : Reste plus qu'à faire l'interface utilisateur, mais je vais me coucher, j'ai cours demain :smartass:

Modifié par ZeBrian
Lien vers le commentaire
Partager sur d’autres sites

Open source ne veut pas dire réutilisation à l'identique mais possibiltés de l'améliorer pour l'adapter à une utilisation bien précise.

Du beau travail dans tous les cas.

Modifié par ludo88
Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Ah tiens ? Merci de l'info :unsure:

A vrai dire, je ne sais pas vraiment où me renseigner à ce sujet... Aurais-tu des sources plus précises ?

Edit : En plus, maintenant que l'algorithme est capable de crypter n'importe quel fichier dans une image (on peut par exemple dissimuler une image de 800x600 pixels sans problème dans une image de 500x360), il faut que je trouve un moyen d'empêcher les utilisations malsaines (pédophilie...) de mon outil :wacko:

Modifié par ZeBrian
Lien vers le commentaire
Partager sur d’autres sites

Excellent ce petit gadget !

Je ne savais même pas que ca pouvait exister ce genre de petite protection pour cacher des infos... Je garde les liens précieusement en tout cas, merci :)

En fait, il s'agit de stéganographie, qui comprend 2 branches :

- le watermarking et

- le data-hidding (dont son programme fait partie)

dans le watermarking, il y a 2 sous-types :

- un fort (qui permet d'insérer un copyrit, je pense qu'ils doivent utiliser ce type d'outils pour marquer les DVD en avant première pour la presse pour voir d'où viennent les fuites)

- un faible qui sera détruit à la moindre modification du fichier, celui-ci sert à authentifier la non modification d'un fichier, par exemple un acte de vente, etc...

Lien vers le commentaire
Partager sur d’autres sites

En fait, il s'agit de stéganographie, qui comprend 2 branches :

Grilled :/

On en avait parlé après le 11 septembre, la légende disait qu'Al Qaida faisait passer ses messages sur internet, par des images, grâce à la stéganographie.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...