IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Les fichiers et Qt (Programme de stéganographie)


Sujet :

Qt

  1. #1
    BuG
    BuG est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 44
    Points : 23
    Points
    23
    Par défaut Les fichiers et Qt (Programme de stéganographie)
    Bonjour a tous,

    Je suis en train de réaliser un programme de stéganographie avec Qt mais la fonction d'insertion dans l'image bitmap me donne du fil a retordre et j'ai l'impression que c'est un probleme venant de l'utilisation des fonctions Qts et non de l'algorithme en lui même.
    Si j'execute mon programme avec ce bout de code le fichier sera rempli d'octet se ressemblant tous et n'étant pas ce qu'il doivent être.
    D'ou vient ce problème ?
    (pour ce qui est des chars vs unsigned char cela pose t'il probleme ?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    const int debut = 55;
    	char carAEcrire;
    	char carFichier;
    	int posTexte = 0;
    	int posFichier = debut;
     
    	for(int i=debut; i<(debut + _texte.size()); i++)
    	{
    		carAEcrire = _texte.at(posTexte).toAscii();				
     
    		for(int j=0; j<8; j++)
    		{	
    			_fichier.seek(posFichier);
     
    			_fichier.getChar(&carFichier);
     
    			if((carFichier%2==0) && ((carAEcrire & 0x01)==0x01))
    				carFichier = carFichier + 0x01;
    			if((carFichier%2==1) && (carAEcrire & 0x01)==0x00)
    				carFichier = carFichier - 0x01;
     
    			// On réécris le nouvel octet:
    			_fichier.putChar(carFichier);
     
    			// Décalage vers la droite des bits.
    			carAEcrire = carAEcrire >> 1;
     
    			posFichier++;
    		}
     
    		posTexte++;
    	}
    Merci beaucoup,
    Cordialement,
    BuG.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Peo,

    Je ne vois pas trop où tu veux en venir avec ton algorithme, que j'appellerais plutôt cryptage que stéganographie, mais je pense que la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    			// On réécris le nouvel octet:
    			_fichier.putChar(carFichier);
    devrait être précédée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			_fichier.seek(posFichier);
    sinon tu écrases en fait le caractère suivant.

  3. #3
    BuG
    BuG est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 44
    Points : 23
    Points
    23
    Par défaut ...
    Pourtant la ligne avec seek est bien placée au début de la boucle for et a la fin de la boucle j'incremente le compteur de position du fichier qui est initialisé a 0. Et c'est parfaitement normal que j'écrase le caracère que j'ai lu.

    Cet algorithme est sensé servir a remplacer le dernier bit de chaque octet d'un bitmap par chacun des bit des caractère qui compose un message.

    Merci @+

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //tu te positionne dans le fichier
    _fichier.seek(posFichier);
    //tu lit un char. la position à avancé d'un char
    _fichier.getChar(&carFichier);

  5. #5
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Gaffe quand même à gérer certaines versions de bitmap genre monochrome (la stégano, t'oublie direct là dessus ), les LUT au lieu des couleurs encodées... Pis ton offset debut=55, ça me paraît un peu osé (ou alors, on parle pas des même bitmap)

  6. #6
    BuG
    BuG est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 44
    Points : 23
    Points
    23
    Par défaut ...
    Donc l'appel de getChar fais avancer la position ?
    Tout s'explique ...

    La fin de l'entete sur les bitmaps n'es pas a 55 ou 0x37 ?

    Merci @+

  7. #7
    BuG
    BuG est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 44
    Points : 23
    Points
    23
    Par défaut ..
    Après il est vrai que j'utilise pas i donc que les conditions de mon for sont sompliqués pour rien...

    Merci @+

  8. #8
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Citation Envoyé par BuG Voir le message
    La fin de l'entete sur les bitmaps n'es pas a 55 ou 0x37 ?
    Pas s'il y a une lut justement
    Pour plus d'info => http://www.fortunecity.com/skyscrape.../bmpffrmt.html (avec une recommandation spéciale pour le champ BITMAPFILEHEADER::bfOffBits)

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 951
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 951
    Points : 5 671
    Points
    5 671
    Par défaut
    Gia,
    Citation Envoyé par BuG Voir le message
    Donc l'appel de getChar fais avancer la position ?
    Tout s'explique ...
    Quand on utilise une fonction, il ne faut pas le faire au hasard, genre "Tien, si je faisais comme ça ?". Les documentations sont là pour en expliquer le comportement.

  10. #10
    BuG
    BuG est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 44
    Points : 23
    Points
    23
    Par défaut ...
    Je suis parfaitement d'accord avec toi, je me suis documenté:
    http://qt.developpez.com/doc/latest/...e.html#getChar

    Mais je ne vois nul part marqué que la fonction incrémente la position du fichier.

    Merci beaucoup en tout cas, le problème venait bien de la.
    Cordialement,
    BuG.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Turbo Pascal] Lier les fichiers BGI au programme
    Par lex001 dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 23/10/2009, 17h49
  2. Réponses: 1
    Dernier message: 04/10/2007, 00h46
  3. Réponses: 7
    Dernier message: 03/05/2007, 16h58
  4. les différents fichiers constituant le programme
    Par wolverine1991 dans le forum Delphi
    Réponses: 6
    Dernier message: 28/12/2006, 00h16
  5. Réponses: 4
    Dernier message: 03/09/2006, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo