Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Di 20.05.08 00:09 
user profile iconAya 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 20.05.08 00:17 
Moin!

user profile iconAya 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

_________________
There are 10 types of people - those who understand binary and those who don´t.
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Di 20.05.08 00:28 
user profile iconNarses hat folgendes geschrieben:
Moin!

user profile iconAya 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?

_________________
Aya
I aim for my endless dreams and I know they will come true!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 20.05.08 00:29 
Moin!

user profile iconAya 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

_________________
There are 10 types of people - those who understand binary and those who don´t.
Dunkel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 682

Mac OS X Snow Leopard
Xcode 3.1
BeitragVerfasst: Di 20.05.08 02:05 
user profile iconNarses 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... :( )

_________________
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
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Di 20.05.08 06:33 
user profile iconDunkel hat folgendes geschrieben:
user profile iconNarses 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 20.05.08 07:45 
Oder man setzt eine Lizenzserver auf, mit dem die Clients Verbindung aufnehmen.

_________________
Markus Kinzler.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 20.05.08 09:38 
Moin!

user profile iconmkinzler hat folgendes geschrieben:
Oder man setzt eine Lizenzserver auf, mit dem die Clients Verbindung aufnehmen.
user profile iconAya 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

_________________
There are 10 types of people - those who understand binary and those who don´t.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: 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:
user profile iconNarses hat folgendes geschrieben:
user profile iconmkinzler hat folgendes geschrieben:
Oder man setzt eine Lizenzserver auf, mit dem die Clients Verbindung aufnehmen.
user profile iconAya 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Di 20.05.08 10:03 
user profile iconmkinzler 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Di 20.05.08 13:59 
user profile iconelundril 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 20.05.08 14:30 
user profile iconAXMD hat folgendes geschrieben:
user profile iconelundril 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 765
Erhaltene Danke: 130



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: 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