Canvas not supported
Canvas not supported
Suchen
Bookmark
Canvas not supported
Shine Effekt
Direkt zum Seiteninhalt

Hauptmenü:

Hard- und Software ID ermitteln

 

Autor:

Oscar Kohler

Version:

0.11

Level:

Einfach

Sprache:

Perl


 
Haftungsausschluss / Disclaimer
Kontakt / Contact
Drucken / Print


Oftmals wäre es sehr praktisch wenn man die Eindeutigkeit eines Computers automatisiert feststellen könnte.
So könnte man eine selbstproduzierte Software an einen Computer binden, Kiosk Netzwerke nur für definierte Computer freigeben, (Web-)Dienste ausschliesslich für registrierte Computer anbieten und vieles mehr.
Die Frage ist nun, wie können wir den definierten Computer von einem undefinierten eindeutig unterscheiden, ohne dass dies durch Manipulation des undefinierten Computers umgangen werden kann ?
Hier kommt die Idee einer Hard-(& Software) ID ins Spiel ...

Generierung einer eindeutigen Hardware / Software ID, die Idee ...


Damit wir den Computer (relativ) eindeutig indentifizieren können, müssen wir möglichst eindeutige Attribute vom Computer auslesen. Attribute die einerseits relativ eindeutig aber vorallem auch schwer zu manipulieren sind.

Nehmen wir mal 2 Hardwareattribute die eigentlich eindeutig sein sollten:

  • MAC Adresse: Sollte eindeutig sein, aber leider lässt sich die MAC Adresse unter Windows relativ einfach überschreiben,

  • CPU UniqueId: Ist zumindest in der selben CPU Family eindeutig, leider tritt hier oft ein anderes Problem auf. Bei den meisten PC's ist dieses Attribut im BIOS deaktiviert, und muss zuerst aktiviert werden.


Gut, wir sehen, das erste Problem besteht schon mal darin, dass auch eindeutige Attribute nicht immer wirklich eindeutig sind ...

Gehen wir aber erstmals der Frage nach, wie wir diese Attribute überhaupt aus dem Computer rausziehen können.
Prinzipiell kann man verschiedene Wege gehen, um die Hardware aus dem Computer auszulesen. Die meisten sind umständlich und kompliziert zu gleich.
Seit einiger Zeit greift uns jedoch eine Windows Architektur kräftig unter die Arme die sich Windows Management Instrumentation nennt, oder kurz WMI.

Einführung: WMI

Wmi erlaubt es uns glücklicherweise, die gewünschten Attribute relativ umkompliziert aus der Hardware auszulesen. Zudem funktioniert dies mit unterschiedlichsten Programmiersprachen wie C/C++, C#, VB, Perl ...
Aufgrund der Einfachheit habe ich mich hier für Perl entschieden.

Interessante Attribute


Da wir nun prinzipiell wissen, wie wir die Attribute auslesen können, müssen wir noch überlegen, welche nun wirklich Sinn machen.


Die Attribute sollten zumindest folgende Kriterien erfüllen:

  • Möglichst Eindeutig,

  • Statisch,

  • Schwer zu manipulieren


Zudem hängt es natürlich auch vom Einsatz ab:

  • Welcher Zweck wird verfolgt,

  • Wie "sicher" muss es sein,

  • Wie kompliziert darf es sein,

  • u.s.w. ...


Grundsätzlich muss klar sein, "Sicher" ist im Endeffekt gar nichts !
Aber je mehr eindeutige Attribute wir auslesen, desto eindeutiger wird auch die Identifizierung. Allerdings steigt damit auch die Komplexität und Fehlerträchtigkeit.

Aus den vielen möglichen Attributen habe ich für diesen Test die folgenden ausgewählt:

BIOS: Seriennummer,
CPU: Unique ID,
HD-C: Volume Seriennummer,
OS: Seriennummer, Installationsdatum (Ändert sich allerdings mit der Zeitzone !)

Schlussendlich muss sich natürlich jeder selbst überlegen, welche Attribute in Frage kommen.

Nachdem wir alle relevanten Attribute aus dem Computer ermittelt haben, hängen wir sie, wie bei einer Kette, zu einem String zusammen. (Zur Verwirrung könnten wir auch noch Füllzeichen in den String einstreuen.)
Abschliessend ermitteln wir einen md5 Hash über den gesamten String. Dadurch verbergen wir sicherheitsrelevante Attribute, erschweren die Sichtbarkeit unseres "Hardware-Software-Schlüssels" und erhalten einen "Identifikations" - String definierter Länge.

Programm Beispiel



Beispiel Snippet in Perl ansehen


Programmiersprache: Perl

Microsoft: WMI


Das Beispiel bringt bei mir folgende Ausgabe:

Raw:  1234567893E09F448XXXXX-XXX-XXXXXXX-XXXXX20080717203037.000000+120
Hash: 8f17fd7c5ebd45b159f1285b70d29a21                                        


Den erhaltenen Hash können wir nun dazu verwenden, den PC (mehr oder weniger) eindeutig zu identifizieren.
Ändert sich eines der gewählten Attribute, muss jedoch wieder ein neuer Identifikations Hash generiert werden.


 
Kein Kommentar
 
Letzte Änderung: 03.02.2015
button Canvas not supported button
Zurück zum Seiteninhalt | Zurück zum Hauptmenü