Programm mit Lizenz-System absichern?

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von SchorschCode.

    Programm mit Lizenz-System absichern?

    Hallo alle zusammen.

    Ich habe mir gestern Visual Studio 2013 als Testversion geladen. Ich habe mich noch nie damit befasst aber habe schon viele Tutorials gelesen da es mich sehr interessiert.

    Ich möchte ein Lizenz-System erstellen welches, nach einiger Recherche, sehr schwer wird. Trotzdem möchte ich es versuchen denn grade in der Schwirigkeit liegt für mich der Reiz und ich habe genug Zeit. Es wird sicher nichts von Heute auf Morgen ;)

    Nun zu meiner Frage. Ist mein Gedankengang so umsetzbar und sicher genug?

    1.) Registrierung auf der Internetseite mit Vor+Nachnamen+Emailadresse. (Daten werden in Datenbank gespeichert)
    2.) Programm wird online gekauft und gedownloadet. (Mit Produkt ID die nach dem Kauf zum Namen etc in der Datenbank gespeichert wird. So kann der Kunde es immer wieder mit der selben Produkt ID aus seinem Account downloaden. Evtl wird noch die IP mit geloggt um Accountsharing zu vermeiden.)
    3.) Im Programm bei der Installation wird die HardwareID ausgelesen.
    4.) Die Hardware ID muss mit Vor+Nachnamen+Emailadresse ins Programm eingegeben werden.
    5.) Vor+Nachname+Emailadresse und Produkt ID werden in der Datenbank abgeglichen, wenn vorhanden wird Hardware ID dazu geschrieben.
    (Wenn eine andere Hardware ID im System ist wird auf Kontakt an den Hersteller verwiesen. Nach vorlegen des Kaufbelegs wird die Hardware ID zurück gesetzt.)
    6.) Wenn eine neue Hardware ID in die Datenbank geschrieben wurde, wird ein Lizenzschlüssel aus Vor+Nachname+Hardware ID generiert und an die Emailadresse in der Datenbank gesendet. Der Lizenzschlüssel wird in die Datenbank geschrieben.
    7.) Damit kann das Produkt aktiviert werden.
    8.) Der Programmstart checkt ob Hardware ID und Lizenzschlüssel in der Datenbank steht. Ist das der Fall öffnet das Programm.
    9.) Ist das nicht der Fall bleibt das Programm geschlossen und es wird auf Kontakt an den Hersteller verwiesen. Nach vorlegen des Kaufbelegs wird die Hardware ID und der Lizenzschlüssel zurück gesetzt und der Installationsprozess muss erneut erfolgen.

    Wollte nochmal darauf hinweisen das es nur ein Grundgedanke ist.

    Würde mich über positive wie auch negative Kritik sowie Änderungsvorschläge freuen.

    Gruß xxlynusxx
    Müsste eigentlich gehen. Aber vorher nochmal am besten testen.
    Zur Sicherheit könntest du noch vollgendes einbauen:
    Wenn das Programm gestartet wird, einige Hardwareinformationen des Benutzers mit der ID und dem Lizenzschlüssel an einen Server Senden. Und bei jedem Programmstart die werte vergleichen.
    Falls die werte nicht übereinstimmen, muss der Kunde durch eine Manulle Autentifizierung.
    Das soll dich dazu anreizen, deine Frage nochmal zu überdenken. Bei Schritt 3 willst du eine "Hardware ID" auslesen? Von wo? Es gibt keine HWID beim PC. Es gibt eine MAC Adresse der onboard Netzwerkkarte. Oder Seriennummern verschiedener Bauteile, die verbaut sind. Aber kein Ding eines PCs heißt Hardware-ID. Aber Du kannst wie gesagt Hardwareinformationen auslesen und vergleichen.
    Achso... Das es jetzt nicht "Die Hardware ID" gibt habe ich schon in Erfarung gebracht. War ja auch nur als Beispiel gedacht welche Sicherung man nehmen könnte um das Gerät/Benutzer zu identifizieren.

    Ich würde es jetzt z.B: so machen: Ist das ausreichend?

    Quellcode

    1. Function getHWID() As String
    2. Dim hardwareid As String = System.Security.Principal.WindowsIdentity.GetCurrent.User.Value
    3. Return hardwareid
    4. End Function
    Hallo xxlynusxx,

    das Lizenzsystem würde sicherlich so funktionieren. Folgendes würde ich noch einmal überdenken:

    - bei jeder Änderung der Systeminformation muss die Lizenzierung neu erstellt werden; das kann sehr aufwändig werden und ist für Kunden auch nicht angenehm
    - das Löschen der Lizenzdaten muss mit einem Kennwort geschehen, sonst macht der Kunde das ja öfter und kann so die Software mehrfach installieren;
    dieses Kennwort muss sich jedoch ändern, sonst wird es womöglich weitergegeben
    - wenn der Kunde sowieso schon seinen Namen mitteilt, dann hat er doch bestimmt eine eindeutige Kundennummer;
    ich würde daher lieber einen Lizenzschlüssel ohne Systeminformationen erstellen
    - wenn es sich um eine Mehrbenutzerumgebung handelt müsste geprüft werden, wieviele Benutzer sich angemeldet haben;
    hierzu würde ich eine Tabelle in der gemeinsam genutzten (und geschützten) Datenbank verwenden
    - also evtl. die Anzahl der erlaubten Benutzer im Lizenzschlüssel unterbringen
    - wenn es sich um modulare Software handelt, müssen die freigeschalteten Module im Lizenzschlüssel untergebracht werden (erlaubt Ja/nein)

    Gruß Schorsch