Clé "Matériel" (Via info du disque dur)

Programmation d'applications complexes
Avatar de l’utilisateur
caussatjerome
Messages : 50
Inscription : lun. 24/sept./2012 20:57
Localisation : Somme

Clé "Matériel" (Via info du disque dur)

Message par caussatjerome »

Petite procédures pour un logiciel avec licence par exemple, ou système de chiffrement empêchant le cassage du mot de passe via une clé materiel supplémenntaire

Code : Tout sélectionner

Procedure.s get_disk_info(letter.s="C:\",search.s="LABEL")
Protected VNB$=Space(100);Volume Name Buffer
Protected VNS=100;Volume Name Size
Protected VSN=0;Volume Serial Number (Hex)
Protected MCL=0;Max.File Name Len
Protected FSF=0;File System Flags
Protected FSNB$=Space(100);File System Name Buffer (FAT/NTFS usw)
Protected FSNS=100;File System Name BufferSize
GetVolumeInformation_(@letter.s,@VNB$,VNS,@VSN,@MCL,@FSF,@FSNB$,FSNS)
Protected temp.s=Hex(vsn)
If Len(temp.s)>8
temp.s=Mid(temp.s,4)
EndIf
Protected serial.s=Mid(temp.s,1,4)+"-"+Mid(temp.s,5)
temp.s=""
Select search.s
Case "LABEL"
ProcedureReturn VNB$
Case "SERIAL"
ProcedureReturn serial.s;give 0, if there is no disk
Case "MAXCASENAME"
ProcedureReturn Str(mcl)
Case "FILESYSTEMNAME"
ProcedureReturn FSNB$
Case "FILESYSTEMFLAG"
ProcedureReturn Hex(fsf)
EndSelect
EndProcedure
Procedure.s hardwarekey()
Protected drive.s=Mid(GetPathPart(ProgramFilename()),1,1)
Protected label.s=get_disk_info(drive.s)
Protected serial.s=get_disk_info(drive.s,"SERIAL")
Protected maxlongname.l=Val(get_disk_info(drive.s,"MAXCASENAME"))
Protected fstype.s=get_disk_info(drive.s,"FILESYSTEMNAME")
Protected fsflag.s=get_disk_info(drive.s,"FILESYSTEMFLAG")
Protected sortie.s=hmac_sha512(drive.s+label.s+serial.s+Str(maxlongname.l),fstype.s+fsflag.s+UserName())
ProcedureReturn sortie.s
EndProcedure

MessageRequester("Votre clé materiel est : ",hardwarekey())
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Clé "Matériel" (Via info du disque dur)

Message par Zorro »

erreur la dessus

Code : Tout sélectionner

;;	Protected sortie.s=hmac_sha512(drive.s+label.s+serial.s+Str(maxlongname.l),fstype.s+fsflag.s+UserName())
il manque la procedure ;)

et la fonction pour lire les infos du disque dur avait deja été abordé il me semble
mais merci c'est cool :)


voici la version Allemande du code concernant le serial du diskdur

Code deja donné par Ar-s ici :
http://www.purebasic.fr/french/viewtopi ... ngs#p89551
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Répondre