Entwickler-Ecke
Off Topic - Wie anzahl der lizenzen überprüfen?
Aya - Mo 19.05.08 23:43
Titel: Wie anzahl der lizenzen überprüfen?
Hi,
ich will mein programm gern verkaufen und habe dafür auch license keys erstellt..
Aber, sagen wir ein kunde kauft jetzt 5 lizenzen, dann bekommt er ja einen key den er 5x verwenden darf...
Wie aber kann ich überprüfen das er ihn nicht einfach 10x verwendet??
Dabei will ich möglichst simpel bleiben, also es muß kein perfekter schutz sein, aber es sollte das einfache mehrmals verwenden unterbinden...
Meine spontane idee wäre ein broadcast beim programm start ins netzwerk zu schicken und zu prüfen wieviele andere rechner die lizenz benutzen..
hat noch wer ne andere idee??
Aya~
AXMD - Di 20.05.08 00:09
Titel: Re: Wie anzahl der lizenzen überprüfen?
Aya hat folgendes geschrieben: |
| Meine spontane idee wäre ein broadcast beim programm start ins netzwerk zu schicken und zu prüfen wieviele andere rechner die lizenz benutzen.. |
Also das lässt sich sehr einfach mit einer Firewall unterbinden. Wenn du schon etwas mit Netzwerk machen möchtest warum keine Aktivierung (so ähnlich wie XP)? Damit könntest du relativ leicht überprüfen, wie oft ein Key verwendet wurde.
Bevor entsprechende Posts kommen: Es geht in diesem Topic darum, wie die Anzahl der Lizenzen überprüft werden kann und nicht über Sinn oder Unsinn von dem Verfahren im Allgemeinen oder Aktivierungen im Speziellen. Wollte ich nur gesagt haben.
AXMD
Aya - Di 20.05.08 00:17
Hi,
die geschichte mit aktivieren gefällt mir nicht so gut, weil das zum einen internet vorraussetzt und zum anderen auch recht umständlich ist..
Die sache ist halt, ich will einen gewissen schutz, aber ohne es dem benutzer zu stark zu erschweren... es soll halt so sein das die 0815 user nicht einfach unendlich viele lizenzen benutzen können, jemand der ahnung hat bekommt das so oder so irgendwie dann umgangen..
Aya~
Narses - Di 20.05.08 00:17
Titel: Re: Wie anzahl der lizenzen überprüfen?
Moin!
Aya hat folgendes geschrieben: |
Aber, sagen wir ein kunde kauft jetzt 5 lizenzen,
[...]
Dabei will ich möglichst simpel bleiben, |
Gib ihm halt 5 (verschiedene) Keys... :nixweiss:
cu
Narses
Aya - Di 20.05.08 00:28
Titel: Re: Wie anzahl der lizenzen überprüfen?
Narses hat folgendes geschrieben: |
Moin!
Aya hat folgendes geschrieben: | Aber, sagen wir ein kunde kauft jetzt 5 lizenzen,
[...]
Dabei will ich möglichst simpel bleiben, | Gib ihm halt 5 (verschiedene) Keys... :nixweiss:
cu
Narses |
Und wie verhinder ich das er da einfach einen der 5 keys 10x verwendet?
Narses - Di 20.05.08 00:29
Titel: Re: Wie anzahl der lizenzen überprüfen?
Moin!
Aya hat folgendes geschrieben: |
| Und wie verhinder ich das er da einfach einen der 5 keys 10x verwendet? |
Bilde eine System-ID (aus Product-Code und Systempartition-ID oder sowas) und mach daraus deinen Key. :idea:
cu
Narses
Dunkel - Di 20.05.08 02:05
Titel: Re: Wie anzahl der lizenzen überprüfen?
Narses hat folgendes geschrieben: |
| Bilde eine System-ID (aus Product-Code und Systempartition-ID oder sowas) und mach daraus deinen Key. :idea: |
..was dazu führt, dass pro zu benutzendem System ein unique-Build kompiliert werden muss, welches diese System-ID ausliest und mit der hard-coded-ID vergleicht, oder habe ich das jetzt falsch verstanden? Das wäre ein enormer Aufwand bei mehr als n registrierten Systemen! (wobei n IMHO schon bei 2 anfängt, ein Build des Codes sollte eigentlich reichen)
(relativ) Zuverlässig kriegst Du das wohl nur mit einem Registrierungsserver im Internetz hin - beim Programmstart wird überprüft, ob die (Sub-)Lizenz schon benutzt/registriert wird/ist, wenn ja: Programmstart mit einem Hinweis verhindern.
Oder Du vertraust auf das Gute und Ehrliche im Menschen (ja, in der heutigen Zeit ist das wahrlich nicht so leicht... :( )
Tilo - Di 20.05.08 06:33
Titel: Re: Wie anzahl der lizenzen überprüfen?
Dunkel hat folgendes geschrieben: |
Narses hat folgendes geschrieben: | | Bilde eine System-ID (aus Product-Code und Systempartition-ID oder sowas) und mach daraus deinen Key. :idea: |
..was dazu führt, dass pro zu benutzendem System ein unique-Build kompiliert werden muss, welches diese System-ID ausliest und mit der hard-coded-ID vergleicht, oder habe ich das jetzt falsch verstanden? Das wäre ein enormer Aufwand bei mehr als n registrierten Systemen! (wobei n IMHO schon bei 2 anfängt, ein Build des Codes sollte eigentlich reichen)
|
Wieso? Das Programm kann ja auch unregistriert gestartet werden. dabei ruft es bestimmte Systemeigenschaften ab(wielleicht HardwareCodes ->CPU Kennung?) Daraus wird eine Zeichenkette generiert. Diese kann über verschiedene Wege dem Hersteller(hier Aya) übermittelt werden. Dieser generit daraus eine 2. Zeichenkette -> den key. Kunde gibt Key ein. Progr vergleicht/verrechnet Key mit der ersten Zeichenkette. stimmt das Ergebnis -> Freigabe.
mkinzler - Di 20.05.08 07:45
Oder man setzt eine Lizenzserver auf, mit dem die Clients Verbindung aufnehmen.
Narses - Di 20.05.08 09:38
Moin!
mkinzler hat folgendes geschrieben: |
| Oder man setzt eine Lizenzserver auf, mit dem die Clients Verbindung aufnehmen. |
Aya hat folgendes geschrieben: |
| die geschichte mit aktivieren gefällt mir nicht so gut, weil das zum einen internet vorraussetzt |
Hab ich jetzt was falsch verstanden? :nixweiss:
cu
Narses
Klabautermann - Di 20.05.08 09:40
Hallo Aya,
um was für ein Programm handelt es sich denn? Ist es z.B. eine Datenbankgestütze Anwendung bei der alle Clients immer auf die selbe Datenbank zugreifen, dann kannst du veranlassen, dass sich diese sich beim Start in eine "momentan aktive Programme" Tabelle eintragen und bei beenden wieder löschen. Du müsstest dir dann noch ein paar Sonderregeln einfallen lassen, die greifen wenn ein Client z.B. abstürzt. Das ist aber Machbar.
Auch bei jeder anderen Client Server Architektur lässt sich der Server zum Lizenzen Verwalten missbrauchen.
Problematisch ist es wenn die einzelnen Clients nichts voneinander wissen müssen und sich auch nirgends Melden müssen (und wenn man bedenkt in welchen Bereich du in der Regel arbeitest ist dies am Wahrscheinlichsten). In dem Fall Könntest du natürlich einen extra zu diesem Zweck geschriebenen Lizensserver (im LAN) mit ausliefern, nur wenn dieser nichts anderes macht als Lizenzen verwalten, dann hindern es niemanden dran mehrere davon im Netz zu betreiben :(.
In diesem Fall sehe ich keine Möglichkeit dich vor dem Lizenzmissbrauch zu schützen. Zumindest keine die den Kunden nicht auf unverschämte Art gängelt (und dennoch leicht weg zu Cracken währe). Da kannst du dann nur weiche/psychologische Masnahmen ergreifen und hoffen. Wenn du z.B. den Namen des Kunden in den Schlüssel eincodierst (oder es so machst das er nur in Verbindung mit dem echten Namen bei der Freischaltung funktioniert) dann mag das den einen oder anderen Kunden daran hindern, das Programm/den Key auf den "freien Markt" zu schmeißen. Es wird ihn aber kaum daran hindern seine 5 Lizenzen im eigenen Netzwerk 20x ein zu setzen.
// EDIT:
Narses hat folgendes geschrieben: |
mkinzler hat folgendes geschrieben: | | Oder man setzt eine Lizenzserver auf, mit dem die Clients Verbindung aufnehmen. |
Aya hat folgendes geschrieben: | | die geschichte mit aktivieren gefällt mir nicht so gut, weil das zum einen internet vorraussetzt | Hab ich jetzt was falsch verstanden? :nixweiss:
|
Ich nehme an es ging hier um einem im Lokalen Netzwerk betriebenen Lizenzserver.
Gruß
Klabautermann
mkinzler - Di 20.05.08 09:58
| Zitat: |
| Ich nehme an es ging hier um einem im Lokalen Netzwerk betriebenen Lizenzserver. |
Ja.
So ist auch concurrent Nutzung möglich und die Anzahl der Lizenzen ist anpassbar.
Klabautermann - Di 20.05.08 10:03
mkinzler hat folgendes geschrieben: |
| Zitat: | | Ich nehme an es ging hier um einem im Lokalen Netzwerk betriebenen Lizenzserver. | Ja.
So ist auch concurrent Nutzung möglich und die Anzahl der Lizenzen ist anpassbar. |
Zumindest wenn man nicht mehrer Lizenzserver im Netz an den Start bringt und jeweils nur so viele Clients wie Erlaubt an den jeweiligen LZ anbindet.
Gruß
Klabautermann
mkinzler - Di 20.05.08 10:07
Deshalb werden Lizenzserver in der Praxis mit einer Hardwarekomponente verknüpft (z.B. Systemeigenschaften oder Dongle)
elundril - Di 20.05.08 13:54
einfach den windowskeyhernehmen mit einem hash öfters verhashen und dann überprüfen ob es der selbe ist.
so würds ich machen dadurch bleibt dem Otto-normalverbraucher nix übrig als die lizenz zu kaufen, obwohl sich nach einiger zeit ein key-generator im netz auftauchen wird.
AXMD - Di 20.05.08 13:59
elundril hat folgendes geschrieben: |
| einfach den windowskeyhernehmen mit einem hash öfters verhashen und dann überprüfen ob es der selbe ist. |
Das macht es aber Unternehmen mit Windows-Volumenlizenzen sehr einfach...
AXMD
elundril - Di 20.05.08 14:03
war auch nur so pi mal daumen mal x (wobei x die schuhgröße das lesers ist). Also einfach nur ein grobes beispiel. das kann man dann natürlich noch verfeinern z.b: ne hardwareid dazu.
UGrohne - Di 20.05.08 14:30
AXMD hat folgendes geschrieben: |
elundril hat folgendes geschrieben: | | einfach den windowskeyhernehmen mit einem hash öfters verhashen und dann überprüfen ob es der selbe ist. |
Das macht es aber Unternehmen mit Windows-Volumenlizenzen sehr einfach...
AXMD |
Daher würde ich für solche Sachen beispielsweise die SID empfehlen. Solange nicht gnadenlos HDD-Images verwendet werden (was in Unternehmen sowieso problematisch ist aufgrund gleicher SID) ist diese für jede Windows-Installation unterschiedlich. Bleibt natürlich die Frage, wie die Software dann aktiviert wird. Hierfür würde ein Zugang zum Internet notwendig werden. In einem Formular der Anwendung wird dann beispielsweise die Kundennummer und die Seriennummer eingegeben werden und an Deinen Server geschickt werden. Dort speicherst Du diese dann und wenn die neu installieren, müssen die halt eine alte SID löschen lassen.
Aber alles, was "sicher" ist, ist auch umständlich, da wirste nicht drumherum kommen ;).
ub60 - Di 20.05.08 15:44
Eine andere Idee wäre auch die Verwendung eines USB-Sticks als Dongle. Die Sticks gibt es mittlerweile sehr preiswert und hier könnte im einfachsten Fall die ID des Sticks ausgelesen werden, eventuell könnte man auch mit einem Sektoreditor den Stick etwas "bearbeiten".
ub60
delphi10 - Di 20.05.08 16:48
Hallo
Alles in einem Netz/Betrieb/Kunde
1. Schritt: Programm legt, wenn noch nicht vorhanden, beim ersten Start eine leere Datei (versteckt und/oder verschlüsselt) an auf einem zugänglichen Fileserver
2. Schritt: Programm vom PC 1 schreibt seine SID in diese Datei wenn < 5 vorhanden sind.
3. Schritt: Programm vom PC 2 schreibt seine SID in diese Datei wenn < 5 vorhanden sind.
4. Startet der nte PC liest das Programm die vorhandenen SID's aus der Datei und vergleicht mit seiner eigenen. Findet er eine gleiche = OK start (Ist einer der ersten fünf)-ansonsten Meldung und hinlegen. Alle PC's führen diese Schritte aus.
Mehr als 5 Key's bzw. PC können nicht mit dem Programm starten. Die erlaubte Anzahl Rechner muß im Programm hardcoded sein damit sie nicht beliebig veränderbar ist.
Wichtig wäre nur, daß die ersten fünf PC die "richtigen" sind. Aber bei fünf kann man das noch in den Griff kriegen. Die datei ist manipulierbar, aber erstens weiß keiner wo sie ist und zweitens soll es ja wohl nur OttoNormalUser abhalten, Lizenzen zu mißbrauchen.
Wurde so realisiert und läuft und läuft und läuft - kein Mißbrauch bekannt. Nachteil: Lizenz ist an die Maschine gebunden, nicht an den User.
Gruß Delphi10
mkinzler - Di 20.05.08 17:00
Und wenn ein Programm abstürzt? Datei korrupt wird? Anzahl Lizenzen sich ändert?
delphi10 - Di 20.05.08 17:38
Ja gut, dafür hat mein Programm eine Admin-Function für den lokalen Admin. So ganz unbetreut ist immer ein Risiko, man sollte schon eine vertrauenswürdige Person beim Kunden haben. Wenn Lizenzen nachgekauft werden sollten, baut man halt so eine Art Plugin-Funktionalität ein. Habe ich jetzt nicht realisiert weil nicht erforderlich. Kann aber kaum schwer sein.
Aber für eine andere Aufgabe habe ich eine "Lizensierung" so aufgebaut:
Es wird eine verschlüsselte Datei mit allen erlaubten User- oder Rechnernamen mitgeliefert und installiert. Die Namen müssen vorher beim Kunden erhoben werden.
Für alle Anmeldungen, auch für die in der datei enthaltenen Namen, muß eine Freischaltung erfolgen. Bei mir läuft das gleiche Programm in einer simulierten Kundenumgebung (sollte man immer haben sic!)-geht notfalls aber auch ohne. Eingabe: Username und ein beliebiger String möglichst lang. Daraus wird ein Wert(Zahl) generiert und zusammen mit dem String per Mail an den user geschickt.
User gibt Wert und String ein, Berechnung wird beim User wiederholt, bei OK verschlüsselten Dateiinhalt einlesen, intern Werte entschlüsseln, Usernamen o. Rechnernamen eintragen, Inhalte verschlüsseln, schreiben und schließen. So gibt es zu keinem Zeitpunkt eine offene unverschlüsselte Datei. Damit das nicht bei jedem Programmstart abläuft, trägt das Programm die ermittelten Werte des jeweiligen Users schön verklausuliert in die Registry ein - bei etwas Geschick unauffindbar. Damit hat man es absolut in der hand, die Anzahl der möglichen User zu bestimmen.
Gruß Delphi10
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!