ABCDEFGHIJKLMNOPQRSTUVWXYZ

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 28 avril 2004 à 10:38
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006 - 10 avril 2005 à 16:11
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22340-abcdefghijklmnopqrstuvwxyz

TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
10 avril 2005 à 16:11
"des algorithmes
de statistique simple (telle que la loi binomial )"

au fait secureengine, maintenant que je sais ce qu'est une loi binomiale (enfin savoir est un bien grand mot...), tu pourrai détailler comment tu procédérai pour déterminer quel est le pourcentage de chance pour que l'image soit stéganographiée? toujours interessant...

ouais les enums, jvais les faire un de ces quatre ;-)

++Twis;
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
2 mai 2004 à 21:14
Ok, alors en haut de ton fichier, au même niveau que tes déclarations globales, mets ça:

enum
{
NOM_DE_LERREUR_No1,
NOM_DE_LERREUR_No2,
NOM_DE_LERREUR_No3,
NOM_DE_LERREUR_No4,
...
NOM_DE_LA_DERNIERE_ERREUR
};

Chaque mot sera associé à une valeur entière par le compilo, tu dois même pas t'en charger!

ta gestion d'erreur c'est ça:

char *format_error_message(int n) {
// on vide
free(bbuf);
free(ibuf);
free(fbuf);

switch (n) {
case NOM_DE_LERREUR_No1: return "Fichier trop gros pour le bitmap.";
case NOM_DE_LERREUR_No2: return "Impossible d'ouvrir le bitmap.";

..............

}
}


et dans ton code c'est ça:

if (bbuf == NULL) return NOM_DE_LERREUR_No7;


et l'idée c'est évidemment de donner des noms explicites, du genre:

PAS_ASSEZ_DE_MEMOIRE ou FICHIER_INTROUVABLE etc...

comme ça tu t'y retrouves ds ton code ;)
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
2 mai 2004 à 14:38
ben tu pourrais me montrer comment toi tu le programmerai au mieux ?
pcq en fait je sais pas bien programmer en C/C++, j'pourrai même pas te faire des structs ou je sais quoi ! En fait je programmai en delphi et à force de matter des sources en C sur Internet j'ai fini par en écrire moi même... c'est vrai y'a encore pleins de trucs qu'il faut que je découvre et me manque aussi surement de la théorie, enfin bref :D

donc plz show me ;) ++ Twis
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
2 mai 2004 à 12:48
je conseillerais qd même plutôt un enum ou une série de const, parce que les define... enfin je les utilise aussi évidemment, mais c'est comme qui dirait pas tout à fait propre... enfin, je serai incapable d'argumenter sur ce point, mais d'après ce qu'on m'a dit, ben c'est une mauvaise idée si on programme en C++. (en C pas le choix évidemment)
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
2 mai 2004 à 11:09
trop tard pour la ccl mais bon tant pis... ptet pour l'année prochaine si je peux le reprendre :D j'oublirai pas promis !!!
securengine Messages postés 2 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 2 mai 2004
2 mai 2004 à 01:19
De toute facon ton but n'était pas de faire quelque chose d'indétectable alors cette version suffit.
Je faisais juste la remarque sur ta conclusion.
Pour répondre à Kirua, une photo à la base, qu'elle vienne d'un déssin ou d'un appareil photo numérique est censée ( dans 99% des cas) représenter une forme intélligible pour l'homme.
C'est à dire que dans l'image, un pixel pris au hasard aura de forte chance d'être corrélé avec son voisinage.
De plus, dans une zone uniforme d'une photo, si les bits de poid faible ont un caractère aléatoire (loi binomiale 1/2 pour les matheux)
alors il y à une forte chance pour que ce ne soit pas le fruit du hasard.
A moins que l'appareil soit de mauvcaise qualité et que le temps d'exposition est trop court.
Mais bon ca ne sert à rien d'aller si loin pour un tpe bien que je pense que de refaire la conclusion en finissant par une ouverture la dessus aurait été pas mal.
Sinon bon code (à part les #define qui manque un peu :)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
1 mai 2004 à 21:17
"le prof ne chipotera sur un sujet qu'il connait pas"

c'est dommage que tu dises ça. ce qui est fabuleux dans ces travaux c justement que, pouvant ENFIN traiter un sujet au choix, ttes catégories confondues, on peut aller au bout des choses, sans se limiter (ou tenter d'arriver) au nieau du prof.

c'est mon avis.
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
1 mai 2004 à 21:13
waouu j'vois que j'ai à faire à des pros ;)

Kirua > upside-down ; il m'aurait regardé avec un air chelou :D
pour des constantes et define t'as raison, j'y penserai la prochaine fois (j'ai pas encore assez l'habitude c'est pour ça ;D).
Sinon c'est vrai qu'on pourrait encore programmer des options...

securengine > euh... si tu le dis je te crois ; mais t'en fais pas le prof ne chipotera sur un sujet qu'il connait pas :D

thx et ++ Twis
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
1 mai 2004 à 16:36
alors il vaut mieux cacher les fichiers dans des photos qui présentents de très nettes et très fréquentes variations de couleur. ça devrait suffir à se prémunir d'un tel cassage, non?
securengine Messages postés 2 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 2 mai 2004
1 mai 2004 à 16:33
Je trouve ton programme pas trop mal, cepedant,
ta conclusion n'est pas tout à fait correcte, des algorithmes
de statistique simple (telle que la loi binomial )peuvent permettre de detecter une forte entropie des bits de poid faible ; Cela est d'autant plus flagrant lorsque le fichier caché est chiffrée : le caractère aléatoire du fichier caché augmente l'entropie des bits de poid faible alors que dans une image la corrélation d'un pixel avec ses voisins est très grande...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
1 mai 2004 à 12:25
Vala j'ai lu ton article qui est plutôt très bien écrit. Je veux dire que ça devient rare les textes sur internet sans faute de grammaire et dont l'orthographe ne pique pas aux yeux ^^ T'as quand même trouvé le sujet en or, parce que pour un prof qui ne programme pas ça ne manquera pas d'impressionner, mais je parie que tu n'as pas du faire bcp de recherches documentaires ;)

Juste un truc que je relève dans ton texte, cette phrase:
"Les pixels du bas sont modifiés avant ceux du haut pour des raisons complexes que nous ne détaillerons pas ici."

ça aurait été plus court de dire que c t parce que les bmp sont stockés upside-down ;)

passe une bonne journée!

Kirua

PS: ton interface graphique est très agréable!
une amélioration significative serait de répartir le message sur toute l'image. si on stock 10 Ko dans un BMP de 250 Ko, une option devrait permettre de calculer "au mieux" le nb de bits par octet, et d'ainsi altérer des pixels de façon disparses. Du fait de cette discontinuité, ce serait encore plus dur à voir. Et il faudrait aussi, en fait, pouvoir n'altérer qu'une composante, et pas forcément les 3. Ça aide aussi à l'invisibilité.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
1 mai 2004 à 12:01
suis assez d'accord

dis, je vois ta routine d'affichage d'erreur avec une switch et des nombres. pour rendre le programme plus clair, moi j'aurais mis des defines, des const ou même un enum afin de déclarer une liste de constantes qu'on peut lire.

par exemple, quand tu fais un return 7; c'est pas clair pour le lecteur, et je suppose que même toi tu as dû scroller dans ton code pr retrouver le bon nombre. ça aurait pu être return PAS_ASSEZ_DE_MEMOIRE; ce qui est plus parlant, non?

je m'en vais lire ton tpe ;)
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
28 avril 2004 à 21:00
Certains algo de steganographie rendent l'image sombre ou flou ... D'ou l'interet d'avoir un screen pour voir l'image avant et apres l'ajout de texte, ce qui donne un premier apercu de la qualité du programme...
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
28 avril 2004 à 13:46
ben j'vois pas l'interet de montrer une image... et la fenêtre du prog elle-même n'a rien de spécial (y'a que des boutons statics et edit :D).

bah suffit de dl!

++ Twis
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
28 avril 2004 à 10:38
Vu que ca traite d'une application graphique un screen serais la bienvenue ...
Rejoignez-nous