begin process at 2012 02 07 08:28:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > STEGANOGRAPHIE: BMPSTEGANO, CACHER DES DONNÉES DANS UN BITMAP 24 BITS [DEV-C++ 4]

STEGANOGRAPHIE: BMPSTEGANO, CACHER DES DONNÉES DANS UN BITMAP 24 BITS [DEV-C++ 4]


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité & Cryptage Niveau :Débutant Date de création :23/03/2004 Date de mise à jour :24/03/2004 18:48:00 Vu / téléchargé :3 057 / 368

Auteur : street_pc

Ecrire un message privé
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Programme en anglais.
-Cache des données (fichier, texte saisi manuellement)
-Retrouve et affiche ou asuvegarde ces données
-Altération de l'image de 6% maximum au niveau coloration ;-p
-Focntionne uniquement sur des bitmaps 24 bits non compressés (évidemment)
-Source commentée (en anglais approximatif :-D)

Développé avec Dev-C++ => conio.c, désolé pour les puristes je suis un flemmard
Pour ceux que ca intérese/rebute: 749 lignes, dont 617 de code

Source

  • //cf. le .zip
  • // y'a aussi le fichier projet Dev-C++
//cf. le .zip
// y'a aussi le fichier projet Dev-C++

 Conclusion

Aucune garantie n'est fournie. Vous serez sympa de me prévenir de tout bug ou de toute amélioration si vous le redistribuez. Vos remarques sont les bienvenues, etc.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier22 415 octets
  • stegano.devTélécharger ce fichier [Réservé aux membres club]836 octets

Télécharger le zip


 Sources du même auteur

INFOS CARACTÈRES ASCII/VALEURS POUR LA CONSOLE

 Sources de la même categorie

PROJET DE CRYPTOGRAPHIE: RSA À JEU REDUIT D'INSTRUCTION par samatarahmed
Source avec Zip Source avec une capture CRYPTOSYSTÈME ELGAMAL LIBRAIRIE GMP par louelh95
Source avec Zip Source .NET (Dotnet) NOUVEL ALGORITHME D'ENCRYPTION-DÉSENCRYPTION DYNAMIQUE (INFA... par vletktol
Source avec Zip A2DCRYPT - CRYPTAGE 2048 BITS par darkor
Source avec Zip Source avec une capture CRYPTEUR-DÉCRYPTEUR-IP par antho974

Commentaires et avis

Commentaire de djl le 23/03/2004 14:48:52

pas mal, ca marche bien :), dommage que ca melange c et c++...

this->...  c'est pour plus de clarté ca?

Commentaire de LordBob le 23/03/2004 17:53:45

ton programme est pas mal, mais pourquoi faire des commentaires en anglais?

Commentaire de street_pc le 23/03/2004 18:49:00

djl > oui c'est pour plus de clarté (surtout pour moi) et une habitude que je partage avec le php ;-p. je suis très désordonné pour le c/c++ car j'ai appris les deux en même temps et je ne fais pas toujours la différence. Je fais s'évanouir les rigoureux

LordBob > initialement, j'avais prévu cette source entre autres pour un ami avec qui je parle anglais...

Commentaire de MetalDwarf le 24/03/2004 17:32:03

Je viens de regarder ton code ca me semble beaucoup trop long pour ce que ca fait.
J ai publie sur ce site un code qui fait la meme chose mais avec n importe quel fichier (a cacher) dans un fichier BMP 24bits non compressee et c etait beaucoup plus court, et portable (windows et linux).

Le code etait nettement plus court!!!

http://www.cppfrance.com/code.aspx?ID=10081

En particulier tu n as pas besoin de faire tant de manipulations avec le header!! Le codage etait plus discret, car seul 1 bit sur un octet etait modifie et c est le bit de poids faible.

Commentaire de street_pc le 24/03/2004 17:55:36

>Trop long: oui en effet, je l'ai fait dans le souci du détail, avec vérifications, infos sur l'en-tête etc.
De plus je l'ai fait non pas pour être utile en tant que programme de stégano (il en existe des bien mieux), mais juste pour donner des exmples et faire un programme complet (vérification aux plus de niveau possible, plus d'options, sauvegarde du nom de fichier, etc.)

>"MAIS avec n'importe..." uhu ? moi aussi il accepte n'importe quel fichier non ? le mode texte manuel n'est qu'un choix.

>"Le codage etait plus discret, car seul 1 bit sur un octet etait modifie et c est le bit de poids faible." certes, mais la place disponible est alors divisée par 4... Lorsque j'aurais le temps (sans doute pas avant les vacances), je laisserai le choix: plus la taille du fichier à cacher sera faible, plus le codage sera discret.

Mon intention n'était pas de concurrencer ton programme, sans doute avantagé par sa légerté et sa portabilité, mais de fournir cette source aux visiteurs de ce site.

Commentaire de MetalDwarf le 24/03/2004 18:01:03

Je sais bien que ton programme verifie plus de choses, mais le probleme c est que la difference de coloration peut faire un peu tache avec ton codage, paske 4 bits ca fait 16 valeurs sur 255, et si tu le repete sur 3 valeurs ca peut faire une difference assez importante.

Voila je precise quand meme que ce n etait pas mechant tout ce que j ai pu dire, mais de simples remarques. D ailleurs moi aussi j avais du mal entre C/C++ au debut... ;-)

Commentaire de street_pc le 24/03/2004 18:13:34

Commme déjà dit, mon programme n'a pas pour réelle vocation de cacher un fichier de la façon la plus efficace possible, mais plutôt de le faire en C++. C'est à la base un programme-exemple...
Et l'altération n'est pas si importante. Celà dit, c'est peut-être pour ceci que j'ai dit que je tenterais de faire le meilleur rapport taille/codage.

Commentaire de Kirua le 24/03/2004 18:13:55

impeccable, j'ai testé (ah, corrige le aborded de fin de code, c'est "aborted", minime mais c mieux ;-))

mon avis: vrmnt bon! j'ai caché tt le code source (main.cpp) dans une image bmp et on ne voit pas la différence, vrmnt. l'extraction c déroulée sans aucun problème (il semble qu'aucun caractère n'ait été modifié). tu devrais rajouter une option: possiblité de choisir le nom du fichier de sortie, et n'utiliser le nom d'origine que comme valeur par défaut (si rien n'est précisé).

une remarque: si on lance le programme sans option ça devrait appeler l'aide. pour l'instant ça génère une erreur.

bonne continuation!

PS: met tout ton code d'exploitation de BMP dans une classe, c'est bcp plus pratique et réutilisable. change tes macros min et max par des fonction inline ;-)

inlince double max(double a, double b)
{
return a>b ? a : b ;
}

et tu la surcharges pour les int, les float, les char, etc...
ça présente bcp d'avantages, mais j'ai pas le temps là.

ciao

Commentaire de street_pc le 24/03/2004 18:51:12

merci de ton commentaire, je suis flatté.
pour des raisons propres (toujours d'exemple), je vais garder les macros min et max.
j'ai par contre corrigé la faute d'orthographe et lancer le programme sans paramètre ne donne plus d'erreur.
quant au nom de sortie, je le ferai sans doute lorsque j'aurais le temps

Commentaire de Kirua le 24/03/2004 20:47:24

après avoir lu ton code j'ai décidé d'écrire une classe de lecture de BMP (ça peut tjs servir ^^)
J'ai codé sans ennui le débu (lecture de l'en-tête, je me suis basé sur un document de WotSit.org) mais je ne comprends pas ceci:

après toute une série de données (dernier élément: Important Colors), j'ai Palette (N * 4 octets) et puis Données (x octets, ça dépend de plusieurs facteurs, compression, dimensions etc)

Bon, mais ... comprends pas pq la Palette utilise 4 octets par élément! (ça devrait dépendre du nb d'octets par pixel non?). A quoi sert le 4ème octet? Et puis, comment j'attribue les indices ds la palette?

Je pensais qu'en BMP il n'y avait pas de palette, je ne comprends pas vrmnt l'intérêt pr un format comme celui-ci, qui ne doit pas limiter les couleurs. Tu peux m'éclaircir sur le contenu des BMP à partir de la palette? merci ;-)

Commentaire de MetalDwarf le 24/03/2004 21:07:29

C est simple. La palette occupe 4 octets car il y en a un par composante (RGB) et le 4e est un octet alpha, c est a dire qui definit la transparence de la couleur.
Il y a une palette en BMP mais...pas toujours. En fait si tu n es pas en 24 bits, il y a une palette. Par exemple si tu es en 8 bits (mais en couleurs, parce que en 24 bits N&B il n y en a pas), ta palette comporte 256 entrees, et apres les donnees sont des indices dans cette table. Ca permet de choisir 256 couleurs parmi 16,9 millions.
C est tout ce dont je me souviens a propos des BMP, et meme si je ne suis pas le destinataire de cette requete j espere t avoir aide.

Commentaire de Kirua le 24/03/2004 21:10:13

Tu m'as aidé en effet :-) merci pour cette réponse tout à fait claire.
Puisque je ne m'occupe que d'images 24 bits, il n'y a pas de palette du tout je suppose, donc j'attaque directement les pixels 3 octets à la fois (et en commençant par la ligne du dessous), ou bien il y a qd même qq octets à passer à l'endroit où aurait dû être la palette?

Commentaire de street_pc le 24/03/2004 23:26:56

Honnêtement je ne sais pas si les 24 bits impliquent une absence de palette, mais tu peux le savoir avec la valeur de iDataOffset: début des données (pixels)...

Commentaire de lunarossa le 09/06/2005 12:12:55

bonjour, j'ai plein d'erreur wuand je le compile (avec dev-c++ 4.9.9.2) du genre :

`BYTE' does not name a type
In function `bool bPrintHeaderInfo(s_BMPHeader*)':
`clrscr' undeclared (first use this function)

etc ....

merci de m'aider

Commentaire de Kirua le 09/06/2005 14:21:10

une palette avec 24 bits ... ça fait bcp de couleurs à définir, alors qu'une couleur est pleinement définie par ses 3 * 8 bits! ce serait totalement absurde de faire une palette pour les 24 bits.

Commentaire de street_pc le 09/06/2005 19:13:57

lunarossa vérifie que tu as bien conio.h

kirua tu ne fais pas une "palette 24 bits"
dans une palette, si ma mémoire est bonne, tu définis 256 couleurs, chacune sur 32 bits (RVB + alpha). ensuite, tu utilise un seul octet par pixel, désignant le numéro de la couleur (de 0 à 255, soit 256 possibilités)
une page que j'ai lue pour ce petit prog :
http://www.commentcamarche.net/video/format-bmp.php3

Commentaire de Kirua le 09/06/2005 19:41:57

Oui bah ça va j'ai bien compris le système des palettes qd même hein ;) Mais à moins que je n'aies pas compris, il émettait un doute quant au fait que les BMP 24 bits aient ou pas une palette. Sinon, pour l'histoire du DataOffset, de fait, il faut l'utiliser, c'est pas pour rien ;)

Commentaire de street_pc le 09/06/2005 19:58:38

désolé je n'avais pas compris que tu avais compris (ou était-ce l'inverse ?) :p
mais maintenant e comprends pourquoi je ne comprends pas :D

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 3,884 sec (3)

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