DONGLE USB, UTILISATION D'UNE MEMFLASH POUR PROTÉGER UN PROGRAMME.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
26 mars 2005 à 16:14
cs_rescator68
Messages postés24Date d'inscriptiondimanche 13 juillet 2003StatutMembreDernière intervention 5 novembre 2011
-
26 oct. 2008 à 10:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_rescator68
Messages postés24Date d'inscriptiondimanche 13 juillet 2003StatutMembreDernière intervention 5 novembre 2011 26 oct. 2008 à 10:07
Bonjour
bien ce code, mais j'ai quand même un petit problème...
j'ai 8 clés USB de marque et modèle différente....
sur les 8, 5 me donnent un numéro de série identique précédé d'un "-"
une idée ?
merci d'avance
seh2rik
Messages postés1Date d'inscriptionjeudi 20 mars 2008StatutMembreDernière intervention 3 juin 2008 3 juin 2008 à 17:49
Sujet : Aide en vb ou vbs
Message :
Bonjour rylryl.
J'ai essayé d'utiliser ton programme mais à part l'avoir télécharger je ne suis pas arrivé loin. Sur Vb express 2008 il me dit qu'il y a des erreurs. Peux tu me dire car je débute , ce qu'il faut faire une fois que l'on télécharge ta source. J'aimerais m'en inspirer pour protéger un logiciel externe au programme en utilisant le numéro de série de la clé (if Drv.SerialNumber = ww )
JE te remercie d'avance.
cs_hippo92210b
Messages postés59Date d'inscriptionlundi 12 février 2007StatutMembreDernière intervention 9 décembre 2009 8 mai 2008 à 18:31
Genial ! mais je mes 7 car si l'on veut pénéter le programme on le déconpile on pren le num de série du dongle et on le copy pour n'importe quel aute dongle, étudi pour le cryptage !
cs_slayer
Messages postés202Date d'inscriptiondimanche 1 septembre 2002StatutMembreDernière intervention18 mars 2008 8 févr. 2008 à 00:27
salut , ton code a un petit bug , il me trouve le même numéro de série en utilisant 2 clé usb complètement différente.
de plus j'ai un - devants le numéro de série , ceci dit je suis sous vista , il y a des change que les usb ne son pas gérè de la même façon.
louloupopar
Messages postés1Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention27 juin 2006 27 juin 2006 à 23:16
Bonjour j'aurai voulu mettre le code dongle usb en application service windows.
Comment puis-je faire
Merci louloupopar (en sachant que j'ai la delphi perso 6 et trés débutant)
bcwan
Messages postés1Date d'inscriptionvendredi 7 avril 2006StatutMembreDernière intervention19 juin 2006 19 juin 2006 à 09:53
Salut a tous, très bonne idée malgré qu'il ya des dinky dongle qui existent pour cette fin la, mais puisque le problème maintenant est que :
dèsque l'utilisateur formate le flash disk il devient automatiquement hors service.
ya t'il un moyen pour éviter cela de se produire.
ne pas permettre de formater le falsh.
Mhamed Jamil
Messages postés5Date d'inscriptionmercredi 10 mai 2006StatutMembreDernière intervention16 août 2006 22 mai 2006 à 18:21
Bonne idée !!!
Merci (^v^)
Goshiz
Messages postés4Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention13 janvier 2006 13 janv. 2006 à 11:32
Bonjour à tous,
Cela ne me parait pas suffisemment sécurisé comme système, avec un simple hook d'une fonction de DLL on peut contourner le système.
Je pense que ce système est une bonne idée, qu'il faudrait associer en plus d'un sécurité par cryptage RSA ou DES, par exemple crypter le numéro de série de la clé avec une clé publique, et mettre la clé privée sur la clé USB, du coup meme si on parvient à faire croire au système que la bonne clé et inséré la seconde vérification echoue car la reconstitution du numéro de serie par la clé privée est impossible sans la vraie clé USB.
cs_rockt
Messages postés3Date d'inscriptionmardi 9 août 2005StatutMembreDernière intervention10 août 2005 25 oct. 2005 à 13:00
Ah ok , cest dessuite plus clair , la clef USB joue un peut le role de "Clef" ( lol.. ) qui ouvre une porte, en l'occurence ici qui permet l'accés à certaines fonctionalités comme tu dit et des qu'on retire le dongle on n'a plus accés a ces fonctionnalités...
Merci pour ta réponse aussi rapide ;)
cs_dabro
Messages postés24Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention25 novembre 2016 25 oct. 2005 à 12:00
Salut Rockt !
Un "Dongle" c'est une pièce physique (dans notre cas une clé USB) que l'on doit connecter à l'ordinateur pour que le programme fonctionne. J'utilise çà pour la Fédération Européenne des Loisirs Aériens. Si tu connectes la clé USB, tu as accès à certaines fonctionalités qui ne sont pas activées sans le dongle.
Dab
cs_rockt
Messages postés3Date d'inscriptionmardi 9 août 2005StatutMembreDernière intervention10 août 2005 25 oct. 2005 à 09:41
Salut je suis débutant ,et je ne comprend pas trop l'utilité de ce programme....protéger quoi...la clef USB... qu'est ce que le "DONGLE"..... Merci de vos aides
cs_dabro
Messages postés24Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention25 novembre 2016 11 oct. 2005 à 09:19
Oups !
Je viens de formater ma clé en FAT32 et j'ai bien un numéro de série. Elle était foramtée en FAT à l'origine, donc cà marche. Par contre le n° de série change à chaque formatage, ce qui veut dire que le dongle est HS dès qu'on formate la clé.
Il faut le signaler aux utilisateurs du dongle...
Dab
cs_dabro
Messages postés24Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention25 novembre 2016 11 oct. 2005 à 08:21
Salut RYL,
Moi j'ai toujours des n° de séries à 0...
'Dans ScanDongle :
If Drive.IsReady = True Then
'J'ai rajouté çà :
msg msg & "N° de série du disque " & Drive & "\ " & fso.Drives(Drive + "").SerialNumber & vbCrLf
avec msgbox msg à la fin de la boucle et j'obtiens les n° de série de mes disques dur, mais mes trucs USB ont un n° de série = à 0. Alors j'ai autant de dongles que de disques USB !
Est-ce normal ?
Merci et A+
Dab
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 11 oct. 2005 à 04:35
Bonjour AGG,
La MAJ est faite le N° de série est maintenant affiché.
A+
ryl...
cs_AGG
Messages postés46Date d'inscriptionjeudi 15 avril 2004StatutMembreDernière intervention 9 décembre 2012 10 oct. 2005 à 20:50
Aide :
Bonjour, je n'arrive pas à trouver mon N°série. Merci
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 31 mars 2005 à 13:47
Bonjour derick et merci...
Si je parcours tous les lecteurs c'est pour que :
Au démarrage du prog il force la detection du dongle
(savoir si present ou pas!).
Et si tu arrive a tromper sysinfo (bizzzzzar ça!) rajoute justement un scan cyclique ,mais ça devient plus lourd !
a+
ryl...
cs_derick
Messages postés41Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention25 août 2007 31 mars 2005 à 10:03
Salut ! Très utile ce code 10/10
2 choses cependant :
(1)
dans la sub Scan_Dongle, tu parcoures tous les drives possibles ; on peut très bien éviter cela, vu que l'event SysInfo1_DeviceArrival peut donne la lettre du drive.
Donc, à ce niveau, en re-définissant DongLettre en string avec comme valeur DongLettre = Chr(Log(DeviceID) / Log(2) + 65), alors on peut appeler une variante de Scan_Dongle, soit ScanDongle2 qui n'interroge *que* le nouveau drive que vient d'arriver :
Sub ScanDongle2(myDongle As String)
If DongleOK = True Then Exit Sub ' si Dongle deja present pas de scan
' Retrouver le dongle et son numéro de serie
Set fso = New FileSystemObject
If fso.Drives(myDongle).IsReady = True Then
If NumSerie = fso.Drives(myDongle).SerialNumber Then
DongleOK = True
Set fso = Nothing
Text1.Visible = False
Exit Sub
End If
End If
End Sub
(2) si on retire brutalement la clé usb, on peut *parfois* tromper SysInfo1_DeviceRemoveComplete : le progr continue à tourner.
ios59
Messages postés1Date d'inscriptionlundi 3 janvier 2005StatutMembreDernière intervention30 mars 2005 30 mars 2005 à 21:43
Bonjour Ryl
Oui, désoler,
et en plus ta methode est rapide
a+
ios
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 30 mars 2005 à 18:27
Bonjour ios,
Merci a toi ,mais je ne comprends pas "N° de serie" ....
L'(outil) est pourtant déja inclus dans mon code !?!
a+
ryl...
cs_ios
Messages postés4Date d'inscriptionlundi 3 juin 2002StatutMembreDernière intervention24 janvier 2006 30 mars 2005 à 17:10
simple et efficace.
juste une petite chose, il aurait fallu intégrer l'outil pour trouver son N° de série, mais ça permet de faire d'autre recherche et de trouver encore d'autre possibilités
merci
ios
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 28 mars 2005 à 14:17
Pour le CD pas besoin d'un "autorun" ou d'un "SendMessage" , il est possible de partir sur ma base et modifier ces deux lignes:
''//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
''// TESTER si (USB se connecte)
''// si oui, ne traiter que les périphériques de stockage de type USB
''//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Private Sub SysInfo1_DeviceArrival(ByVal devicetype As Long, ByVal deviceid As Long, ByVal devicename As String, ByVal devicedata As Long)
' Ne traiter que les unités de stockage de type data0
If devicetype <> 2 Or devicedata <> 1 Then Exit Sub //<= pour CD
............
et dans:
''//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
''// TESTER si (USB se deconnecte)
''// si oui, ne traiter que les périphériques de stockage de type USB
''//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Private Sub SysInfo1_DeviceRemoveComplete(ByVal devicetype As Long, ByVal deviceid As Long, ByVal devicename As String, ByVal devicedata As Long)
' Ne traiter que les unités de stockage de type data0
If devicetype <> 2 Or devicedata <> 1 Then Exit Sub //<= pour CD
............
voili
a+
ryl...
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 27 mars 2005 à 20:00
Oui c'est sur ... mais ça enleve au moins la contrainte du Windows NT. On peut aussi utiliser le lecteur CD, avec un autorun spécialisé qui envoie un SendMessage à l'application protégée pour la déverouiller... Mais la, faut que l'autorun soit activé.enfin bon, il y a plusieurs solutions ;-)
rylryl
Messages postés311Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention15 décembre 20061 27 mars 2005 à 18:23
Bonjour azerty25,
Oui, il est possible d'utiliser une disquette, mais dans ce cas il sera obligatoire d'utiliser la technique du "scan drive" puisque les événements (WM_DEVICECHANGE..sysinfo)ne sont pas possible sur lecteur disquette .
Et de boucler cycliquement sur un "scan drive" pour voir si le DONGLE est toujours present peut vite être lourd ...
a+
ryl...
cs_azerty25
Messages postés1114Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention 6 mai 2007 27 mars 2005 à 14:09
Y'a plus simple, utiliser les disquettes lol. Mais certains vont dire que les PCs d'aujourd'hui n'en ont plus ... (d'ailleur, c'est trop la merde quand il faut les réinstaller...!!!)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 26 mars 2005 à 16:25
Salut
Je souris car c'est une idée que j'avais eu pour mes programmes pro. Donc, bonne idée !
Hélas, parmi mes clients, certains sont encore sous Windows NT qui ne supporte pas les connexions USB.
Côté code, tu t'embètes pour rien avec l'OCX SysInfo qui est bien pratique, mais une OCX, c'est toujours chiant.
Comme une clé USB de stockage est reconnue comme un disque dur de type RAM, il est facile de chercher parmi les unités de stockage les disques de type RAM puis de comparer les n° de série. De multiples sources de VBfrance permettent cette recherche avec les deux APIs GetVolumeInformation et GetDriveType
26 oct. 2008 à 10:07
bien ce code, mais j'ai quand même un petit problème...
j'ai 8 clés USB de marque et modèle différente....
sur les 8, 5 me donnent un numéro de série identique précédé d'un "-"
une idée ?
merci d'avance
3 juin 2008 à 17:49
Message :
Bonjour rylryl.
J'ai essayé d'utiliser ton programme mais à part l'avoir télécharger je ne suis pas arrivé loin. Sur Vb express 2008 il me dit qu'il y a des erreurs. Peux tu me dire car je débute , ce qu'il faut faire une fois que l'on télécharge ta source. J'aimerais m'en inspirer pour protéger un logiciel externe au programme en utilisant le numéro de série de la clé (if Drv.SerialNumber = ww )
JE te remercie d'avance.
8 mai 2008 à 18:31
8 févr. 2008 à 00:27
de plus j'ai un - devants le numéro de série , ceci dit je suis sous vista , il y a des change que les usb ne son pas gérè de la même façon.
27 juin 2006 à 23:16
Comment puis-je faire
Merci louloupopar (en sachant que j'ai la delphi perso 6 et trés débutant)
19 juin 2006 à 09:53
dèsque l'utilisateur formate le flash disk il devient automatiquement hors service.
ya t'il un moyen pour éviter cela de se produire.
ne pas permettre de formater le falsh.
22 mai 2006 à 18:21
Merci (^v^)
13 janv. 2006 à 11:32
Cela ne me parait pas suffisemment sécurisé comme système, avec un simple hook d'une fonction de DLL on peut contourner le système.
Je pense que ce système est une bonne idée, qu'il faudrait associer en plus d'un sécurité par cryptage RSA ou DES, par exemple crypter le numéro de série de la clé avec une clé publique, et mettre la clé privée sur la clé USB, du coup meme si on parvient à faire croire au système que la bonne clé et inséré la seconde vérification echoue car la reconstitution du numéro de serie par la clé privée est impossible sans la vraie clé USB.
25 oct. 2005 à 13:00
Merci pour ta réponse aussi rapide ;)
25 oct. 2005 à 12:00
Un "Dongle" c'est une pièce physique (dans notre cas une clé USB) que l'on doit connecter à l'ordinateur pour que le programme fonctionne. J'utilise çà pour la Fédération Européenne des Loisirs Aériens. Si tu connectes la clé USB, tu as accès à certaines fonctionalités qui ne sont pas activées sans le dongle.
Dab
25 oct. 2005 à 09:41
11 oct. 2005 à 09:19
Je viens de formater ma clé en FAT32 et j'ai bien un numéro de série. Elle était foramtée en FAT à l'origine, donc cà marche. Par contre le n° de série change à chaque formatage, ce qui veut dire que le dongle est HS dès qu'on formate la clé.
Il faut le signaler aux utilisateurs du dongle...
Dab
11 oct. 2005 à 08:21
Moi j'ai toujours des n° de séries à 0...
'Dans ScanDongle :
If Drive.IsReady = True Then
'J'ai rajouté çà :
msg msg & "N° de série du disque " & Drive & "\ " & fso.Drives(Drive + "").SerialNumber & vbCrLf
avec msgbox msg à la fin de la boucle et j'obtiens les n° de série de mes disques dur, mais mes trucs USB ont un n° de série = à 0. Alors j'ai autant de dongles que de disques USB !
Est-ce normal ?
Merci et A+
Dab
11 oct. 2005 à 04:35
La MAJ est faite le N° de série est maintenant affiché.
A+
ryl...
10 oct. 2005 à 20:50
Bonjour, je n'arrive pas à trouver mon N°série. Merci
31 mars 2005 à 13:47
Si je parcours tous les lecteurs c'est pour que :
Au démarrage du prog il force la detection du dongle
(savoir si present ou pas!).
Et si tu arrive a tromper sysinfo (bizzzzzar ça!) rajoute justement un scan cyclique ,mais ça devient plus lourd !
a+
ryl...
31 mars 2005 à 10:03
2 choses cependant :
(1)
dans la sub Scan_Dongle, tu parcoures tous les drives possibles ; on peut très bien éviter cela, vu que l'event SysInfo1_DeviceArrival peut donne la lettre du drive.
Donc, à ce niveau, en re-définissant DongLettre en string avec comme valeur DongLettre = Chr(Log(DeviceID) / Log(2) + 65), alors on peut appeler une variante de Scan_Dongle, soit ScanDongle2 qui n'interroge *que* le nouveau drive que vient d'arriver :
Sub ScanDongle2(myDongle As String)
If DongleOK = True Then Exit Sub ' si Dongle deja present pas de scan
' Retrouver le dongle et son numéro de serie
Set fso = New FileSystemObject
If fso.Drives(myDongle).IsReady = True Then
If NumSerie = fso.Drives(myDongle).SerialNumber Then
DongleOK = True
Set fso = Nothing
Text1.Visible = False
Exit Sub
End If
End If
End Sub
(2) si on retire brutalement la clé usb, on peut *parfois* tromper SysInfo1_DeviceRemoveComplete : le progr continue à tourner.
30 mars 2005 à 21:43
Oui, désoler,
et en plus ta methode est rapide
a+
ios
30 mars 2005 à 18:27
Merci a toi ,mais je ne comprends pas "N° de serie" ....
L'(outil) est pourtant déja inclus dans mon code !?!
a+
ryl...
30 mars 2005 à 17:10
juste une petite chose, il aurait fallu intégrer l'outil pour trouver son N° de série, mais ça permet de faire d'autre recherche et de trouver encore d'autre possibilités
merci
ios
28 mars 2005 à 14:17
''//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
''// TESTER si (USB se connecte)
''// si oui, ne traiter que les périphériques de stockage de type USB
''//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Private Sub SysInfo1_DeviceArrival(ByVal devicetype As Long, ByVal deviceid As Long, ByVal devicename As String, ByVal devicedata As Long)
' Ne traiter que les unités de stockage de type data0
If devicetype <> 2 Or devicedata <> 1 Then Exit Sub //<= pour CD
............
et dans:
''//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
''// TESTER si (USB se deconnecte)
''// si oui, ne traiter que les périphériques de stockage de type USB
''//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Private Sub SysInfo1_DeviceRemoveComplete(ByVal devicetype As Long, ByVal deviceid As Long, ByVal devicename As String, ByVal devicedata As Long)
' Ne traiter que les unités de stockage de type data0
If devicetype <> 2 Or devicedata <> 1 Then Exit Sub //<= pour CD
............
voili
a+
ryl...
27 mars 2005 à 20:00
27 mars 2005 à 18:23
Oui, il est possible d'utiliser une disquette, mais dans ce cas il sera obligatoire d'utiliser la technique du "scan drive" puisque les événements (WM_DEVICECHANGE..sysinfo)ne sont pas possible sur lecteur disquette .
Et de boucler cycliquement sur un "scan drive" pour voir si le DONGLE est toujours present peut vite être lourd ...
a+
ryl...
27 mars 2005 à 14:09
26 mars 2005 à 16:25
Je souris car c'est une idée que j'avais eu pour mes programmes pro. Donc, bonne idée !
Hélas, parmi mes clients, certains sont encore sous Windows NT qui ne supporte pas les connexions USB.
Côté code, tu t'embètes pour rien avec l'OCX SysInfo qui est bien pratique, mais une OCX, c'est toujours chiant.
Comme une clé USB de stockage est reconnue comme un disque dur de type RAM, il est facile de chercher parmi les unités de stockage les disques de type RAM puis de comparer les n° de série. De multiples sources de VBfrance permettent cette recherche avec les deux APIs GetVolumeInformation et GetDriveType