DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
28 avril 2004 à 10:38
TheWhiteShadow
Messages postés135Date d'inscriptionmercredi 15 janvier 2003StatutMembreDerniè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.
TheWhiteShadow
Messages postés135Date d'inscriptionmercredi 15 janvier 2003StatutMembreDerniè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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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:
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és135Date d'inscriptionmercredi 15 janvier 2003StatutMembreDerniè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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és135Date d'inscriptionmercredi 15 janvier 2003StatutMembreDerniè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és2Date d'inscriptionlundi 16 décembre 2002StatutMembreDerniè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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és135Date d'inscriptionmercredi 15 janvier 2003StatutMembreDerniè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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és2Date d'inscriptionlundi 16 décembre 2002StatutMembreDerniè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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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és2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDerniè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és135Date d'inscriptionmercredi 15 janvier 2003StatutMembreDerniè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és2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 28 avril 2004 à 10:38
Vu que ca traite d'une application graphique un screen serais la bienvenue ...
10 avril 2005 à 16:11
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;
2 mai 2004 à 21:14
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 ;)
2 mai 2004 à 14:38
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
2 mai 2004 à 12:48
2 mai 2004 à 11:09
2 mai 2004 à 01:19
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 :)
1 mai 2004 à 21:17
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.
1 mai 2004 à 21:13
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
1 mai 2004 à 16:36
1 mai 2004 à 16:33
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...
1 mai 2004 à 12:25
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é.
1 mai 2004 à 12:01
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 ;)
28 avril 2004 à 21:00
28 avril 2004 à 13:46
bah suffit de dl!
++ Twis
28 avril 2004 à 10:38