| 

.NET C# Java Javascript Exception

1
Also, ich bin mittlerweile leicht fortgeschritten was meine Programmierkenntnisse angeht.
Was ich allerdings noch immer nicht gerafft habe:
Wie kann ich aus meiner Software z. B. eine Demo erstellen? Oder das diese nur 30 Tage läuft und dann einen bestimmten Lizenzierungsschlüssel braucht. Oder wenn möglich sogar das nur bestimmte Funktionen gegeben sind.
08.09.2009
spicejam 801 1 6
jor 781 2 7
6 Antworten
2
Im Grunde gibt es dafür keine Vorschrift - jeder entscheidet selbst, wo und wie er sein Programm einschränkt. Natürlich muß dann an einigen Stellen im Quellcode eine Abfrage stattfinden, ob der Nutzer dies darf oder halt nicht.

In der Praxis hat sich derzeit eine Möglichkeit differenziert "der Produktkey"!
Diesen muß der Kunde eingeben und erhält dann je nach Art des Keys bestimmte Funktionen im Programm freigeschaltet. Das Verfahren basiert auf elliptischen Kurven d.h. deinem Programm gibst du ein PublicAesKey mit, welcher dann zur Entschlüsselung des Produktkeys und dessen Features verwendet wird.

Falls du mal etwas damit experimentieren magst findest du einen Beitrag unter
http://www.codeproject.com

Außerdem kann man auch die Laufzeit beschränken. Im Grunde wird dabei nur irgendwo das Installationsdatum hinterlegt (z.B. in der Registry) und dann beim Programmstart eingelesen und geprüft ;-)

Alternativ dazu, wenn du dir nicht soviel Aufwand machen möchtest, entwickelst du parallel zu deiner Version halt noch eine abgespeckte Variante, die du dann als Demo veröffentlichst.

Grüßle
08.09.2009
Scout 1,4k 1 8
Scout 1,4k 1 8
2
Das ist garnicht mal so super schnell und einfach zu realisieren, wenn du nicht auf kommerzielle Lizensierungssoftware zurückgreifen willst.

Primär brauchst du also für jede Applikation ersteinmal einen Schlüssel (für Demoversionen nimmst du einen Standard-Schlüssel). Nun prüfst du beim Laden des Programms ab, ob der Standard-Schlüssel oder ein benutzerdefinierter Schlüssel vorhanden ist (diese sollten auf Grund der Reproduzierbarkeit natürlich verschlüsselt sein). Ist nun nur der Standard-Schlüssel eingetragen, so deaktivierst du einfach einige deiner Buttons / Funktionen etc.

Hier kannst du auch eine Laufzeit des Programms vorgeben, indem du ihn einfach beim ersten Start (oder bei der Installation) das aktuelle Datum holen lässt und dieses dann verschlüsselt in der Registery hinterlegst. Bei jedem weiteren Start überprüfst du nun nur noch ob: Datum in der Registery + 30 Tage >= heutige Datum ist.

Ist ein individueller Schlüssel vorhanden, kannst du nun durch den verwendeten Verschlüsselungsalgorythmus mit einem public key prüfen, ob dieser korrekt ist. Mit dem private key erzeugst du praktisch die Schlüssel (diesen Key hast NUR du, den public hingegen programmierst du in dein Tool / Programm mit ein).

Für die Verschlüsselung empfehle ich RSACryptoServiceProvider!


Damit kannst du nun einwandfrei nachweisen, ob ein Programm einen gültigen Key benutzt. Das stellt dich nun aber vor ein neues Problem: die Weitergabe des Schlüssels! Aber das ist eine andere Baustelle. Versuche am Besten zuerst einmal die Lizensierung zu implementieren, danach solltest du dich über eine Online Authentifizierung kümmern, die einen kumulierten Wert aus MAC Adresse / CPU / HDD ID errechnen. Aber wie gesagt: eins nach dem Anderen!
08.09.2009
Dustin Klein 2,9k 1 9
2
@gfoidl:

Das Speichern von MAC Adressen realisieren auch andere große Projekte, wie die ESL etc... Ich speicher diese ja ebenfalls verschlüsselt ab, so, dass ich auch nicht mehr auf die Ursprungs-Adresse schließen kann. Es geht ja primär nur darum, dass pro MAC Adresse nur ein Eintrag erlaubt ist.

Mit den wirklichen Adressen an sich könnte ich sowieso nichts anfangen, ist lediglich eine schmutzige Art und Weise das Programm vor Vervielfältigung zu schützen.
08.09.2009
Dustin Klein 2,9k 1 9
Danke für die Aufklärung!
gfoidl 08.09.2009
1
Ich habe es bisher bei kleinen Projekten so gemacht, dass ich für jeden Kunden (das Programm war nur als Demo frei downloadbar), der ernsthaft Interesse an dem Programm hatte einen Key fest implementiert habe (ebenfalls verschlüsselt).

Ebenfalls habe ich eine Anzahl an erlaubten Kopien hineinprogrammiert, so dass das Programm maximal an x Plätzen einsetzbar ist.

Diese Parameter lasse ich dann auch bei einem Start an einen Webserver übertragen, welcher mir einen Ordner anlegt (Name = Product Key) und dort für jede MAC-Adresse einen Datei ablegt, in der ich alle nötigen Informationen zum jeweiligen Programm speicher.


Dies ist extrem unsauber, aber es garantiert eine schnelle und einfache Umsetzung. Zudem habe ich auf dem Webspace sofortigen Überblick über alle vergebenen Seriennummern und die dazugehörigen Nutzer!
08.09.2009
Dustin Klein 2,9k 1 9
Ist das Speichern der MAC-Adresses datenschutzrechtlich haltbar? Ich weiß es nicht.
gfoidl 08.09.2009
0
Beitrag von Scout hat mir Mut gemacht, Beitrag von Dustin stellt mir mal wieder die Realität vor Augen x-). Das stimmt der erste Schritt ist eigentlich realisierbar aber über die "Schlüsselverteilung" hab ich mir noch gar keine Gedanken gemacht.
08.09.2009
spicejam 801 1 6
0
Hallo,
ich suche auch schon lange nach einer "freien" und einfachen Lösung. Einen guten Ansatz gibt es hier: http://www.spextreme.com/openlicense/openlicense.aspx.

Liebe Grüße, Tom
_____________________________________________________
Toms IT Blog
IT-News mit Schwerpunkt Open Source, Freeware und Portable Apps
http://tomsitblog.wordpress.com/
04.02.2011
Metal-Frog 731 7

Stelle deine .net-Frage jetzt!