Laden...

Licenz key auf einen Rechner festlegen...?

Erstellt von Barbara vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.497 Views
B
Barbara Themenstarter:in
116 Beiträge seit 2006
vor 16 Jahren
Licenz key auf einen Rechner festlegen...?

Hallöchen,

ich möchte bei meiner C# application einen Lizenz Code verwenden, sprich sie kostenpflichtig machen.

Ich hab eine domain, auf der ich eine mysql Datenbank habe.
Nun überprüft mein Programm den Key mit der Datenbank und gibt bei übereinstimmung das Programm frei.

Das Problem was ich jetzt habe ist folgendes, ich möchte nicht, dass ein Key weitergegeben wird (unter Leuten und so).

Jetzt hab ich mir folgendes überlegt:
Ich weise dem Key in der Datenbank die MAC Adresse vom Computer der beim ersten Start benutz wurde und überprüfe das bei jedem Start...(ohne großen Aufwand zu Lösen).

Dagegen spricht:
Viel Administrationsaufwand wenn Nutzer Windows neu installieren etc... ausserdem habe ich im Internet diverse MAC Adress changer gefunden.... 😠

Zweites:
Am liebsten wäre mir "nur" ein IP lock, d.h. dass nur Nutzer mit der selben Internet IP das Programm gleichzetig Nutzen können.
Man könnte die IP beim Programmstart dem Key zuweisen und beim beenden wieder austragen, so dass wenn eine Ip einem key schon zugewiesen ist das Programm nicht startet.

Dagegen spricht:
Wird das Programm nicht sachgemäß beendet oder der PC schmiert ab, wird die IP nicht aus der Datenbank ausgetragen, der Key bleibt sozusagen "gelockt".

Ich hoffe man versteh was ich meine, vielleicht hat jemand noch eine andere Idee... das mit der MAC adresse hat mir eigentich am meisten zugesagt, bis ich von den Adress changern gelesen habe.
Alles in allem sollte es eine Methode sein, die wenig bis keine "manuelle" Administration benötigt und trotzdem das Key sharing unterbindet.

Anmerkung: Ich bin mir bewusst, dass diese Methode bei einigen nicht beliebt ist, da der Anwenderkreis dieses Programs sich aber auf (dauer) Internetnutzer beschränkt und auch das Internet benötigt, möchte ich eine Internetüberprüfung einbauen.
Ausserdem werden die Keys nur eine begrenzte Gültigkeit haben von ca. einem Jahr (ab Kauf).

MfG
Barbara

R
494 Beiträge seit 2006
vor 16 Jahren

schlechter Versuch, besser als sämtliche Softwarehäuser zu sein die (fast) keinen Schutz hinbekommen.

B
Barbara Themenstarter:in
116 Beiträge seit 2006
vor 16 Jahren

Vielen Dank für den geistreichen Beitrag...

ich denke durch eine dauerhafte Verbindung zum Internet sollte doch ein einigermaßen sicherer Key check möglich sein. (wenn die Firewall die Verbindung blockiert schließt sich das Programm).

Ich verlange ja gar nicht, dass das Programm nicht crackbar ist, nur der key sollte auf einen PC bzw. eine IP gelockt sein...

2.921 Beiträge seit 2005
vor 16 Jahren

Nicht die Macadresse zuzuweisen, sondern diese über einen Algorithmus zu verschlüsseln ist noch viel besser.

Gleiche Macadresse verschlüsseln, gleicher Schlüssel.
Andere Macadress anderer Schlüssel.

Das ist schon mal eine Grundlage.

Gegen das Problem mit dem gelockten Key hilft eine Hashcode-berechnung oder eine eindeutige ID, z.B. user+machinename+mac.

Wenn Du beabsichtigst floating Lizenzen zu vergeben reicht auch machinename+mac.

Ausserdem kann man einen Timestamp vom Client aus auf dem Lizenz-Server setzen.
Wenn der Client diesen dann nicht refreshed wird er automatisch nach Zeitablauf (z.B. 5 Minuten) entfernt und damit die gelockte Lizenz wieder freigegeben.

Interessant ist in den Key evtl. die Anzahl der Lizenzen als Bitverschlüsselung einzurechnen. Wenn Du dann noch einen Gegencheck benötigst, damit ein User nicht so einfach die Serial umändern kann, berechne noch zusätzlich eine Checksumme.

Also Kurzablauf:

  1. Client (zu registrierender Computer) meldet sich mit eindeutigem HashCode an (s.
    o.)
  2. Abfragen ob Lizenz gültig, Lizenzserver gibt antwort, bzw. Client frägt nach und erhält Antwort.
  3. Client setzt damit Timestamp auf Lizenzserver in Gang (z.B. 5 Min).
  4. Wenn nach 5 Min. nicht mehr aktualisiert wird - >Timer also abgelaufen ist -> Lizenz freigeben
    Nachrichtenlänge überprüfen

Achte auf jeden Fall darauf, dass die Prüfung perfekt funktioniert.

Wenn Du nicht weisst, wie Du den Key verschlüsseln sollst, verschlüssel ihn z.B. mit einem assymetrischen Code mit sich selbst. Dann hat jeder User automatisch einen anderen Verschlüsselungscode. Das ist zumindest einfach. Ob das die sicherste Methode ist, muss ich ja hier jetzt nicht diskutieren...

So würde ich das machen.

Um das Keysharing zu unterbinden: Du könntest Dir auch einen Code berechnen, bei dem Du mehrere Computer-Komponenten heranziehst zur Berechnung.

z.B. Seriennummer des Prozessors, Macadresse usw.

Dann hängt natürlich das ganze noch mehr von der Hardware ab.

Eine Internet-Verbindung würde ich nicht voraussetzen. Ärgerlich wenn die I-Net-Leitung warum auch immer gerade nicht funktioniert.

@regen: Manchmal braucht man diese Dinge eben, um zumindest einige Leute auszuschließen und die anderen zu entmutigen.

Klar ist natürlich auch, dass alle diese Schutzmechanismen einen gemeinsamen Schwachpunkt haben:

irgendwo steht immer im Assembler-Code ein Branch. Also eine Ja-Nein-Entscheidung . Wenn man diese umkehren oder aushebeln kann, hat man natürlich den Schutz geknackt.

Aber was machst Du wenn Du z.B. weisst, du hast es in den ersten 20 Versuchen nicht geschafft? Machst Du weiter bis 100, weil Du weisst dann hast Du's oder sagst Du vorher ich hab keinen Bock mehr?

Dazu sind die ganzen Dinger dann eigentlich nur noch gut.

Andererseits ist das natürlich manchmal auch eine Farce. Wenn der Schutz nicht richtig funktioniert ärgert man sich natürlich zurecht.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Barbara,

ich denke durch eine dauerhafte Verbindung zum Internet sollte doch ein einigermaßen sicherer Key check möglich sein.

Es geht ja nicht nur um die dauerhafte Verbindung zum Internet, sondern auch um die dauerhafte Verfügbarkeit des Servers. Freu dich auf die Schadensersatzforderungen, wenn er es mal nicht ist. Ich würde als Verantwortlicher in einer Firma keine Software kaufen, die solche Prüfungen vornimmt, wie du dir es vorstellst. Insbesondere, wenn die Software von einer kleinen Firma mit hohem Insolvenz- oder Geschäftsaufgaberisiko. Und ich stehe danach mit einer Software da, die ich nicht benutzen kann, obwohl sie bezahlt ist. Lass die Finger davon.

Siehe auch
Aktivierungsmanager selbst programmieren
Aktivierungsschlüssel oder nicht?
Programm vor Weitergabe schützen

herbivore

B
Barbara Themenstarter:in
116 Beiträge seit 2006
vor 16 Jahren

Ja ich verstehe was ihr meint, Verfügbarkeit vom Server ist schon so eine Sache...
Da das Programm sowieso Internetabhängig ist, also ohne Internet nutzlos ist, wird auch jemand der grad kein Internet hat mit dem Programm nichts anfangen können.

Ich denke mit Schadensersatztanforderungen wird es auch kein "großes" Problem geben bei einem recht Schmerzfreien Preis von ~10€ .

Eventuell kann man ja auch in die AGB schreiben, dass nur eine 98% verfügbarkeit gewährt werden kann auf Grund des Servers...

Ich denke ich werde eine Kombination aus CPU ID und MAC ID nehmen.
Klar, dass man das Programm trotzdem über den Assembler Code "knacken" kann, um das geht es mir auch nicht.

Um das mit dem Timestamp zu realisieren, bräuchte ich da nicht Cronjobs auf meinen Server, die die Lizenz dann wieder freigeben?

1.274 Beiträge seit 2005
vor 16 Jahren

Cronjobs brauchst du da nicht.
Du speicherst in eine DB einfach das letzte Login Datum, und wenn lastlogin +10 minuten ≤ jetzt dann ist die Lizenz frei.

"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein