Frage

Frage: Ich habe mit eindeutiger ID für jeden vernetzten Client zu kommen, so dass:

  • es (ID) sollte bestehen bleiben, wenn Client-Software auf dem Zielcomputer installiert ist, und sollte weiterhin bestehen bleiben, wenn Software neu installiert auf demselben Computer und gleichen OS Rate,
  • sollte es nicht ändern, wenn Hardware-Konfiguration in den meisten Arten modifiziert wird (außer das Motherboard zu ändern)
  • Wenn die Festplatte mit Client-Software installiert ist, mit identischer Hardware-Konfiguration auf einem anderen Computer geklont (oder so ähnlich wie möglich), Client-Software sollte diese Änderung bewusst sein.

Ein wenig Erklärung und einige Hintergrundgeschichte:

Diese Frage ist im Grunde uralte Frage, die auch das Thema Software-Kopierschutz berührt, wie einige der in diesem Bereich verwendeten Mechanismen hier erwähnt werden. Ich soll an dieser Stelle klar sein, dass ich nicht für ein Kopierschutzschema suchen. Bitte lesen Sie weiter. :)

Ich arbeite an einer Client-Server-Software, die in einem lokalen Netzwerk arbeiten soll. Eines der Probleme ist, ich habe zu lösen jede eindeutige Client im Netzwerk zu identifizieren (nicht so sehr ein Problem), so dass ich bestimmte Attribute für jeden spezifischen Client anwenden können, halten und diese Attribute während des Einsatzes Lebensdauer eines bestimmten erzwingen Client.

Während ich nach einer Lösung gesucht, ich war mir der folgenden:

  • Windows-Aktivierungssystem verwendet eine Art von schweren Fingerabdrucks Mechanismus, der extrem empfindlich gegenüber Hardware-Modifikationen ist,
  • Disk-Imaging-Software-Kopien entlang aller Volume IDs (auf jeder Partition gebunden, wenn formatiert) und benutzerdefinierte, eindeutig generiert IDs während der Installation, während erstmals ausgeführt wird, oder in irgendeiner anderen Art und Weise, das heißt streng Software in ihrer Natur und gespeichert in der Registry oder auf der Festplatte, so ist es sehr einfach, zwei zu verwirren.

Die offensichtliche Wahl für diese Art von Problem BIOS-IDs herauszufinden wäre (nicht 100% sicher, ob dies durch identische Motherboard Modelle einzigartig ist, obwohl), so dass das einzige, was kann ich darauf verlassen nicht vervielfältigt, durch Klonieren übertragen, und die nicht geändert werden können (zumindest nicht durch ein Benutzerraum-Programm). Alles andere ausfällt als entweder nicht zuverlässig (MAC Klonen, anyone?), Oder zu anspruchsvoll (im Sinne, dass es zu empfindlich ist, um Konfigurationsänderungen).

Unter Frage, dass ich möchte, ist fragen, bin ich es richtig tun, Architektur-weise? Vielleicht gibt es ein besseres Werkzeug für die Aufgabe, dass ich ...

zu erreichen, haben

Ein weiterer Ansatz, den ich im Sinne hatte, ist etwas ähnlich wie ein Handshake-Mechanismus, in dem ein Server eine interne Referenztabelle des angeschlossenen Client-IDs verwaltet (die sogar vollständig softwarebasiert sein und nicht eindeutige zu einem bestimmten Zeitpunkt) und erzählt der Kunden mit einer anderen ID während Handshake zu kommen, wenn eine doppelte ID bei der Verbindung vorgesehen ist. Dieser Ansatz, ist leider nicht schön spielt mit einem der Anforderungen Attribute zu bestimmten Kunden während der Laufzeit zu binden.

War es hilfreich?

Lösung

Es scheint mir, dass Sie die eindeutige ID Ihren Anforderungen entsprechend konstruieren soll. Diese ID kann als Hash aufgebaut werden (wie MD5, SHA1 oder SHA512) aus den Informationen, die für Sie (einige Informationen über Software- und Hardware-Komponente).

wichtig ist

Sie können Ihre Lösung sicherer machen, wenn Sie solche Hash mit Ihrem privaten Schlüssel signieren und Ihre Software während des Startens überprüfen, dass der Schlüssel ( signierter Hash-Wert ) unterzeichnet ist (nur öffentlicher Schlüssel muss sein installiert zusammen mit Ihrer Software). Man kann eine solche Art von Lösung mit verschiedenen Online-Dienste erweitern, sondern Firmenkunden Online-Dienste finden konnten, nicht so schön.

Andere Tipps

Was Sie suchen ist der Windows-WMI . Sie können die Motherboard-ID erhalten (die ist einzigartig für die gleiche Art von Motherboard) oder viele viele andere Arten von eindeutigen Kennungen und kommen mit einigen cleveren entkernt Funktion eine UHID zu erzeugen. Whoa habe ich gerade ein Akronym machen?

Und wenn Sie schauen, speziell für das Erhalten der Motherboard (BIOS) ID:

WMI class: Win32_BIOS
Namespace: \Root\Cimv2

Dokumentation: http://msdn.microsoft.com /en-us/library/aa394077(VS.85).aspx
Beispielcode: http://msdn.microsoft.com/ en-us / library / aa390423% 28VS.85% 29.aspx

Bearbeiten . Sie keine Sprache angegeben haben (und ich nahm an C ++), aber dies kann in Java erfolgen (mit einem COM-Treiber) und jede .NET-Sprache, als auch

Viele Programme verwenden die hostId, um einen Lizenzcode zu bauen (wie solche auf Basis von FlexLM). Werfen Sie einen Blick auf das, was Matlab auf dem Betriebssystem nicht abhängig:

http://www.mathworks.com /support/solutions/en/data/1-171PI/index.html

Haben Sie auch einen Blick auf diese Frage:

bekommt eine eindeutige ID aus einem Unix-artigen System

Sobald ich auch einige Programme sah ihre Lizenzen über die Seriennummer der Festplatte zu stützen, ein vielleicht ist das umso weniger wahrscheinlich, was zu ändern. Einige würden vorschlagen, die MAC Ihre Ethernet-Karte zu verwenden, aber das neu programmiert werden kann.

MAC
Verlassen Sie sich NICHT AUF MAC! JE. Es ist nicht dauerhaft. Der Benutzer kann es leicht ändern ( unter 30 Sekunden ).

Volume ID
Verlassen Sie sich nicht auf Volume-ID! JE. Es ist nicht dauerhaft. Der Benutzer kann es leicht ändern. Es ändert sich auch einfach durch das Laufwerk formatiert wird.

WMI
WMI ist eine Dienstleistung. Kann einfach deaktiviert werden. Eigentlich wollte ich, dass ich herausfinden, dass auf vielen Computer deaktiviert ist oder gebrochen (ja, sehr oft gebrochen).

Lizenzserver
Verbindung zu einem Validierungsserver können Sie auch eine Menge Probleme verursachen, weil:
 * Ihre Kunden können nicht immer mit dem Internet verbunden werden.
 * Ihre Kunden mit speziellen Einstellungen (Router / NAT / Proxy / Gateway), die sie benötigen, um Eingang in das Programm zu lassen, um es eine Verbindung mit dem Validierungsserver können angeschlossen werden.
 * Können sie hinter einer Firewall, die alle Programme außer ein paar (mein Fall) blockiert. In einigen Fällen können der Firewall nicht unter ihrer Kontrolle (für die meisten Nutzer in einem Unternehmen gültig) sein!
 * Es ist super einfach zu umleiten Ihre Programm zu einem lokalen gefälschten Web-Server, die Ihren Lizenzserver emuliert.

Hardware-Daten
Wenn Sie einen starken Schutz benötigen müssen Sie auf Hardware angewiesen. Etwas, das vom Benutzer nicht bearbeitet werden kann. So etwas wie CPU-ID-Befehl in der Intel / AMD-CPUs und die Seriennummer geschrieben in das IDE-Schnittstelle des Laufwerks an.
Die CPU-ID und HDD ID ist fest angestellt. Sie werden sich nie ändern, auch nicht, nachdem Sie den Computer formatiert und Windows neu installieren.

Es ist machbar. Zum Beispiel diese Bibliothek die Hardware-ID eines Computers liest. Es ist eine kompilierte Demo und auch Sourcecode / DLL . Haftungsausschluss:. Der Link führt zu einem kommerziellen Produkt (19 € / keine Lizenzgebühren)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top