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 :

Vérifier une Clef USB (Flash disk)


Sujet :

C++Builder

  1. #1
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut Vérifier une Clef USB (Flash disk)
    Bonjours à tous,

    Je vien te finir mon logiciel de gestion, Maintenant je cherche à ce que mon logiciel démarre si seulement si Le numéro de série d'une cléf USB (Flash disk) est bon (enregistrer dans une base de donnée par exemple).

    Le problème est que je ne sais pas comment faire pour détécter cette Clef, et comment avoir son N° de série.

    Merci de m'aider svp.
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  2. #2
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    Voici comment faire pour proteger son logiciel avec delphi
    fais-la meme chose avec C++ Builder
    http://badrou.developpez.com/delphi/trial/
    Boubou from The SpAcE GaLaXy....
    AhAhAhAhAh

  3. #3
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut
    lut,
    une solution que j'ai utilisé pour une recherche de USB KEY :

    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
    49
    50
    bool __fastcall TForm1::SearchVolume(AnsiString NameDisk)
    {
    const int Max_Length = 256;
    char * VolName = new char[Max_Length];
    char * FileSysName = new char[Max_Length];
    unsigned long VolSerial;
    unsigned long FileMaxLen;
    unsigned long FileFlags;
    AnsiString Message;
    char *lecteur = new char[5];
     
     for(int i=0;i<5;i++)
        lecteur[i]= 0x00;      // RAZ
     
     for(int i=65;i<75;i++)  // Scan de A: à K:
     {
      *lecteur = (char)i;
      *(++lecteur)= ':';
      *(++lecteur)= '\\';
      lecteur -=2;
     
       if(GetVolumeInformationA(lecteur, VolName, Max_Length, &VolSerial, &FileMaxLen, &FileFlags, FileSysName, Max_Length))
       {
       AnsiString Name = VolName;
        if(Name == NameDisk)
         {
          Message = "Nom du disque : " + AnsiString(VolName);
          Message += "\nSystème de fichiers : " + AnsiString(FileSysName);
          Message += "\nNuméro de série : " + FloatToStr(VolSerial);
          Ident = lecteur;
          LabelVolume->Caption = Message;
          delete[] lecteur;
          delete[] VolName;
          delete[] FileSysName;
          return 0;// OK
         }
       }
     }
     
     Message = "Nom du disque : INDISPONILE";
     Message += "\nSystème de fichiers : INDISPONILE";
     Message += "\nNuméro de série : INDISPONILE";
     
     delete[] lecteur;
     delete[] VolName;
     delete[] FileSysName;
     
    LabelVolume->Caption = Message;
    return 1; // ERREUR;
    }
    ++
    mcercle facturation - Logiciel de facturation Win/Mac/Linux

  4. #4
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjours à tous,

    Merci pour votre aide, pour la solution de "Virtua" je pense qu'il faut donner le nom du lecteur Usb en paramètre, peut-on le faire automatiquement. SVP Es-ce que c'est possible de donner un exemple d'utilisation.

    Merci
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  5. #5
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut
    lut,
    effectivement il faut le nom du disk pour faire la recherche mais tu peux adapter mon code en fonction de tes besoins, par exemple rechercher le disk en fonction de son numéro de serie...

    Pour cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(SearchVolume(EditNameDisk->Text)) ShowMessage(("Lecteur INDISPONILE");
    else ShowMessage(("Lecteur OK");
    remarque : comme cette recherche balaye les différents périphs, je te conseil d'effectuer la recherche uniquement lorsque tu en as besoin, car pour les possesseur de lecteur de disquette cela fait un petit bruit fort désagréable...

    ++
    mcercle facturation - Logiciel de facturation Win/Mac/Linux

  6. #6
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Merci à "virtuA", voici le code qui verifi toutes les disque amovible disponible sur le PC et verifi leur serial :

    La fonction qui verifie le serial d'un disque amovible est la suivante :

    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
     
    bool __fastcall TForm1::CheckDongle(AnsiString pLecteur, unsigned long pSerialVol)
    {
      char * VolName = new char[256];
      char * FileSysName = new char[256];
      unsigned long VolSerial;
      unsigned long FileMaxLen;
      unsigned long FileFlags;
     
      if(GetVolumeInformation(pLecteur.c_str(), VolName, 256, &VolSerial, &FileMaxLen, &FileFlags, FileSysName, 256))
         {
          AnsiString Name = VolName;
          if(VolSerial == pSerialVol)
           {
            delete[] VolName;
            delete[] FileSysName;
            return true ;
           }
         }
     
       delete[] VolName;
       delete[] FileSysName;
       return false ;
    }

    par exemple, dans le OnCreate de la fiche principale:

    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
     
      static char * Lecteur[]={"c:\\","d:\\","e:\\","f:\\",
          "g:\\","h:\\","i:\\","j:\\","k:\\","l:\\","m:\\","n:\\","o:\\","p:\\",
          "q:\\","r:\\","s:\\","t:\\","u:\\","v:\\","w:\\","x:\\","y:\\","z:\\"};
     
      bool bExist ;
      for(int x =0; x < 24; x++ )
        {
         if(GetDriveType(Lecteur[x]) == DRIVE_REMOVABLE)
           {
             if(CheckDongle(Lecteur[x], 1285501970))
               {
                 ShowMessage("Démarrage en cours...") ;
                 delete[] Lecteur ;
                 return ;
               }
             else
                 bExist = true ;
           }
         else
             bExist = false ;
        }
     
      if(bExist)
        ShowMessage("Le code du Dongle est incorrect") ;
      else 
        ShowMessage("Le Dongle n'est pas connecté") ;
     
      Application -> Terminate() ;
    Ici, le n° de série recherché est "1285501970".

    Merci à tous ...

    @+
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  7. #7
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Pardon,
    remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int x =0; x <= 25; x++ )
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(int x =0; x < 24; x++ )
    EDIT INFO : Je me suis permis de répercuter la modification à faire dans le code du post précédent ;-). Vous pouvez donc l'utiliser sans problème !
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  8. #8
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut
    N'oublions pas le petit
    mcercle facturation - Logiciel de facturation Win/Mac/Linux

  9. #9
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Voilà ... @+
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  10. #10
    Expert confirmé
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Points : 4 972
    Points
    4 972
    Par défaut
    quelqu'un saurait comment capter l'introduction d'une clé USB (WMI surement) comme ca on pourrait passer le test en service ensuite ...

    des idée ?
    Netah - admin
    mon site
    Linux & Mac

  11. #11
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Je possede quelques fichiers de Bernard ACQUIER decrivant la connection USB je pensais m'en servir pour une camera USB mais il y a eut une discution dans un Forum et je ne m'en servirais pas je peux les passer mais c'est assez volumineux deux fichiers de plus de 2Mo si ca peut aider
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  12. #12
    Membre chevronné
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Points : 1 884
    Points
    1 884
    Par défaut
    Au chargement du service, en initialise une variable avec le nbr de disque disponible, et dans un timer en execute le code ci-dessous, et à chaque "interval" en verifi le nbr de disque avec la variable, si il ya un changement en met à jour la variable


    @+
    Les règles Les cours La fonction rechercher

    N'oubliez pas de mettre en et de voter.

    La terre n'est pas un héritage de nos parents, mais un emprunt que nous faisons à nos enfants. La protection de notre environnement est la responsabilité de tous. Ne reculez plus devant l'urgence, agissez !

  13. #13
    Membre actif Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Points : 206
    Points
    206
    Par défaut comment lire le vrai numero du fabricant d'un clef usb !
    une question ! (piratage)

    il est possible de pirater un protetion via clef usb !
    SAUF SI ON LIT BIEN LE NUMERO D ADRESSE MAC !! le numero du fabricant.

    vers qu elle autre clef usb ?
    je veux parler des disque dur portable en usb !

    comment copier
    avec ce code on peut modifier le numero de serie d'un disque dur.

    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
    #define _WIN32_WINNT 0x0500
     
    DWORD GetDriveNro()
    {
    DWORD dwnro = 0;
    GetVolumeInformation(szvol, 0, 0, &dwnro, 0, 0, 0, 0);
    return dwnro;
    }
     
    void __stdcall ChangeDrvNro(HWND hdlg)
    {
    DWORD dwnro, dwret;
    dwnro = GetDlgItemInt(hdlg, IDED_NRO, (int*)&dwret, 0);
    if(!dwret || !dwnro) {
    MessageBox(hdlg, "Donner un nombre > 0 ET <= 4294967295", szappname, 0x30);
    return;
    }
    dwret = SetHdSerial((DWORD) szvol[0], dwnro);
    if(!dwret) MessageBox(hdlg, "ACCOMPLI", szappname, 0x40);
    else if(dwret != SRL_SYSUNKNOWN) DisplayLastError(hdlg, dwret);
    else MessageBox(hdlg, szSYSUNKNOWN, szappname, 0x30);
    }
    j'ai pas encore tester avec une vrai clef usb.
    comment lire le vrai numero du fabricant d'un clef usb !

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

Discussions similaires

  1. [Clé USB] comment flasher une cle usb (flash disk)
    Par rezki0 dans le forum Périphériques
    Réponses: 0
    Dernier message: 12/09/2013, 18h29
  2. Protection d’une clef USB (flash disk)
    Par bonbino dans le forum Windows
    Réponses: 3
    Dernier message: 02/03/2009, 14h03
  3. Utiliser une clef USB comme de la ram de mémoire vive
    Par Lorponos dans le forum Composants
    Réponses: 28
    Dernier message: 18/08/2006, 18h32
  4. [Nero] Utiliser un CD-RW comme une clef USB
    Par Furius dans le forum Périphériques
    Réponses: 6
    Dernier message: 24/10/2005, 17h22
  5. [Système] Trouver une clef USB avec PHP
    Par chico_du_33 dans le forum Langage
    Réponses: 8
    Dernier message: 05/10/2005, 17h29

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