ich möchte die Verteilung meiner Programme im Auge behalten und die Verbreitung innerhalb der Organisation etwas im Auge haben bzw. soll weniger die Installation als mehr die Ausführung nur mit meinem Wissen erfolgen.
Welche Möglichkeiten habe ich denn dafür, ohne die Hostnamen der Rechner direkt ins Programm zu geben?
Mit so 'ner Art DRM. User muss die Software registrieren und Aufgrund der Registrationsdaten generierst du einen Key. Bei jedem Start wird dieser Key von der Software überprüft. In der SW wird dafür ein öffentlicher Schlüssel verwendet, während der Key selbst mit einem passenden privaten Schlüssel auf (d)einem Server generiert wird.
Schnapp dir ein paar System-Daten die sich nicht so schnell ändern werden wie z.B. Computer-Name, Benutzername, etc. pack’ das in ein XML, verschlüssle es mit dem Public Key des Servers (RSA) und schick es im Request mit. Dort entschlüsselst du das und prüfst ob die Werte mit denen in der DB übereinstimmen. Angelegt werden die bei der Registrierung.
Die Kannst du wieder so gestalten, dass du eine Liste von gültigen Schlüsseln hast und jedes Mal wenn sich jemand registrieren möchte bekommt er einen Schlüssel der genau einmal eingelöst werden kann.
ich bin ja ein neuling und meine programme sind jetzt nicht so die client server dinger…d.h. mir steht eine Datenbank maximal für Abfragen zur Verfügung.
Mir gefällt der Ansatz…nur hilft er mir nicht…leider
Das mit der DB kannst du dir eigentlich auch schenken und statdessen dem User einen Keyfile zusenden, der bei ihm auf der Platte gespeichert wird. Der User hätte Aufgrund mangelndem private Key keine Möglichkeit, weitere Keys mit anderen Daten zu erstellen.
Ohne DB hat es aber den Nachteil, dass der User höllisch auf diesen Keyfile achten müsste, weil er bei Verlust nicht ersetzt werden kann. Wenn also eine DB zur Verfügung steht, kann man in dieser auch verwalten, ob dem User bereits ein Keyfile gesendet wurde oder nicht (boolscher Wert). Wenn dem User dann der Keyfile abhanden gekommen ist, kann man ihm Aufgrund seiner Userdaten einen neuen erstellen und erneut zusenden.
Name, IP, MAC Adresse werden verschlüsselt in File lokal abgelegt. Mit dem PublicKey, der im Programm hardcodiert enthalten ist, wird die lokale Datei entschlüsselt. Stimmen die Werte überein, wird das Programm freigechalten.
Dann jetzt noch der letzte Vorschlag, wie es ganz ohne ständige Internetverbindung geht. Die Nutzerdaten bei Registrierung hashen (MD5 oder ähnliches), diesen Hash mit dem PrivateKey verschlüsseln und beides in ein binäres KeyFile speichern. Lokal muss dann nur noch, wie du es bereits hast, der verschlüsselte Hash mit dem Klartexthash verglichen werden. Damit man dieses jetzt nicht so leicht umgehen kann, indem man per trace den verschlüsselten Hash mit beliebigen cipers ermitteln kann, kann man sich nun noch einfallen lassen, wie man Klartexthash und verschlüsselten Hash aneinander bindet und dann landet man bei der Digitalen Signatur. Richtig fies wird es, wenn man mit dem Keyfile einige Vollversion-DLLs, -Jars oder -Classfiles mit der Bytefolge des Keyfiles XOR verknüpft. Solche Vollversion Libs dürften dann bei falschen Schlüssel kaum ladefähig, vor allem aber auch nicht dekompilierbar sein.