Ich suche für mein Sharewareprogramm einen einfachen, nicht zu komplexen Weg, einen Lizenzschlüssel zu erzeugen. (Sprache C#).
In einer älteren Version habe ich den Usernamen "verwurstelt" und daraus einen langen String erzeugt. Nun suche ich eine ähnliche Methode. Sowas wie z.B. MD5 Checksum, aber ganz so einfach sollte es dann doch nicht geknackt werden können.
Kennt ihr einfach zu implementierende Lizenzschlüssel? Wie macht man so "schöne" Key wie z.b: 123-456-789 usw. ? Gibts da irgendwelche Tutorials? Irgendiwe habe ich da überhaupt keine Phantasie für sowas.
Ich möchte aber nicht zu viel Energie da rein stecken, geknackt wird's ja sowieso. Aber ganz sooo einfach sollte es auch nicht sein. Trotzdem verwende ich meine Energie lieber auf die Entwicklung meiner Software - und nicht auf's Anti-Cracking...
Grundsätzlich musst Du unterscheiden: 1) Willst Du eine Online-Prüfung 2) Willst Du das nicht
Für den ersten Fall ist es etwas einfacher, weil Deine Serial keine Semantik beinhalten muss, d.h. die Nummer an sich enthält keine Informationen zu den Features, die sie freischaltet. Diese Informationen erhältst Du von (d)einem Online-Verifizierungsdienst als Antwort auf eine Anfrage mit der Nummer. Nachteile: - HTTP Snipper + 1 volle Serial + Proxy -> gehackt
Im zweiten Fall musst Du die Feature-Informationen in der Serial verpacken. Da kommst Du wohl nicht um nen eigenen Algorithmus drumrum, der natürlich 2mal abgebildet sein muss: Beim Generieren der Serial (auf nem Webserver wo der Shop läuft) und beim Verifizieren derselben im Client Code. Nachteile: - Komplizierter - Die Prüfungen in C# können relativ einfach ausgehebelt werden
Wenn Du natürlich nur eine Prüfung machen willst: OK oder NICHT OK, dann würde ich zu der Offline-Variante raten (Weil Du ja auch vom Hack ausgehst). Dazu checke mal die Links oben.
Und noch zum Thema 'schön machen': Das ist recht simpel zu machen, indem Du einfach einen Zeichenvorrat vorgibst (z.B.: 0-9 A-Z) und daraus erstmal eine (z.B.) 12 Ziffern lange Zeichenfolge erstellst. Platzhalter würde ich nur im UI einfügen (bzw. wieder entfernen).
Ansonsten könnte mit Reflector (+ Reflexil) Deine Anwendung innerhalb kürzester Zeit gecrackt werden.
Ich würde auch empfehlen, die Shareware-Version wirklich zu "kastrieren", so dass der Anwender, wenn ihm das Programm gefällt, eine Vollversion separat erwerben muss.
LG, Michael
PS: Wir haben damals die Lizenzschlüsselabfrage für unsere Warenwirtschaft u.a. auch in das Setup implementiert. Hierfür haben wir den Nullsoft Installer verwendet, der reinen Binärcode erzeugt und sehr leicht anprogrammierbar ist. Das ist zwar mit OllyDbg & Co auch zu knacken, aber wenn Du z.B. die Lizenztexte als Bilder einbettest, nimmst Du zumindestens den Hobby-Crackern den Spaß an der Sache.
Ich habe füe eine Server-Anwendung (IP-Port-Server) eine Online-Aktivierung gemacht.
Das Prinzip war recht einfach: Der Kunde hat in einer Config-Datei seine Seriennummer eingetragen. Beim Programmstart wurde Seriennummer, IP, Port, Version und ein Zufallswert zum "Aktivierungsserver" übertragen.
Der Aktivierungsserver hat geprüft, ob diese Seriennummer an vllt. einer alten IP/Port aktiv genutzt wird und wenn die Lizenz sowie auch Zeitlimitierung es zugelassen hat, wurde mit den übermittelten Daten ein MD5-Hash mit einem Versionsabhängigen Wert gebildet und zurück gesendet.
Entsprechend des Hashes ist die Software gestartet bzw. hat einen Fehler zurückgeworfen: SN auf einem anderen IP/Port aktiv, Lizenz abgelaufen, etc. pp.
Ein recht einfaches Prinzip, aber zumind. recht sicher. Wer Schwachstellen findet, darf mich gerne aufklären und Verbesserungsvorschlage machen. ;-) Der Nachteil ist natürlich, dass Internet und der Aktivierungsserver verfügbar sein muss. Wobei für den Aktivierungsserver kann man Ausweichmöglichkeiten schaffen. Eine Firewall von externen Anfragen würde zwar verhindern, dass ich prüfen kann, ob die Software bei Dritten läuft, jedoch benötigt das Programm eine offene Verbindung - also das Programm wäre damit nutzlos.
Nicht exakt das was Du suchst, aber vllt. eine Idee oder Anreiz.
Hallo, ein schönes Projekt, das leider eingestellt wurde, ist Open License. Ist aber auf jeden Fall einen Blick wert. Dann habe ich noch den Quellcode eines "Enterprise Licensing Frameworks" von einem Programmierer namens vbjay. Allerdings kann ich dazu keine Internetseite mehr finden. Falls du Interesse hast, kann ich dir aber den Quellcode per Mail schicken.