# Wie eine Seriennummer erzeugen und auswerten?



## Angel4585 (21. Jan 2009)

Hallo,

ich möchte meine Software mit einer Seriennummer freischalten lassen.
Wie kann ich nun eine Seriennummer generieren und diese in der Software auswerten?

Sprich: Aus der Seriennummer soll das Programm erkennen welche Version und welche Lizenzform vorliegt.

Ich denke ich muss im Programm Konstanten definieren die die Informationen beinhalten und bei der Eingabe der Seriennummer diese entschlüsseln und die Konstanten mit den Werten in der Seriennummer vergleichen.

Aber wie generiere ich eine solche Seriennummer?
Welcher Alghorithmus ist da geeignet?

Wie geht ihr hierbei vor?


----------



## tuxedo (21. Jan 2009)

Seriennummern mit konstanten vergleichen ist keine so gute idee... Stichwort: Decompiling

Würde maximal den Algorithmus im Source belassen. 
Wenn es sich um eine Anwendung handelt die online agieren muss, am besten einen Lizenzserver einsetzen der die Seriennummer checkt.

Jedes bisschen Info das beim Client verbleibt ist potentiell unsicher.

Einen Algorithmus kann ich dir nicht nennen. Hab sowas noch nicht realisiert. Hab mir bisher nur mal gedanken darüber gemacht bzw. hier im Forum diskutiert.

- Alex


----------



## eliot (22. Jan 2009)

Hallo,

ich habe mich in meiner Diplomarbeit mit diesem Thema beschäftigt.

Folgende Lösung habe ich hierzu entwickelt (Kurzfassung):

1. Lizenz Server

Generierung von Lizenzschlüsseln (Bsp 25 Lange Strings aus einem gesetzten Alphabet) die mit einer
Lizenz plus sonstiger Merkmale verbunden sind. Diese Schlüssel werden in der Datenbank des Servers
mit den Eigeschaften abgegelgt.

2. Produkt Ausliefern mit 25 Stelligen Schlüssel

3. Freischaltung

Applikation fragt nach der Lizenz beim Lizenzserver.
Der Lizeznzserver sendet Antowrot in Form eines Lizenzschlüssels
der die entsprechenden Eigenschaften enthält. Der Schlüssel ist
mit dem RSa Verfahren verschlüsselt, so dass ein direktes Lesen
des Schlüssel mit Fremdsoftware nicht möglich ist.

Hat ca. 6 Monate gedauert (8 Std täglich) für die Entwicklung des Lizenzeservers, Lizenztools
zur Verwaltung und des Lizenzclients.

Viel Erfolg.

regards
eliot


----------



## Gast (4. Feb 2009)

eliot hat gesagt.:
			
		

> Hallo,
> 
> ich habe mich in meiner Diplomarbeit mit diesem Thema beschäftigt.
> 
> ...






> Hallo ich habe Interesse an deiner Arbeit. Ich brauche so eine änliche Anwendung auch für mich. Kannst du mir da weiter helfen? Ich würde gerne deine Arbeit lesen, wenn es geht schreib mir bitte an aboltus_n@web.de . mfg Alex_n


----------



## Gast (5. Feb 2009)

> 6 Monate gedauert (8 Std täglich)



hört sich stark nach Hauptberuf und nicht nach Hobby an und desshalb denk ich kannst du davon ausgehen das du da nix kriegst =D


----------



## Spacerat (5. Feb 2009)

Vorschlag: RSA-Verschlüsselung einer für das Ausführen der Applikation relevanten Klasse. Die Klasse kann so nicht mehr dekompiliert werden. Erst die Eingabe der korrekten Seriennummer entschlüsselt die Klasse wieder, damit sie verwendet werden kann. Natrlich ist dazu auch ein eigener ClassLoader nötig. Das ganze ist allerdings nicht sehr einfach zu realisieren.

mfg Spacerat


----------



## didjitalist (5. Feb 2009)

Gast hat gesagt.:
			
		

> > 6 Monate gedauert (8 Std täglich)
> 
> 
> 
> hört sich stark nach Hauptberuf und nicht nach Hobby an und desshalb denk ich kannst du davon ausgehen das du da nix kriegst =D



diplomarbeiten sind öffentlich.


----------



## Saxony (5. Feb 2009)

Ausser man gibt denen einen Sperrvermerk! Dann existiert zwar trotzdem ein öffentliches Exemplar (meist in der Uni-Bibliothek) darf aber weder gelesen, noch kopiert noch ausgeliehen werden. Geht für diverse Zeiträume. Für solche Diplomarbeiten findet auch die Verteidigung unter Ausschluss der Öffentlichkeit statt und man ist mit den zwei Prüfern allein.

Meine beispielsweise, ist für 10 Jahre gesperrt. 

bye Saxony


----------



## didjitalist (5. Feb 2009)

dann ists aber nicht sehr weit her mit freiheit für forschung und bildung


----------



## Saxony (5. Feb 2009)

didjitalist hat gesagt.:
			
		

> dann ists aber nicht sehr weit her mit freiheit für forschung und bildung



Das ergibt sich halt dadurch, dass über 90% der Diplomarbeiten in der freien Wirtschaft geschrieben werden und nicht als Forschungsthema der Hochschule selbst. Das sich dann die Firmen nicht in ihre Forschungsergebnisse schauen lassen ist dann wohl klar.

Anders ist es bei Doktorarbeiten - Dissertationen müssen zwingend veröffentlicht werden, das gehört mit zum Promovierungsablauf.

bye Saxony


----------



## eliot (5. Feb 2009)

Hallo,

die Diplomarbeit bzw. Sourcecode dazu kann ich leider nicht herausgeben.
Vielleicht stelle ich einmal die allgemeinen Konzepte online wenn ich zeit habe.

Es ist auf jeden Fall eine menge Arbeit, die du dir da machen willst.
Bedenke: Egal wie viel du in die Sicherheit (Kopierschutz) deiner Software investierst,
gecrackt wird sie früher oder später dennoch, wenn sie von Interesse ist.


Einfaches Konzept für einen Schlüssel:


```
public class MyKey{

private Serial serial;
private Version version;
private Date activationDate;
private Customer holder;

public byte[] toXml();
public MyKes fromXml();

... getter/setter
}
```

Erstelle eine Schlüssel mit allen wichtigen Informationen, danach hol dir die XML Darstellung
und verschicke diese Darstellung binär verschlüsselt (RSA). Die Application kann diesen Schlüssel
entschlüsseln und weiß wie sich sich zu verhalten hat.

Den Schlüssel kannst du auch via Email verschicken,
dann benötigst du keinen Server.
Die Serial sollte ca. 25 Stellen lang sein und aus einem definierten Alphabet bestehen
(z.B A-Z + 0-9). Erstelle diese Serials zufällig. Die Wahrscheinlichkeit für das Erraten eines 25 stelligen Schlüssel aus
einem 36 Zeichen großen Alphabet geht gegen Null.

regards
eliot


----------



## Spacerat (10. Feb 2009)

Ich hab' zu meinem Beitrag oben schon etwas an anderer Stelle gepostet. Dort geht es zwar nur um "Schutz vor Decompile", aber die dort von mir vorgestellte Methode lässt sich auch auf diesen Thread anwenden.

http://www.java-forum.org/de/viewtopic.php?t=82442&start=15

mfg Spacerat


----------

