he leute,
ich zerbreche mir gerade den Kopf darüber einen PC zuverlässig identifizieren zu können.
So recht einfallen tut mir nur die möglichkeit aus den hardwarekomponenten etwas zu generieren.
Die wechseln ja meist nicht oft bzw wäre das in kauf zu nehmen.
Das nächste wäre dann die umsetzung. Wie lese ich den aus komponenten diese eindeutigen infos aus hmmmm ?
Fingerprint/HardwareID generieren, aber was als Quelle nehmen ?
-
- [ gelöst ]
-
WhiteLion -
9. November 2010 um 20:58 -
Geschlossen -
Erledigt
-
-
Die MAC-Adresse eines Netzwerkcontrollers sollte auch eindeutig sein.
Nur in dem unwahrscheinlichen Fall das diese bewusst verändert wurde könnte sie mehrfach auftreten.Ein paar Möglichkeiten diese auszulesen:
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$aMACs = _GetMacAdresses()
[/autoit] [autoit][/autoit] [autoit]
_ArrayDisplay($aMACs)Func _GetMacAdresses()
[/autoit] [autoit][/autoit] [autoit]
Local $Ret = _GetMacAdressesCMD()
If @error Then
Local $Ret = _GetMacAdressesWMI()
Return SetError(@error, @extended, $Ret)
EndIf
Return $Ret
EndFuncFunc _GetMacAdressesWMI()
[/autoit] [autoit][/autoit] [autoit]
;by AspirinJunkie
Local Static $oWMI = ObjGet("winmgmts:\\localhost\root\CIMV2")
If @error Or Not IsObj($oWMI) Then Return SetError(1, @error, 0)
Local $aItems = $oWMI.ExecQuery("SELECT MACAddress FROM Win32_NetworkAdapter " & _
"WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> " & _
"'Microsoft'))", "WQL", 0x10 + 0x20)If IsObj($aItems) Then
[/autoit] [autoit][/autoit] [autoit]
For $x In $aItems
If IsDeclared("aReturn") <> -1 Then
Local $aReturn[1] = [StringReplace($x.MACAddress, ':', '-')]
Else
ReDim $aReturn[UBound($aReturn) + 1]
$aReturn[UBound($aReturn) - 1] = StringReplace($x.MACAddress, ':', '-')
EndIf
Next
Return $aReturn
Else
Return SetError(2, 0, 0)
EndIf
EndFunc ;==>_GetMacAdressesWMIFunc _GetMacAdressesCMD()
[/autoit] [autoit][/autoit] [autoit]
;by AspirinJunkie
$sCMD = _GetCMDReturn("ipconfig", "/all")
$aRegExRet = StringRegExp($sCMD, "[^-]([0-9A-F]{2}(?:-[0-9A-F]{2}){5})[^-]", 3)
If @error Then
Return SetError(1, @error, '')
Else
Return $aRegExRet
EndIf
EndFunc ;==>_GetMacAdressesCMDFunc _GetCMDReturn($sCMD, $sParameter = '')
[/autoit] [autoit][/autoit] [autoit]
;by AspirinJunkie
Local $sPara = '', $sReturn = '', $sline
If $sParameter <> '' Then $sPara = ' ' & $sParameter
Local $iPID = Run($sCMD & $sPara, '', @SW_HIDE, 2)While 1
[/autoit] [autoit][/autoit] [autoit]
$sline = StdoutRead($iPID)
If @error Then ExitLoop
$sReturn &= $sline
WEndReturn $sReturn
[/autoit]
EndFunc -
Ebenfalls sehr eindeutig dürfte es sein den Windows Product Key aus der Registry auszulesen.
Wo der zufinden ist kann man hier nachlesen: http://blog.bigbasti.com/windows-lizenz…istry-auslesen/Allerdings benötigt der User dafür evtl Admin Rechte.
-
In Firmen sind doch aber Volumenlizenzen im Einsatz wo der Key jeweils der selbe ist - oder?
Und vorinstallierte OEM-Versionen sind teilweise ebenfalls gleich dachte ich. -
Könntest du recht haben. Allerdings ist es im Privaten wiederum eher wahrscheinlich, dass der Benutzer öfters die MAC Adresse ändert (z.B. um bei Kabelanbietern eine neue IP Adresse zu erhalten)
-
Ja an sowas hab ich nicht gedacht - stimmt.
WhiteLion
Lies ansonsten einfach mal bestimmte Informationen aus (Grafikkartenhersteller, Board-ID etc.) - lässt sich meistens gut mit WMI machen.
Kombiniere sie dann immer in der selben Reihenfolge zu einem Gesamtstring und berechne dir aus diesem String dann eine md5-Checksumme.
Diese Summe dürfte (in Abhängigkeit was du alles mit reinnimmst) ziemlich eindeutig sein. -
Hm,
soweit ich weiß ist die MAC Adresse Hardwaregebunden und lässt sich nicht ändern, es sei denn man tauscht die Netzwerkkarte aus !!!
Bitte korrigiert mich, wenn ich etwas falsches sage ...EDIT:
Weitere Beispiele: S/N der CPU, (OS-)HDD und wie von AspirinJunkie bereits erwähnt, die S/Ns der Hauptplatine usw.
So macht Bill es auchGruß
Greenhorn -
-
danke ich hab mich zwar noch für keine lösung entschieden, aber die anregungen genügen
-
Ich würde die Seriennummer vom Board nehmen. Das Board wird so gut wie nie getauscht und die nummer ist eindeutig.
Lässt sich recht einfach per WMI auslesen. AFAIK hatte Oscar mal sowas.Je nachdem was du vorhast können MAC-Adressen zu problemen führen wenn ein Rechner mehrere Netzwerkgeräte hat.
-
- Offizieller Beitrag
Vorsicht! Nicht jedes Board liefert eine eindeutige Seriennummer. Oft wird "unknow" oder "0000-0000-0000-0000" zurückgegeben.
Ich würde dem Rat (Post#6) von AspirinJunkie folgen. Mehrere Komponenten nehmen und daraus eine MD5-Checksumme. Das dürfte ausreichen. -
Greenhorn:
Das mit dem MAC wechsel stimmt so nicht, ich habe Kabel Netz und eben schon öffters meine MAC ändern müssen; wie misterspeed schon meinte. Hab sogar deswegen schon ne Netzwerkkarte verlorenGrüsse!
-
Techmix, wie "Netzwerkkarte verloren"?
Die "MAC ändern" brennt keine neue Daten in den Chip (EEprom), lediglich beim Auslesen werden die auszulesenden Daten durch "geänderte" ersetzt. Die MAC ist jedenfalls in allen mir bekannten Karten in HARDWARE gegossen, wäre es anders, wäre das System unnütz. Bei steckbaren Netzwerkkarten stand die MAC früher im BootROM, heute ist sie vielleicht in einem anderen Chip vergraben, aber sicher nicht durch ein 08/15 Programm hardwaremässig zu ändern.
Vgl. http://de.wikipedia.org/wiki/Locally_Administered_Address und http://de.wikipedia.org/wiki/Universal…istered_Address
Ich kenne Admins, die Ihr Netzwerk statt nach IP-Adressen nach (eigens zusammengestellten) MAC-Addressen sortieren da werden dann die MAC-Adressen den IP´s "zugeordnet", so kann man auch auf den untersten Layern schnell erkennen "wer" da mit "wem" spricht . -
In der WinAPIEx. au3 ist eine Funktion _WinAPI_UniqueHardwareID()
http://www.autoitscript.com/forum/topic/98712-winapiex-udf/ -
Andy:
Stimmt, hatte den DSL-Modem ne neue Mac verpassen müssen... aber wie war das noch mit der LAN Karte??Grüsse!