| Autor |
Beitrag |
Aya
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Mo 19.05.08 23:43
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~
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Di 20.05.08 00:09
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 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: 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~
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 20.05.08 00:17
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...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Aya 
      
Beiträge: 1964
Erhaltene Danke: 15
MacOSX 10.6.7
Xcode / C++
|
Verfasst: Di 20.05.08 00:28
_________________ Aya
I aim for my endless dreams and I know they will come true!
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 20.05.08 00:29
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.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Di 20.05.08 02:05
Narses hat folgendes geschrieben: | Bilde eine System-ID (aus Product-Code und Systempartition-ID oder sowas) und mach daraus deinen Key.  |
..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...  )
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|
Tilo
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: Di 20.05.08 06:33
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Di 20.05.08 07:45
Oder man setzt eine Lizenzserver auf, mit dem die Clients Verbindung aufnehmen.
_________________ Markus Kinzler.
|
|
Narses
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: 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?
|
Ich nehme an es ging hier um einem im Lokalen Netzwerk betriebenen Lizenzserver.
Gruß
Klabautermann
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: 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.
_________________ Markus Kinzler.
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: 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
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Di 20.05.08 10:07
Deshalb werden Lizenzserver in der Praxis mit einer Hardwarekomponente verknüpft (z.B. Systemeigenschaften oder Dongle)
_________________ Markus Kinzler.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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.
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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.
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: 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
      
Beiträge: 765
Erhaltene Danke: 130
|
Verfasst: 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
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: 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
_________________ Salus populi suprema lex esto
|
|