Entwickler-Ecke

Windows API - Einen PC eindeutig identifizieren


Fabian W. - Fr 16.09.05 19:35
Titel: Einen PC eindeutig identifizieren
Hallo,
ich suche eine Möglichkeit, wie ich einen Pc wirklich EINDEUTIG identifizieren kann. Gibt's da irgendwelche 'Seriennummern', die ich mit delphi auslesen kann? Das ganze soll auf Windows 2000 und XP Rechnern funktionieren, es ist daon auszugehen dass die meisten keine Internetverbindung oder Netzwerkkarte haben.

Danke schon im Vorraus und mfg


Delete - Fr 16.09.05 19:47

Das Thema hatten wir schon ssehr, sehr oft hier im Forum. Aber jedesmal sind wir zu dem Schluss gekommen, das dies nicht geht.


Fabian W. - Fr 16.09.05 19:49

Naja, wäre auch zu einfach gewesen :roll:

Trotzdem Danke :D


Baumunk - Di 20.09.05 16:21

Hallo zusammen,

Falls einen Rechner die Netzwerkkarte hat, kann es über MAC adresse (Netzwerkkartennummer) machen. Der ist immer eindeitig.


Kedariodakon - Di 20.09.05 16:26

user profile iconBaumunk hat folgendes geschrieben:
Hallo zusammen,

Falls einen Rechner die Netzwerkkarte hat, kann es über MAC adresse (Netzwerkkartennummer) machen. Der ist immer eindeitig.


Falsch, es sollte so sein, Fakt ist aberm das man sie meistens ändern kann!
Außerdem sagte er, das davon auszugehen ist, dass diese Rechner keine Netzwerkkarte bzw. INet( Im Internet spielt die Mac eh keine Rolle mehr...) haben...


Bye


Narses - Di 20.09.05 16:40

Moin!

user profile iconBaumunk hat folgendes geschrieben:
Falls einen Rechner die Netzwerkkarte hat, kann es über MAC adresse (Netzwerkkartennummer) machen. Der ist immer eindeitig.

Leider ist das total falsch... :roll:

1. Wenn ich die Netzwerkkarte austausche, dann ist das immer noch der PC, aber eine andere Netzwerkkarte... :|

2. (Hardware-)MACs sind bei weitem nicht weltweit einmalig. Die ersten 6 Nibbles sind die Herstellerkennung und damit fix (vergeben), aber die Hersteller müssen, wenn sie "ausreichend" viele Netzwerkkarten hergestellt haben, die Kennungen "recyclen". Das ist bei einigen bereits passiert, so dass es tatsächlich (weltweit gesehen) doppelte MAC-Adressen gibt! Zugegebenermaßen ist die Wahrscheinlichkeit, dass man zwei davon in einem LAN zusammen zu "sehen" kriegt, sehr sehr gering... aber möglich! :wink:

Wie user profile iconLuckie schon völlig korrekt sagte, es ist einfach nicht möglich, einen PC eindeutig zu identifizieren.

cu
Narses


matze.de - Di 20.09.05 18:02

Wie siehts eigentlich mit der Seriennummer aus?(Systemsteuerungen->System->erster Tab)

mfg matze


Narses - Di 20.09.05 18:09

Moin!

user profile iconmatze.de hat folgendes geschrieben:
Wie siehts eigentlich mit der Seriennummer aus?(Systemsteuerungen->System->erster Tab)

Naja, wenn die Frage lauten würde: "Wie identifiziere ich eine Windows-Installation?" könnte man darauf aufsetzen, aber selbst hier wäre ich mir nicht sicher, ob es da nicht Leute gibt, die "bestimmte" Seriennummern verwenden... :wink:

Ich hab´s aufgegeben hier eine eindeutige Lösung zu finden...

cu
Narses


matze.de - Di 20.09.05 18:30

Achso ja es ging ja über den Pc, der hardware allgemein.. Wie wäre es mit allen hardwareinfos auslesen(sehr sehr genau) sehr unwahrscheinlich das einer nochmal das selbe genau hat.. naja egal eindeutig geht es dann nicht.

mfg matze


Fabian W. - Di 20.09.05 19:31

Es muss net 100% sicher sein. Solang die Kombination bei jedem 10000 PC vorkommt is das für die Verhältnisse des Progs fast eindeutig.
Was würdet ihr vorschlagen an Hardwareinfos?


UGrohne - Di 20.09.05 23:58

Eine Möglichkeit wäre evtl. auch der Windows-Security-Identifier (SID). Diese wird normalerweise bei einer Neuinstallation immer neu vergeben und sollte relativ eindeutig sein. Das Problem ist nur, wenn der Rechner per Image aufgestzt wird, in diesem Fall kann es auch mehrere Rechner geben, die die gleiche ID haben.

Die Windows-Seriennummer ist keine Alternative, da häufig z.B. in Firmennetzen sog. Volumenlizenzen verwendet werden, also mehrere Rechner die gleiche Seriennummer haben. Und wie shcon gesagt, gibt es ja diverese "Standard-Seriennummern" ;-)

Wie Du diese allerdings auslesen kannst, kann ich Dir leider im Moment nicht sagen.


Gothicware - Mi 21.09.05 01:24

Früher hielt ich Mac-Adressen für sehr Sicher. Dann belerte man mich mittels VM-Ware eines besseren. Ich glaube mit der Zukunft von Virtuellen Maschienen (unter anderem in Virtuellen Maschienen) wird dies immer schwieriger Möglich. Es kommt auch ganz drauf an, was du machen willst. Du könntest zb.: Prozessor Daten und die Serial der ersten Festplatte auslesen (GetVolumeInformation). Somit wäre eine Übereinstimmung relativ selten.


retnyg - Mi 21.09.05 02:16

user profile iconGothicware hat folgendes geschrieben:
Früher hielt ich Mac-Adressen für sehr Sicher. Dann belerte man mich mittels VM-Ware eines besseren.

die mac-adresse kann man sogar mit nem kleinen windowstool ändern bzw im treiber umstellen ;-)


arj - Mi 21.09.05 07:32

@Fabian W.

Für was brauchst du es denn? Eventuell könnten wir dir ja noch andere Möglichkeiten vorschlagen.


Fabian W. - Mi 21.09.05 12:37

Das soll einen 'Kopierschutz' fürn Programm geben. Der Käufer bekommt n kleines Prog das die Daten ausließt. Dann werden die Daten kurz in mein Prg implementiert sodass das Prog nurnoch auf dem angegeben Rechner läuft. Des Prog wird net in Massen verkauft werden wesahlb ich mich für die Variante entschieden hab.


matze.de - Mi 21.09.05 12:40

Man könnte ja einen Fingerprint eines Pcs machen, der sich aus Hardwareinfos, SID, Volumen und/oder auch Registry einträgen zusammensetzt.

mfg matze


retnyg - Mi 21.09.05 12:46

user profile iconFabian W. hat folgendes geschrieben:
Das soll einen 'Kopierschutz' fürn Programm geben. Der Käufer bekommt n kleines Prog das die Daten ausließt. Dann werden die Daten kurz in mein Prg implementiert sodass das Prog nurnoch auf dem angegeben Rechner läuft. Des Prog wird net in Massen verkauft werden wesahlb ich mich für die Variante entschieden hab.

du verkaufst als schüler kommerzielle programme ? :lol:
nimm am einfachsten die seriennummer der festplatte und leg jedem lizenzierten rechner ein licensefile bei, wo auf diese nummer geprüft wird. wer sich auskennt und das programm knacken will schafft es so oder so.
die nummer der platte bleibt im normalfall gleich und ändert sich auch bei einer neuinstallation nicht.
wenn du deinen kunden nicht sagst wie die identifizierung funktioniert, werden sie vermutlich auch nicht draufkommen.


Fabian W. - Mi 21.09.05 19:25

user profile iconretnyg hat folgendes geschrieben:
user profile iconFabian W. hat folgendes geschrieben:
Das soll einen 'Kopierschutz' fürn Programm geben. Der Käufer bekommt n kleines Prog das die Daten ausließt. Dann werden die Daten kurz in mein Prg implementiert sodass das Prog nurnoch auf dem angegeben Rechner läuft. Des Prog wird net in Massen verkauft werden wesahlb ich mich für die Variante entschieden hab.

du verkaufst als schüler kommerzielle programme ? :lol:
*Räusper* Ich werd ja in absehbarer Zeit 16. Da kann ich des Prog ja in Auftragsarbeit geschrieben ham. :wink:
Wie lese ich die Nummer der Festplatte den aus??

user profile iconmatze.de hat folgendes geschrieben:
Man könnte ja einen Fingerprint eines Pcs machen, der sich aus Hardwareinfos, SID, Volumen und/oder auch Registry einträgen zusammensetzt.
Wenn du mir auch sagen könntest wie ich die SID auslese.

Danke


wdbee - Do 22.09.05 11:05

Hallo Fabian,

alle Methoden die auf einer Kombination von Hardware-IDs (Festplatte, MAC usw.) beruhen haben den Nachteil, dass auch ein rechtmäßiger Benutzer damit Probleme bekommen kann, wenn er mal defekte Teile auswechselt.

Es gibt eine andere Methode, die die Fähigkeiten von Windows (Crypto-API) nutzt. Dabei ist es wichtig zu wissen, dass Windows die Möglichkeit bietet, Schlüsselpaare (für Public-Key-Verfahren) in Containern zu verwalten. Bei der Erzeugung eines Schlüsselpaares kann man angeben, ob der geheime, private Schlüssel exportierbar sein soll oder nicht.
Dein Programm könnte also einen eigenen Container anlegen, ein Schlüsselpaar generieren und den öffentlichen Schlüssel exportieren, während der private nur auf diesem Rechner verfügbar ist. Mit dem öffentlichen Schlüssel kannst du die Lizenzinformation so verschlüsseln, dass sie nur mit dem privaten entschlüsselt werden kann. Da der nur auf dem Zielrechner verfügbar ist (nicht exportierbar), ist das ein brauchbarer Schutz.
Da alle Funktionen dazu über das Crypto-API (unter NT, 2k, XP, Server 2003 usw.) fertig auf jedem Windows-PC verfügbar sind, ist das eine interessante Methode. Allerdings musst dabei berücksichtigt werden, dass die Container userspezifisch sind! Die Lizensierung erfolgt also nicht auf PC sondern (noch schärfer) auf User-Basis.

Informationen zum Crypto-API sind auch unter Delphi in der Hilfe zu finden (im Teil Windows-SDK, Crypt...).


Fabian W. - Do 22.09.05 14:34

Hi,

an das austauschen von hardware usw. hab ich schon gedacht. Falls es damit mal Probleme geben sollte kann sich der Kunde an mich oder meinen Partner wenden, des is also net unbedingt das Problem.
Ich finde die von dir vorgestellt Methode sehr interessant, fürchte aber, dass ich nicht die dazu notwendigen Kenntnisse besitze um das wirklich zu realisieren. Ich werd mir das bestimmt mal genauer anschaun aber ohne viel, viel Unterstüzung wird das nix.
Bin deshalb weiter auf der Suche nach bestimmten hardwareinfos, die sich für meine Zwecke eignen könnte.