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

C++Builder Discussion :

aide sur un prototype antivirus


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut aide sur un prototype antivirus
    Bonjour à tous,

    voilà ma question est simple et directe, je voudrais essayer de concevoir un prototype d’antivirus qui fait juste la détection de codes malicieux (scanning). Je fais de mon mieux mais je ne sais pas m'y prendre, comment faire le scanning ?! si quelqu’un peut m’aider ça serai gentil,


    merci d’avance.

  2. #2
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Qu'entend tu par scanning ?
    Si c'est simplement scanner tous les fichiers des disque dur regarde dans la FAQ ce n'est pas très compliqué, si c'est scanner la mémoire, je n'ai jamais fait, mais en cherchant un peut, tu devrait pouvoir trouvé ton bonheur.
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par pottiez Voir le message
    Qu'entend tu par scanning ?
    Si c'est simplement scanner tous les fichiers des disque dur regarde dans la FAQ ce n'est pas très compliqué, si c'est scanner la mémoire, je n'ai jamais fait, mais en cherchant un peut, tu devrait pouvoir trouvé ton bonheur.
    justement c'est scanner tous les fichiers des disques dur à la recherche de codes malicieux (codes malicieux biensur que j'aurai définis), en fait, le programme doit juste m'avertir de la présence ou non de codes malicieux, si vous pouviez me donner un lien direct ou autre chose, je vous en serai fortement reconnaissant !

  4. #4
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Bonjour,

    pour lister les fichiers d'un repertoire, regarde du coté de FindFirst, FindNext et TSearchRec

    Ensuite il faut créer une fonction récursive ( qui s'auto-appelle) pour "scanner" l'ensemble d'un disque dur...

    Bon courage
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  5. #5
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Ici il y a un exmeple pour supprimer tous les fichiers/dossier d'un repertoire récursivement :

    http://cpp.develop[...]toires#supprimerrepertoire

    A toi de l'adapter pour lire les fichiers plutot que de les supprimer...
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    pour lister les fichier j'ai trouvé ça dans la FAQ:
    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
     void TForm1::Search(AnsiString FilePath, TStringList * Extensions, TStrings * ListeFichiers)
    {
      TSearchRec Infos_fichier;
      if (!FindFirst(FilePath+"*.*", faAnyFile, Infos_fichier))
     
      do
      {
        for (int i = 0 ; i < Extensions->Count ; i++)
        {
          if (ExtractFileExt(Infos_fichier.Name).LowerCase() == Extensions->Strings[i].LowerCase())
          {
            ListeFichiers->Add(ExpandFileName(Infos_fichier.Name));
          }
        }
      }
      while(!FindNext(Infos_fichier));
     
      FindClose(Infos_fichier);
    }
    puis on utilise un bouton comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    TStringList *Extensions = new TStringList; // On construit la liste des extensions
      Extensions->Add(".exe");
      Extensions->Add(".dll");
      // Appel à notre méthode, avec pour liste des fichiers, les items de la ListBox.
      Search(ExtractFilePath(Application->ExeName), Extensions, ListBox1->Items);
      delete Extensions;
     
    }
    ma petite intuition pour réaliser le prototype est la suivante (corrigez moi si je me trompe);
    1 - je dois faire un checksum au tout début du lancement du programme, donc je dois enregistrer les résultats du cheksum.
    2 - quand je fais le scan ou l'analyse (lister les fichiers) je dois les comparer avec mon premier checksum. S'il ya changement il yaura alors une alerte pour mavertir d'une possible infection (je rappel que c'est juste une simulation).

    Ma question enfin, est la suivante:
    - Comment faire un checksum de tous les fichiers ou sinon au moins les .EXE et les .DLL
    - comment faire pour enregistrer les resultats du checksum sur mon application.

    merci d'avance

  7. #7
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Bonjour,

    Ta fonction qui liste les fichiers n'est pas récursive, ce qui signifie qu'elle te donnera uniquement la liste des fichiers dans un répertoire, et non dans ces sous répertoire.

    Je pense que dans ton cas il serait plus judicieux d'utiliser une fonction récursive qui effectue le traitement pour pouvoir "scanner" egalement les sous-répertoire.

    L'idée de "checksum" peut être bonne dans le cas d'exe ou dll (mais attention si une application est mise a jour, elle n'aura plus le même "checksum").

    Pour le "checksum", tu peut utiliser le hashage MD5, qui te donnera comme une "empreinte digitale" de ton fichier. Tu pourra surement trouvé sur le net des exemples ou des codes pour calculer l'empreinte MD5 d'un fichier.
    Pour sauvegarder les empreintes de tous tes exe, un fichier texte peut être une solution simple, ou alors utiliser une base de donnée.

    Bon courage
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par sat83 Voir le message
    Je pense que dans ton cas il serait plus judicieux d'utiliser une fonction récursive qui effectue le traitement pour pouvoir "scanner" egalement les sous-répertoire.

    Bon courage
    salut pourrai-tu me donner un example ou un lien pour une fonction recursive ?
    merci

  9. #9
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Dans le lien que je t'ai donné dans mon second post (lien ici), il y a une fonction récursive.

    La fonction DeleteRecursif est une fonction qui prend en paramètre le chemin d'un repertoire, qui "scanne" tous les fichiers, répértoires, et sous-répértoire et les détruit. C'est une fonction récursive car elle s'auto-appelle.

    Dans ton cas, tu peut reprendre presque la même fonction, sauf qu'a la place de supprimer les fichiers trouvé, tu les test avec le checksum (donc tu as une ou deux lignes a changer dans cette fonction et elle fera ce que tu souhaite).
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  10. #10
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par sat83 Voir le message
    Dans le lien que je t'ai donné dans mon second post (lien ici), il y a une fonction récursive.

    La fonction DeleteRecursif est une fonction qui prend en paramètre le chemin d'un repertoire, qui "scanne" tous les fichiers, répértoires, et sous-répértoire et les détruit. C'est une fonction récursive car elle s'auto-appelle.

    Dans ton cas, tu peut reprendre presque la même fonction, sauf qu'a la place de supprimer les fichiers trouvé, tu les test avec le checksum (donc tu as une ou deux lignes a changer dans cette fonction et elle fera ce que tu souhaite).
    merci sat83 je vais faire de mon mieux pour resoudre mon probléme, si je plante je te fais signe

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    j'ai toujours des problémes :
    1- concernant le checksum (MD5) j'ai trouvé le programme dans le source c++
    je voudrais savoir comment faire pour faire appel à cette fonction grace a un bouton et l'afficher sur une listbox (pour l'instant avant de créer une base de donnée) ?

    2- concernant la fonction recursive j'ai bien vu la faq, j'ai fai de mon mieux pour modifier mais sans resultat

    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
    33
    34
    35
    36
    37
    38
    39
    void __fastcall DeleteRecursif(AnsiString pmRep)
    {
       TSearchRec SearchRec;
       int Attributes = 0;
       AnsiString bcRep = "",
                  bcRepTemp = "",
                  bcFile = "";
     
       Attributes |= faAnyFile;
       bcRep = pmRep;
       if(bcRep[bcRep.Length()] != '\\')
       {
          bcRep+= "\\";
       }
       bcRepTemp = bcRep;
       bcRep+= "*.*";     
       if(FindFirst(bcRep, Attributes, SearchRec) == 0)
       {
          do
          {
             bcFile = SearchRec.Name;
             if(bcFile != "." && bcFile != "..")
             {
                bcFile = bcRepTemp + SearchRec.Name;
                if(SearchRec.Attr != faDirectory)
                {
                   DeleteFile(bcFile);
                }
                else
                {
                   DeleteRecursif(bcFile);
                }
             }
          }
          while (FindNext(SearchRec) == 0);
          FindClose(SearchRec);
       }
       RemoveDir(pmRep);
    }
    merci pour votre aide et surtout merci à toi sat83 car tu es franchement le seul qui m'aide !

  12. #12
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Pour la fonction récursive, ca dois donné quelques chose comme ça (elle peut très certainement etre améliorée et optimisée). J'ai ajouter quelques commentaires. Ici je ne recherche que des fichiers executable, a toi de faire les modifs si tu veux rechercher aussi les dll, etc....:

    Pour utiliser la fonction, tu a juste a lui passer en paramètre un repertoire a scanner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::BitBtn1Click(TObject *Sender)
    {
      AnsiString path = "D:\\MonRepertoire\\" ;
      ScanDirectory( path );
    }
    Et voici le code de la fonction

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    void __fastcall ScanDirectory(AnsiString pmRep)
    {
       TSearchRec SearchRec;
       int Attributes = 0;
    
       AnsiString bcRep = "",
                  bcRepTemp = "",
                  bcFile = "",
                  bcExt = "";
    
       Attributes |= faAnyFile;
       bcRep = pmRep;
    
    
       if(bcRep[bcRep.Length()] != '\\')
       {
          bcRep+= "\\";  // ajout du slash final si il n'y est pas
       }
       bcRepTemp = bcRep;
       bcRep+= "*.*";
    
       if(FindFirst(bcRep, Attributes, SearchRec) == 0) // on recherche TOUS les fichiers/dossiers
       {
          do
          {
             bcFile = SearchRec.Name; // on recupere le nom du fichier/dossier trouver
             if(bcFile != "." && bcFile != "..") //on filtre les repertoires '.' et '..'
             {
                bcFile = bcRepTemp + SearchRec.Name;
                bcExt  = ExtractFileExt( bcFile ) ; // on recupere l'exstension du fichier
                if(SearchRec.Attr != faDirectory)
                {
                   if (LowerCase(bcExt) == ".exe") // on test si c'est un executable
                   {
                      ListBox1->Items->Add(bcFile);
                   }
                }
                else
                {
                   ScanDirectory(bcFile); // si c'est un repertoire, on "scan" ce repertoire
                }
             }
          }
          while (FindNext(SearchRec) == 0);  // jusqu'a ce qu'il n'y ai plus de fichiers
          FindClose(SearchRec); // on ferme le TSearchRec
       }
    }
    dans cette focntion, je ne fais que lister dans une listbox les fichiers executables. Dans ton cas, il faut juste remplacer la ligne en rouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1->Items->Add(bcFile);
    par ce que tu veux faire (récupérer le hash MD5).

    Pour ta fonction MD5 je ne sais pas ce que tu utilise. Mais en thérorie tu appelle juste la fonction de hashage qui te retourne l'empreinte du fichier passé en paramètre.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  13. #13
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    je viens d'essayer le code que tu m'a donné mais ça ne marche pas, il y a une erreur symbole 'ListBox1' non défini ?!!!!!! je ne sais pa ce qui se passe, j'ai forcément du loupper quelque chose, c'est normal, j'ai pas fermé l'oeil, toute la nuit devans le pc

  14. #14
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Ben c'est normal, la ListBox1 c'était juste pour l'exemple!
    La fonction que je t'ai donné se charge de scanner un répertoire et tous ses sous répertoire.

    Maintenant c'est a toi de faire ton traitement sur tous les fichiers trouvés! Donc tu remplace la ligne que j'ai mise en rouge (avec ListBox1) par ce que tu veux faire (a savoir faire le hachage Md5 du fichier trouver, et le comparer a la valeur initiale).

    Si tu veux que mon exemple marche, ajoute juste un TListBox (appelé ListBox1) sur ta fiche, et tu verra la liste de tous les executable qui se trouve dans le repertoire passé en paramètre.

    Le but n'est pas que je te fasse tous le developpement, mais que tu cherche aussi par toi même.

    Bon courage.





    ----------------------------
    blog : http://fc-feldkirch1984.over-blog.org
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  15. #15
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par sat83 Voir le message
    Si tu veux que mon exemple marche, ajoute juste un TListBox (appelé ListBox1) sur ta fiche, et tu verra la liste de tous les executable qui se trouve dans le repertoire passé en paramètre.
    Bon courage.
    justement j'avais déja créé la listbox pour tester mais ya l'erreur symbole ListBox1 non defini dans la fonction recursive.
    Le but n'est pas que je te fasse tous le developpement, mais que tu cherche aussi par toi même.
    je t'assure que je fais de mon mieux pour chercher par moi méme je passe des nuits blanche, il faut me comprendre je suis encore novice en programmation, et puis je ne fais pas du copier/coller de tout ce ke tu me donne, j'éssaie surtout de saisir le principe.
    En tout cas, je ne pourrai jamais te remercier assez pour toute l'aide que tu m'apporte.

  16. #16
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Pour la ListBox1, en faite c'est parce que la fonction ScanDirectory n'est pas membre de ta classe TForm1, et donc elle n'a pas accès à la ListBox1.

    donc dans ton '*.h", tu declare la fonction dans la section private:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     void __fastcall ScanDirectory(AnsiString pmRep)
    et dans ton implémentation (*.cpp):

    void __fastcall TForm1::ScanDirectory(AnsiString pmRep)
    (a la place de TForm1, tu met le nom de la classe de ta Form)

    A ce moment là la fonction ScanDirectory sera membre de ta classe, et aura "accès" à ListBox1 et a tous les élements de ta classe (de ta Form).
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  17. #17
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    void __fastcall TForm1::ScanDirectory(AnsiString pmRep)
    Ahhh ! j'ai oublié de mettre TForm1, je t'ai déjà dis que j'ai passé une nuit blanche, je n'ai pas fermer l'oeil, en ce momont je suis concentré à 80 %.
    merci sat83, tu es d'une aide providentielle.

    il me reste le checksum MD5; est la création de la base de donnée;
    juste une ptite question j'ai en ma possession un programme MD5 je voudrais juste savoir comment appeler cette fonction (MD5.cpp , MD5.h), de toute façon de mon coté je continue mes recherches, j'essaie encore de bien assimiler ce que tu m'as envoyé.
    encore une fois merci SAT83

  18. #18
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Pour le MD5 ce n'était qu'une proposition, tu a d'autre fonction de hashage (SHA-1, SHA-2...)


    Pour utiliser tes fichiers MD5, je n'en sait rien, vu que je ne connait pas l'implémentation que tu en as. Il dois surement avoir une fonction générale qui en paramètre prend un nom de fichier, et en retour retourne une chaine de caractère correspondant au hashage du fichier.

    Donc tu as juste a l'utiliser comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AnsiString hashMD5 =  MaFonctionMD5( "C:\\MonDossier\\MonFichier.exe" ) ;
    la fonction retournera une chaine de 32 caractères hexadecimaux (des chiffres ou les lettres A, B, C, D, E, F )
    (par exemple '5da8aa7126701c9840f99f8e9fa54976' )
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  19. #19
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Pour infos j'ai trouver des sources sympa pour le MD5 sur cette page

    Y'a juste quelques modifs a faire pour les utilisées sous C++ Builder.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       md5wrapper *hashMd5 = new md5wrapper() ;
       AnsiString resultatMD5 ;
       std::string result = hashMd5->getHashFromFile( "D:\\monFichier.exe" ) ;
       resultatMD5 = (AnsiString) result.c_str() ;
       delete hashMd5;
       ShowMessage( "Resultat du hachage: " + resultatMD5 ) ;
    }
    Mais si tu as déja des sources pour le MD5, ca dois pas être beaucoup plus compliqué!
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  20. #20
    Futur Membre du Club
    Inscrit en
    Mai 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 42
    Points : 6
    Points
    6
    Par défaut
    merci, tu es très gentil, je vais jetter un oeil sur le lien, si je plante je te fais signe

Discussions similaires

  1. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19
  2. Réponses: 2
    Dernier message: 27/02/2003, 01h33
  3. [Kylix] Aide sur BitBlt
    Par mic006 dans le forum EDI
    Réponses: 1
    Dernier message: 10/12/2002, 22h54
  4. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 08h51

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