Page 1 sur 1

Trouver le Serial/constructeur/firmware de votre(vos) HDD

Publié : jeu. 13/nov./2008 12:30
par Ar-S
Voilà un code pris sur le fofo UK tiré du fofo allemand.


Code : Tout sélectionner

; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1388&highlight=
; Author: Rings
; Date: 17. June 2003
; OS: Windows
; Demo: No


; Retrieve harddisk`s modell,serial,firmware (Windows only)
; updated on 27. August 2003 -  "[]" brackets in structures
Structure IDEREGS
  bFeaturesReg.b
  bSectorCountReg.b
  bSectorNumberReg.b
  bCylLowReg.b
  bCylHighReg.b
  bDriveHeadReg.b
  bCommandReg.b
  bReserved.b
EndStructure
Structure SENDCMDINPARAMS
  cBufferSize.l
  irDriveRegs.IDEREGS
  bDriveNumber.b
  bReserved.b[3]
  dwReserved.l[4]
EndStructure

Structure  DRIVERSTATUS
  bDriveError.b
  bIDEStatus.b
  bReserved.b[2]
  dwReserved.l[2]
EndStructure
Structure  SENDCMDOUTPARAMS
  cBufferSize.l
  DStatus.DRIVERSTATUS     
  bBuffer.b[512]
EndStructure


#DFP_RECEIVE_DRIVE_DATA = $7C088

bin.SENDCMDINPARAMS
bout.SENDCMDOUTPARAMS



Procedure.s ChangeHighLowByte(Instring.s)
  ;Change BIG-Little Endian
  sdummy.s=""
  L=Len(Instring)
  For I=1 To L Step 2
    If (I+1)<=L
      sdummy.s=sdummy.s + Mid(Instring,I+1,1)+Mid(Instring,I,1) 
    EndIf
  Next I
  ProcedureReturn sdummy.s
EndProcedure


mvarCurrentDrive=0 ;If you have more hard-disks change it here

hdh = CreateFile_("\\.\PhysicalDrive" + Str(mvarCurrentDrive),#GENERIC_READ | #GENERIC_WRITE, #FILE_SHARE_READ | #FILE_SHARE_WRITE,0, #OPEN_EXISTING, 0, 0)
If hdh 
  bin\bDriveNumber = mvarCurrentDrive
  bin\cBufferSize = 512
  
  If (mvarCurrentDrive & 1)
    bin\irDriveRegs\bDriveHeadReg = $B0
  Else
    bin\irDriveRegs\bDriveHeadReg = $A0
  EndIf
  bin\irDriveRegs\bCommandReg = $EC
  bin\irDriveRegs\bSectorCountReg = 1
  bin\irDriveRegs\bSectorNumberReg = 1
  
  br=0
  Result=DeviceIoControl_( hdh, #DFP_RECEIVE_DRIVE_DATA, bin, SizeOf(SENDCMDINPARAMS), bout, SizeOf(SENDCMDOUTPARAMS), @br, 0)
  If br>0
    hddfr = 55:hddln = 40          :
    Modell.s=ChangeHighLowByte(PeekS(@bout\bBuffer[0]+hddfr-1 ,hddln  ) )
    hddfr = 21:hddln = 20          :
    Serial.s=Trim(ChangeHighLowByte(PeekS(@bout\bBuffer[0]+hddfr-1 ,hddln  ) ))
    hddfr = 47:hddln = 8         
    Firmware.s=ChangeHighLowByte(PeekS(@bout\bBuffer[0]+hddfr-1 ,hddln  ) )
    MessageRequester("Info about your harddisk","vendor(Modell)="+Modell.s + Chr(13) +"serial="+Serial.s+ Chr(13)+"Firmwareversion="+Firmware ,0)
  EndIf
Else
  Beep_(100,100)
EndIf

; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = - 

Publié : jeu. 13/nov./2008 12:37
par Backup
excellent pour proteger un logiciel qui ne s'installerai que sur le disque
dur du détenteur de la licence !! :)

Publié : jeu. 13/nov./2008 20:34
par Le Soldat Inconnu
Sauf que chez moi, ca ne marche pas du tout ...

Pb autre windows xp

Publié : jeu. 13/nov./2008 21:59
par meganet
Salut, j'ai utilisé un code comme ça y à quelque temps, et j'ai eu des problèmes car ce code tournait que sous Windows xp. Sous 2k et autre, il disait que l'apis n'était pas dispo. Je retrouves pas mon code, jle posterai si je remet la main dessus.

Publié : jeu. 13/nov./2008 22:56
par Backup
Le Soldat Inconnu a écrit :Sauf que chez moi, ca ne marche pas du tout ...
t"as un disque dur ?? 8O :lol: :lol:

Publié : jeu. 13/nov./2008 23:34
par Jacobus
Fonctionne pas non plus chez moi :? J'ai 3 disques durs et Vista...
Aussitôt compilé, aussitôt terminé et aucun résultat. Pas cherché plus loin.

Publié : ven. 14/nov./2008 0:17
par GeBonet
Testé... XP Pro... ET disque dur :lol: C'est tout bon, ça marche... J'ai le vendeur . Le n° de série et la version ...
:lol: :lol: MAIS !!! XP

Publié : ven. 14/nov./2008 2:10
par poshu
Ca déconne chez moi (sous XP Corporate SP3) pour la simple et bonne raison que mon installation HDD, c'est:
4*500 Go RAID 5
2*1 To RAID 0
Tout ça géré par ma carte mère et son ICH9 d'Intel... Pour raccourcir, c'est un fake raid géré par mon SouthBridge. Et chaque raid renvoie le même numéro. C'est également le case entre deux cartes mère de constructeur différent.

Petit aparté: Avons-nous vraiment besoin de protéger nos logiciels de cette façon? Si je suis au courant d'une telle protection, il est évident que je n'achèterais pas un logiciel: je change des choses dans ma configuration tous les 6 mois (cg, cpu, cm, ram, hdd, mais aussi d'un point de vu software, avec un gros formatage tous les 6 mois)

Publié : ven. 14/nov./2008 2:49
par Backup
poshu a écrit : Petit aparté: Avons-nous vraiment besoin de protéger nos logiciels de cette façon? Si je suis au courant d'une telle protection, il est évident que je n'achèterais pas un logiciel: je change des choses dans ma configuration tous les 6 mois (cg, cpu, cm, ram, hdd, mais aussi d'un point de vu software, avec un gros formatage tous les 6 mois)
si j'ai dit ça, c'est parce que cela est une possibilité

libre a chacun de le faire ou pas ... :)

si tu bosse pour une petite boite
tu peux ainsi "bloquer" ton logiciel au park des machines de l'entreprise

et éviter que les utilisateurs de cette entreprise emmène le logiciel chez eux...

je ne préconise rien, c'est juste une idée d'utilisation .... au meme titre qu'un mot de pass :)

Publié : ven. 14/nov./2008 2:55
par Ollivier