Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/01/2011, à 08:10

ehmicky

Stego++, projet de bibliothèque de stéganographie

Salut à tous,
[Message mis à jour 19/11/11]

Je suis actuellement sur un projet de stéganographie (art de dissimuler un message secret dans "quelque chose" (fichier, phrase, etc.) d'apparence banal). Il s'agit de faire une bibliothèque C++, Stego++, qui permette à tout développeur, même connaissant peu la stéganographie, de développer une application de stéganographie, ou de l'utiliser dans son travail. Elle sera sous licence LGPL3 et multi-plateforme (au moins Mac OS X, Windows, GNU/Linux et BSD).
L'idée est de faire suivre cela par une commande Unix utilisant Stego++, puis par une appli avec GUI, mais le coeur du projet est la bibliothèque.

Je n'ai rencontré que très peu de bibliothèque de stéganographie, et je pense qu'il s'agira de la première en fait qui soit complète (et pas centrée sur un format ou algo donné) et libre.

Mes principaux objectifs pour Stego++ :
   1) modulaire. De nombreuses méthodes de stego, même très différentes et sur des media très divers (texte, image, video, paquet TCP, système de fichier, etc.) pourront être implémentées sous forme de modules.
   2) "secure". Les modules de stego devront répondre à des critères précis et chiffrés en matière de résistance aux attaques stéganalystiques.
   3) simple. Un développeur ne connaissant rien en crypto ni en stego doit pouvoir lire la documentation de l'API et pouvoir après une demi-journée coder ce qu'il veut en quelques dizaines de lignes. L'API doit être aussi petite que possible, même si ce but rentrera nécessairement en conflit avec mon désir d'intégrer plusieurs fonctions comme l'authentification, compression, etc.

Je suis en pleine recherche (lecture de beaucoup de travaux de recherches (j'en suis déjà à mon quatrième gros bouquin technique), de codes sources (au moins 150 logiciels à lire en diagonal), etc.) pour essayer d'avoir quelque chose de sérieux.

Une fois le coeur de la biblio pensée et codée, je vous invite de tout coeur à collaborer !
   - code commenté avec Doxygen
   - deux documentations, une pour l'API publique, une pour les contributeurs
   - utilisera Sourceforge ou quelque chose de similaire
   - une documentation supplémentaire vous expliquant les principes de bases de la stégo

Pourquoi participer ? Parce que si jamais vous vous intéressez un peu à la crypto, vous serez passionnés par la stégo. De même que la crypto avant les années 70, la stégo reste un outil spécialisé pour agences gouvernementales (NSA, etc.) et groupes terroristes. De même que la crypto ou la robotique par le passé, son utilisation par les entreprises et le citoyen lambda me semblent encore sous-estimée, et il y a un grand essor à venir (et ce serait cool que le mouvement du libre en fasse partie).

Je sais que beaucoup d'entre vous sont par ailleurs préoccupés par la mise à mal croissante de l'anonymat et de la liberté sur Internet. Je pense qu'il est possible de défier ces mesures par des logiciels de crypto et de stégo. En tant que développeurs, il est même de notre devoir de développer de tels logiciels pour que le citoyen lambda puisse continuer à utiliser les nouvelles technologies comme des merveilles pour nos libertés (de communication, d'apprentissage, etc.), et non devenir de simples consommateurs apathiques. Et je pense que, de même que la crypto aujourd'hui est aux premières lignes de ce combat (Tor, contournement du Great Chinese Firewall, monnaie cryptographique, etc.), la stégo le sera bientôt. (cf le mouvement cypherpunk)

Il y a également plusieurs usages créatifs de la stégo possible : par exemple, je compte intégrer un procédé de watermarking de code GPL, permettant la détection rapide de code propriétaire utilisant du code GPL sans permission.

Le projet me prend du temps et la phase implémentation ne sera qu'en dernier et sera courte, pour l'instant j'en suis à la phase apprentissage de bibliothèque/recherches sur la stego/penser à l'interface.

Les technos pour l'instant sont :
   - General : C++ / Boost
   - Chiffrement : Crypto++ (j'hésite encore avec openssl)
   - Compression : libzpaq
   - Versioning : Git
   - Documentation : Doxygen
   - Build : CMake
   - Manipulation d'images : pas encore décidé
   - Internationalisation : gettext (traductions anglais et chinois prévues)

Dernière modification par ehmicky (Le 19/11/2011, à 15:17)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#2 Le 16/01/2011, à 08:50

Shanx

Re : Stego++, projet de bibliothèque de stéganographie

Je trouve ça intéressant dans l'idée, même si moi je n'en vois pas trop l'utilité (pour l'utilisateur français lambda). Après, si ça peut être un outil pour lutter contre les dictatures, c'est cool smile


Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied

Hors ligne

#3 Le 16/01/2011, à 09:13

lann

Re : Stego++, projet de bibliothèque de stéganographie

J'avais fait un truc dans le genre au début de mon apprentissage en C++.
Les sources sont ici : sources

Tout d'abord c'était au temps ou je codais avec les vilains MFC. Je sais c'est très mal mais à l'époque j'étais ignorant.  Donc ce code est fait que Windows.
Mais il y a peut-être quand même des choses intéressantes.

Je crois que ce n'est pas tout à fait de la stéganographie puisque l'image n'est pas altérée, juste les bits qui ne servent pas pour l'affichage du fichier bmp. Et croyez moi, il peut en avoir beaucoup.

A+

Hors ligne

#4 Le 16/01/2011, à 09:29

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

@Shanx : oui c'est mon but principal. D'ailleurs, je lis ta signature, et justement un système de fichier stéganographique a été développé par Julian Assange, et il a contribué à populariser la deniable encryption (qui est vraiment une idée ingénieuse).
En France, on en a pas encore l'utilité, mais je suis sûr que le jour viendra bien tôt wink
@Iann : merci pour les sources, je vais regarder. J'imagine que tu as modifié des champs de l'header/footer ou modifié la table des couleurs ?

Dernière modification par ehmicky (Le 16/01/2011, à 09:33)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#5 Le 16/01/2011, à 11:27

lann

Re : Stego++, projet de bibliothèque de stéganographie

Oui c'est ça
Et dans les couleurs du dessin, il me semble. A ce que je me rappelle.

Hors ligne

#6 Le 18/02/2011, à 05:49

Chaussette

Re : Stego++, projet de bibliothèque de stéganographie

je déterre un peu le topic,
faire de la sténo sur des images est très facile (dans le principe, le tout c ' est de le faire bien mathématiquement);
proposer une gui qui permettrait de choisir une image et une info à coder (image, texte, lien) pour les lier serait facile aussi.

Si tu as des connaissances en c ou c++ (bien que je ne vois pas l' intérêt de c++ dans ce genre de traitement ) lance toi !
Si tu veux je te fait ta gui en c/gtk ; le projet m' intéresse. Je peux peut-être aussi t' aider pour le moteur, mais je ne sais pas où tu en es et quels sont tes connaissances. J' imagine que tu sais ce que tu fait.
Sinon as tu avancé ? Ce serait bien ..!
cordialement
chaussette

Dernière modification par Chaussette (Le 18/02/2011, à 05:58)


Les clowns se marient en grande pompes

Hors ligne

#7 Le 18/02/2011, à 14:46

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

En fait j'ai toujours 0 code, mais je suis bien déterminé dans mon projet, parce que la partie "code" va être rapide comme tu le dis ça demande pas masse de code, c'est surtout la recherche avant qui prend du temps.
Alors, sinon, en fait effectivement, ce qui est compliqué c'est la stégano elle-même. Parce que le niveau 0 de la stégano, à savoir modifier le bit le plus faible de chaque octet d'une image .bmp, peut être codé en 20 lignes. Par contre, il y a des trucs un peu plus compliqués :
  - application de principes comme la "deniable encryption"
  - étude de la stéganalyse pour pouvoir proposer quelque chose qui soit pas détectable par les méthodes statistiques de la stéganalyse (qui est un domaine assez jeune)
  - stégano "originale" : par exemple, je suis en train d'apprendre l'ASM x86 (et j'ai bien avancé) pour pouvoir dissimuler un message en modifiant une instruction par une/plusieurs autres identiques (ex : add ax,1 -> inc ax). Ce genre de trucs est relativement facilement détectable, et en plus j'ai cru comprendre que ce qui paraît être "à l'oeil" des instructions identiques, peuvent produire des conséquences différentes, par exemple avec plusieurs threads, ou sous des environnements particuliers.

Tout ça pour dire que ce que je fais surtout là, c'est apprendre les connaissances en stégano et les bibliothèques nécessaires pour le projet. Pour l'instant j'en suis à :
   - C++ / Boost.
   - Gtkmm pour le GUI
   - Crypto++ pour la crypto
   - J'hésite encore sur la bibliothèque de manipulation d'images. Je préfère en utiliser une que manipuler directement la mémoire via des pointeurs, parce que c'est beaucoup plus simple pour tout ce qui est manipulation des headers, des coefficients de compression .jpeg, etc. Donc j'hésite d'un côté entre CIMG ou ImageMagick++, et de l'autre libpng et compagnie.
   - j'ai aussi appris libzpaq qui me permettra de compresser les data à dissimuler avant de les encrypter, ce qui au final dégradera moins le support (image, fichier, etc.) et sera donc moins détectable.
  - Doxygen pour la doc', Git pour les versions (projet sûrement hébergé sur Github).

Ensuite, au niveau de mon planning, je pense :
  1) développer le projet avec seulement stégano de fichier .png, .jpeg et .bmp sur le bit le plus faible, et dispo seulement en ligne de commande.
  2) mettre en GUI en complément de la ligne de commande.
  3) Si vraiment, j'en ai les compétences (ce dont je suis pas sûr), proposer une bibliothèque à partir du projet pour les développeurs qui veulent intégrer de la stégano dans leur propre projet sans se prendre la tête. Je suis vraiment persuadé que la stéganographie peut avoir, comme la crypto, des domaines d'applications bien plus larges que ce qu'on pense.
  4) Ajouter de nouvelles méthodes de stégano : utilisation des facteurs de compression .jpeg, encodage de la table des index couleurs .gif, stégano sur fichier texte pur (remplacement de mot, etc.), stégano sur paquet TCP, etc.

Donc, en fait pour le C++, y'a deux raisons :
   1) J'ai en fait déjà une idée de l'architecture du projet, et j'aimerais faire une abstraction de chaque "méthode" de stégano pour pouvoir facilement ajouter de nouvelles méthodes, bien que complètement différentes d'un point de vue pratique, sans que cela chamboule tout le projet. En gros, une interface pour l'information à dissimuler, une autre pour la manière de la dissimuler (qui inclue la méthode + le "carrier", fichier porteur (même si je réfléchie à d'autres organisations possibles)), ce qui permettra par exemple de dissocier la chose à dissimuler (image, vidéo, texte) du carrier (image, vidéo, texte). Ca a des avantages, mais y'a aussi pas mal de problèmes que j'ai à résoudre. En tout cas, c'est pour ça notamment que j'avais pensé à une approche objet, et vu que la performance compte malgré tout, C++ me semblait le plus aproprié. Faire de la programmation objet en C, façon Glib, me donnerait vraiment un mal de crâne.
  2) En conséquence, la plupart des bibliothèques dont j'ai déjà passé du temps à apprendre sont C++.

Avec une chose en plus : l'interface (que ce soit GUI ou CLI) doit être "internationalized" pour favoriser l'ajout de nouvelles langues, puisque pour commencer il devrait y avoir au moins une version anglais/français (je peux le faire) ainsi qu'une version chinois probablement (j'ai sans doute un traducteur). Et le chinois contient des considérations de localisation vraiment particulières et pas simples.

Donc comme tu le vois, c'est tout un projet, c'est pour ça que j'avais précisé au départ que y'aura pas une ligne de code avant au moins 6 mois. D'un autre côté, cela fait déjà 4/5 mois que je suis dessus quasiment tous les jours, donc ce sera pas un vaporware, la motivation est là depuis déjà un certain temps, et j'ai bien progressé d'ailleurs, même si l'apprentissage de théories et de bibliothèques ne se chiffre pas en lignes de code.
En plus, j'ai entrepris de lire le code source des 10/15 projets libres qui existent déjà et de regarder les fonctionnalités des applis proprio existantes, donc ça fait beaucoup de boulot, mais je suis motivé parce que j'ai une amie militante en Chine qui pourrait directement bénéficier du logiciel pour des questions de censure.

Donc, pour ton aide, en fait je connais (à peu près) Gtkmm, j'avais pensé le faire, mais ton aide est bien sûr bienvenue (merci), mais faut prendre en considération le fait que le GUI est dans la "phase 2", et aussi le problème entre C et C++. Au contraire, mes projets jusqu'ici sont solos et avoir une contribution serait une bonne expérience, c'est d'ailleurs dans cette optique que j'ai voulu héberger ça sous Github pour favoriser la collaboration (tout en sachant que 70% des projets libres sont solos).
Maintenant, peut-être faut-il attendre de voir le projet émerger et que je code la "phase 1", ce qui arrivera pas avant 6 mois, je pense dans une fourchette 6 mois-1 an.

Edit : sinon, en fait les trucs qui me rendraient vraiment un coup de main au niveau du moteur, sont au niveau de l'optimisation et tout ce qui touche à des choses trop complexes mathématiquement. J'ai fait des études littéraires, et j'ai un niveau en maths vraiment très mauvais, même si avant d'entreprendre ces études, j'avais un bon niveau et que j'ai appris des choses via l'informatique. Mais dans tout ce qui est algorithmique "très mathématique", je suis pas qualifié.
Par ailleurs, l'ajout de nouveaux "modules", comme la stégano sur paquets TCP, ou les 70 autres manières de dissimuler un message sont aussi vraiment bienvenues, en plus si mon architecture est ok, ça devrait s'intégrer sans trop de problèmes, et certains modules peuvent certainement prendre pas plus de 100 à 200 lignes de code. Mais pour ça, il faut déjà avoir fait les phases précédentes.

Dernière modification par ehmicky (Le 18/02/2011, à 20:34)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#8 Le 20/02/2011, à 06:30

Chaussette

Re : Stego++, projet de bibliothèque de stéganographie

salut,
pour les autres méthodes de sténo il faudrait aussi penser à une approche analogique.
En imaginant par exemple, que je colle des affiches dans la rue pour prévenir du prochain concert de l' association des chanteurs de yodoll en Chine ( ! ça risquerais plutôt d' attirer l' attention smile ) Un simple téléphone avec appareil photo et hop, plus qu' a copier ensuite sur l' ordi et traiter avec ton logiciel.


Les clowns se marient en grande pompes

Hors ligne

#9 Le 20/02/2011, à 15:07

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

Tu veux dire permettre d'utiliser de la reconnaissance de caractères ?


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#10 Le 20/02/2011, à 17:01

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

Pourquoi les peuples ont besoin d'outils de stéganographie et de cryptographie libres et simples à utiliser.
L'information est une arme, son contrôle un pouvoir.

Dernière modification par ehmicky (Le 20/02/2011, à 17:04)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#11 Le 21/02/2011, à 07:54

Chaussette

Re : Stego++, projet de bibliothèque de stéganographie

salut,
non je parle d' extraire une information stéga dans une donnée qui n' est pas forcement bien capturée/conservée/distribuée. Avec une approche analogique, si l' image par exemple est froissée ou qui lui manque un coin ce n' est pas grave, l' information sera quand même lisible.
Et puis il faut imaginer tout les cas ou l' information codée logiciellement, ne transite pas de manière numérique et où il y perte de données; même si ces cas seront rares. Comme la pochette du cd plutôt que le cd lui-même, l' affiche qui subit des intempéries, le t-short ou le drapeau qui déforment l' image..
Tu peux même appliquer ce principe (quoique beaucoup plus difficile) dans des données numériques. Le net à tendance à copier, modifier, redistribuer l' information. Si ta donnée symbiote est tenace elle sera encore lisible.
On peut imaginer qu' un nouveau buzz (une vidéo, une image, un texte) contienne de la stéga. Comme tout buzz il va se faire tronquer, hacher menu, et se retrouver dans diverses formes/conteneurs sur la toile.

Dernière modification par Chaussette (Le 21/02/2011, à 08:03)


Les clowns se marient en grande pompes

Hors ligne

#12 Le 21/02/2011, à 08:38

Nasman

Re : Stego++, projet de bibliothèque de stéganographie

Il y a un paramètre à prendre en considération, c'est le rapport entre la quantité d'informations dissimulées et la taille du "support". Si on dissimule du texte brut (genre ascii), il sera possible de mettre pas mal d'information dans une image, une vidéo, de la musique..., si on veut dissimuler des choses plus lourdes (films...), ce sera plus dur.

Je me suis déjà intéressé à la cryptographie et à la stéganographie et ai fait quelques programmes en assembleur (dont des calculs de transformée de Fourier rapide) - je pourrais peut être être utile.


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

En ligne

#13 Le 21/02/2011, à 13:10

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

@Chaussette : ah oui, effectivement, j'y avais pensé, par exemple si on recompresse une image .jpg ou qu'on l'enregistre sous un autre format. Je vais prendre ça en compte !
@Nasman : je pensais calculer un "indice de dégradation" du support (carrier) qui indique à la fois la dégradation visible (ou auditive) du support mais aussi ses chances d'être repéré par une approche statistique, et d'afficher (dans le GUI ou le CLI) des avertissements en conséquences, mais ne pas empêcher le process même si cet indice est faible. Qu'en penses-tu ?


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#14 Le 21/02/2011, à 16:02

Nasman

Re : Stego++, projet de bibliothèque de stéganographie

Je pensais à une autre chose : les modifications apportées au support ne doivent pas empêcher le fichier support de s'ouvrir correctement.
Par exemple un fichier jpg source auquel on "rajoute" des éléments stéganographiques doit toujours avoir une structure de fichier jpg (donc s'ouvrir) et ne pas afficher clairement qu'il a été modifié.
Quand on travaille sur une image bitmap (en altérant les bits de poids faible par exemple), on sait que les modifications seront quasiment indétectables. Pour les autres formats compressés ou d'encodage différent il faudra connaitre le principe de codage de l'image pour faire des modifs indétectables.

En définitive il y aura deux possibilités :
- image bitmap + texte codé, encodage non destructif, expédition, décodage non destructif, extraction du texte

- image bitmap, encodage, rajout de texte codé, expédition, extraction du texte
dans le deuxième cas l'étape décodage après expédition doit donner quelque chose similaire à l'image bitmap d'origine pour éviter la détection.


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

En ligne

#15 Le 21/02/2011, à 16:31

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

En fait la stégano par modification du bit faible sur image .bmp est détectable par analyse statistique (même quand le message est mis en bouillie par un chiffrement symétrique).
Sinon, mon but est de pas modifier le format du carrier : un .jpg doit resté .jpg. Donc effectivement pour les .jpg faut s'attaquer au format .jpg, mais y'a vraiment plein d'astuces impressionnantes qui existent déjà, par exemple en modifiant les coefficients de compression des blocs de pixels, en modifiant les headers, etc. C'est pour ça que je voulais utiliser une bibliothèque type libjpeg pour le faire, ce sera plus simple et le code sera plus clair.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#16 Le 25/02/2011, à 13:24

Airballman

Re : Stego++, projet de bibliothèque de stéganographie

Tu es en train de créer un soft qui fasse ça du coup ehmicky ?

Hors ligne

#17 Le 25/02/2011, à 19:10

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

Oui, cf le topic, j'ai même mis les technos utilisées. Ce sera GPL3 et si y'a une API elle sera licence BSD-like ou LGPL3. Mais faut compter au moins 6 moins (=> septembre) avant de voir quelque chose.


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#18 Le 27/02/2011, à 14:22

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

Je continue à étudier les autres logiciels, et je sens que y'a vraiment besoin d'un logiciel de stéganographie. Il y a en fait 150-200 outils déjà existants. Cependant, pour beaucoup d'entre eux, il y a un ou plusieurs de ces problèmes :
   - plus maintenu (80% d'entre eux). La moitié d'entre eux ne dépasse pas Windows 2000
   - pas de GUI
   - Windows only
   - stégano faible (beaucoup de modif' sur least-significant bit sur fichier .bmp 24 bits only)
   - pas d'encryption, ou chiffrement faible (rot13 !)
La plupart des outils existants ont au moins 1 de ces défauts, ou bien ne sont pas libres. Jusqu'ici je n'ai pas trouvé d'outils à la fois :
   - libre
   - avec GUI
   - multi-plateforme, et encore maintenu
   - avec stégano viable + chiffrement viable
Je continue ma recherche, j'en trouverai peut-être. En tout cas, si j'en trouve pas, je commence vraiment à me dire que du coup ce sera bien de développer ça pour la communauté. En plus, j'aimerais aussi apporter :
   - CLI dispo en plus du GUI
   - une API avec une interface simple, "libstegano"
   - une documentation sur les outils et techniques de stegano existantes (celle que je fais en ce moment)
   - essayer de faire le logiciel de manière modulaire pour permettre simplement l'ajout de nouvelles techniques de stégano sous forme de modules. Et favoriser la collaboration avec Doxygen + Git.

Je regarde aussi le code source des outils existants pour voir les algorithmes principaux, parce que certains sont très originaux.

Dernière modification par ehmicky (Le 27/02/2011, à 16:57)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#19 Le 01/03/2011, à 13:12

Airballman

Re : Stego++, projet de bibliothèque de stéganographie

Si tu commences sérieusement à développer, et que tu as des besoins ça m'intéresse que tu le fasses savoir.

Je pourrais peut-être te filer un coup de main sur certaines parties. (Par exemple ajout de fonctions de stégano dans ton logiciel . . . ) .

Enfin à voir smile.

Voilou.

Hors ligne

#20 Le 01/03/2011, à 13:40

magestik

Re : Stego++, projet de bibliothèque de stéganographie

Salut,

Si ça peut aider, j'avais découvert une technique imparable pour cacher des trucs dans des jpeg. J'avais trouvé ça quand j'ai cherché à comprendre comment fonctionnait le format MPO, qui est un format d'images 3D. Bref, le problème est pas là, mais j'ai réussi assez simplement à cacher du texte dans mon image. Après je mettais du texte "simple" mais après c'est du texte, j'aurais très bien pu le crypter.

J'avais même distribué les sources, par contre j'avais pas fait de GUI, mais en GTK, avec glade, ça peut se faire assez rapidement. Si quelqu'un est intéressé, soit par les sources (ça faisait même pas 100 lignes), soit par la méthode en question (que je pourrais pas détailler en précision juste de tête vu que c'était du travail en hexadécimal) demandez moi wink Ou alors si quelqu'un veut le logiciel en question je peux faire une petite interface GTK et en faire un paquet DEB, pas de problème.

Voilà,

Magestik

Hors ligne

#21 Le 01/03/2011, à 14:06

ehmicky

Re : Stego++, projet de bibliothèque de stéganographie

Salut,
Effectivement, ce qui m'intéresserait, c'est l'algo lui-même. J'ai lu plusieurs textes sur le sujet, avec notamment surtout des méthodes modifiant les coefficients DCT, et puis des améiorations pour résister à une attaque stéganalystique. Il y a une dizaine d'outils sur ce principe et plusieurs travaux de recherche. C'est intéressant parce que ça résiste un peu aux recompression/recadrages, etc.
Merci, tu peux décrire l'algo ou c'est trop long ?


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#22 Le 01/03/2011, à 14:53

magestik

Re : Stego++, projet de bibliothèque de stéganographie

Ca va pas du tout chercher aussi.

Déjà c'est quelque chose que j'ai complétement inventé (ça devait peut-être déjà exister), et comme je l'ai dit ça tient en même pas 200 ligne ... tout les programme en 200 lignes : lecture du texte dans une image (ou on avait déjà écrit), écriture (dans une nouvelle image) et saisie du texte qu'on veut mettre dans l'image.

Le principe est très simple : en fait j'ouvrais l'image en hexadécimal, à la fin je rajoutais un header (hexadécimal) JPEG (c'est ça dont je me rappelle plus exactement la séquence, mais je sais même pas si on est obligé de mettre ça.). Et après ce deuxième header tu mettre tout ce que tu veux, pas de problème. Moi je mettais du texte en clair, mais rien ne t'empêche de mettre du texte crypté (avec le cryptage que tu veux) ou même le binaire d'une archive (j'avais essayé et ça avait marché). J'ai essayé d'ouvrir l'image avec plusieurs logiciels : aucun problème l'image s'ouvre comme si de rien n'était.

Bon je pense que tu pensais à des choses beaucoup plus compliqué, mais cette méthode permet d'avoir quelque chose simple assez rapidement. Et pour peu que tu crypte ton texte comme il faut, alors pas de problème il devrait être illisible. Je m'y connais pas trop en cryptage, mais en C++ il doit pas manquer de lib pour faire ça. Après à toi de voir ce que tu veux faire.

Petit hors-sujet pour ceux que ça intéresse : le format MPO c'est en fait une deuxième image JPEG après une deuxième. Donc on a notre première image avec son header JPEG et quand elle est finie on a notre deuxième header JPEG suivi de l'image en elle même.

Si tu veux plus d'infos hésite pas wink

Dernière modification par magestik (Le 01/03/2011, à 14:53)

Hors ligne

#23 Le 01/03/2011, à 15:43

Airballman

Re : Stego++, projet de bibliothèque de stéganographie

Tu aurais pu mettre un lien vers les sources direct histoire de se faire une idée ^^ tongue

Hors ligne

#24 Le 01/03/2011, à 15:44

Airballman

Re : Stego++, projet de bibliothèque de stéganographie

Après ehmicky, si j'ai bien compris, en fait ce que tu cherches à faire est de rassembler toutes ces différentes méthodes dans un seul et même endroit et de mettre un joli empaquetage graphique par dessus smile . Je me trompe?

Hors ligne

#25 Le 01/03/2011, à 19:26

magestik

Re : Stego++, projet de bibliothèque de stéganographie

Airballman> j'aurais pu, si je les avais mise en ligne. Mais quand j'ai écrit le message j'étais pas chez moi donc pas accès à mes fichiers.

Mais maintenant c'est bon, j'ai accès à mes fichiers. Voilà le code en question, du moins ce que j'en ai retrouvé :

import binascii

image = raw_input()

separateur = binascii.unhexlify('FFD8FFE1')

f = open(image,'rw')
files = f.read()
f.write(files + separateur + "TEXTE")
f.close()

Hors ligne