Softwareschlüssel zur Produktaktivierung (Generieren und Prüfen)

    • Release

    Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von J.Herbrich.

      Softwareschlüssel zur Produktaktivierung (Generieren und Prüfen)

      Hallo,

      in einem anderen Beitrag, frage ein User nach der Möglichkeit einen Produktschlüssel zu überprüfen, ohne diese Nummer genauer zu kennen und somit mehr als nur einen Schlüssel zu verwenden.

      Da ich noch einen alten Sourcecode auf meiner Platte hatte, welcher genau diese funktion erfüllt, habe ich ihn kurzerhand in 2 DLL-Dateien gepackt und hier hochgeladen.

      singu meinte dass ich die Dateien doch einfach mal hier vorstellen soll und dies mache ich dann auch einfach mal hier.


      Was machen die Dateien?

      Also in der RAR-Datei sind 2 DLL-Dateien enthalten welche jeweils nur eine shared Function besitzen (Somit muss keine neue Instanz der Klasse angelegt werden)

      Product_Key.Dll
      Diese Datei besitzt eine Funktion mit dem Namen "checkProductKey", mit dessen Hilfe ein Generierter Produktschlüssel überprüft werden kann.

      checkProductKey benötigt folgende 4 Parameter:
      1. Der Produktschlüssel in form eines Strings z.B. 09718-97298-96398-35854-85610-0
      2. Die Anzahl der Ziffern aus denen ein Block des Produktschlüssels besteht. In diesem Fall sind es 5 Ziffern Angabe als Integer
      3. Die Anzahl der Blöcke. In diesem Fall sind es 5 Blöcke und eine Prüfziffer. Angabe als Integer
      4. Der letzte Parameter ist ein Trennzeichen, welches zum Trennen der Blöcke verwendet wird. Hier verwende ich ein Minus "-". Angabe als String
      Als Rückgabewert wird ein Boolean verwendet der True bei erfolgreicher und False bei erfolgloser Prüfung zurückgibt.

      ProductKey_Gen
      Diese Datei ist für das Generieren der Schlüssels zuständig. Sie besitzt auch nur eine Funktion mit Namen "createKey".

      createKey benötigt folgende Parameter:

      1. Die Anzahl der Ziffern aus denen ein Block des Produktschlüssels bestehen soll. Angabe als Integer
      2. Die Anzahl der Blöcke. Angabe als Integer
      3. Und natürlich wieder das Trennzeichen für den Produktschlüssel. Angabe als String
      Als Rückgabe kommt der String mit dem Generierten Produktschlüssel.

      Wie verwende ich die Dateien?
      Füge einfach auf "Projekt-Verweis hinzufügen..." und wähle dann die Datei "Produkt_Key.dll" über "Durchsuchen" aus.
      Nun starte ein neues Projekt, welches extern zum Generieren der Produktschlüssel benötigt wird.

      In deinem neuen Projekt über den gleichen Weg wie oben beschrieben, einen Verweis auf die Datei "ProduktKey_Gen.dll" setzen.

      Nun lege in deinem neuen Projekt eine Textbox mit dem Namen "PKey" an und setze direkt daneben einen Button und Beschrifte Ihne mit "Generieren".
      Nun einen Doppelklick auf den Button! Deine IDE sollte nun in die Codeansicht wechseln und eine neue Methode für das clickevent des Buttons angelegt haben.

      Hier schreiben wir nun folgendes rein:

      VB.NET-Quellcode

      1. PKey.Text = Secure_6for9.KeyGenerator.createKey(5, 5, "-") '5 Blöcke mit je 5 Ziffern


      Nun wechseln wir wieder in dein Hauptprojekt und machen hier die Prüfung des Schlüssels.
      Ich verwende hier zur überprüfung eine MaskedTextBox welche nur die Eingabe von Zahlen erlaubt und als Maske den Aufbau des Schlüssels verwendet.

      VB.NET-Quellcode

      1. if Secure_6for9.ProductKey.checkProductKey("09718-97298-96398-35854-85610-0",5, 5, "-")) = true
      2. 'Prüfung erfolgreich
      3. else
      4. 'Prüfung nicht erfolgreich
      5. Msgbox("Produktschlüssel ist falsch. Bitte Kontaktieren Sie Ihren Supportpartner")
      6. end if



      Bitte beachte das die Generierung des Produktschlüssels nicht in dem Programm gemacht wird, welches durch diesen Produktschlüssel aktiviert werden soll.
      Auch sollte die Datei "ProductKey_Gen.dll" nicht mitgegeben werden und die Prüf-Dll aus Sicherheitsgründen umbenannt werden.

      Die Generierung und das Prüfen muss mit den gleichen Parametern gemacht werden.
      Wenn ein Produktschlüssel mit 5 Blöcken mit je 5 Ziffern generiert wird, so muss im Endprodukt auch die Prüfung mit 5 Blöcken je 5 Ziffern durchgeführt werden.

      Hoffe das jemand dafür verwendung findet.
      Gruß SAS


      Name des Programms:
      Product Aktivation

      Screenshot:
      Keines vorhanden

      Verwendete Programmiersprache:
      Visual Basic 2005

      Systemanforderungen:
      .NET Framework 2.0


      Lizenz/Weitergabe:
      Freeware
      Die Dateien dürfen komplett frei verwendet werden - auch in Kommerziellen Produkten.
      Es muss kein Herkunftshinweis in Form von nennung meines Namen erfolgen.
      Nur gegen das decompilieren meiner Codes habe ich etwas.
      Dateien

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SAS“ ()

      Darf eicompiliert werden wenn man dich erwähtn? Das wäre mit sicherheit sicherer...

      Und noch eine frage weil ich raff das nicht: Die eine .dll erstellt den code und ide andere vergleicht den vom Benutzer eingegebenn mit dem erstellten. Wo wird der erstellte gespeichert? auf einem server?
      Ich denke dass er das berechnen lässt mit einem mehr oder weniger kompl. Algorithmus.
      Die Quersummen der Blöcke sind 41-35-35-35-25-20
      Wenn man ein paar Blöcke generiert kann man vielleicht auf den Algorithmus kommen.

      Kurze Rückmeldung wäre schön. Würde mich interessieren, da ich selbst schon mal versucht hab einen sinnvollen Algor. für eine Verschlüsselung zu finden.
      Sorry, ich möchte dir echt nichts schlechtes antun oder so, ich wollte nur prüfen, obs wirklich sicher ist..
      Dabei ist das rausgekommen:

      shqiponja-design.ch/downloads/Product_Key.zip

      Ich will dir damit nur sagen, dass es so wie es ist eigentlich voll unsicher ist.
      Ich hab ne dll erstellt, die man dann ins Verzeichnis des Programms kopiert, wo die Registrierung stattfindet. (Product_Key.dll einfach überschreiben)
      Jetzt kann man alles eingeben und die Registrierung ist erfolgreich.

      Wenn du willst, dass jemand das benutzt, musst du es schon sicherer machen.

      Sorry nochmal in demfall, es ist nicht böse gemeint. Ich bin auch nicht einer von der Sorte ich wollts dir nur mal Zeigen was man in 10 min Arbeit alles vernichten kann.
      "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer
      Naja, da das ganze jetzt eh public ist (inklusive der Product_Gen-Lib) ist es generell total unbrauchbar geworden. Jeder kann sich Schlüssel erstellen und Sachen, die mit dieser Lib "geschützt" wurden freischalten. Ansonsten dauert Dekompilierung btw noch weniger, vllt. 0,2 Sekunden und ist noch bequemer.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kevin89“ ()

      Tastatur schrieb:

      Vileicht sollte der user den alogrithus zur erstellung selbst wählen können in dem er irgendein wort eingibt

      Wozu? Milaim's Methode funzt auch dann.
      Einfach ne eigene DLL schreiben, die ebenfalls die "Prüfprozedur" als Publik hat und da ganz simpel immer true zurückliefern.

      @Kevin:

      Naja, da das ganze jetzt eh public ist (inklusive der Product_Gen-Lib) ist es generell total unbrauchbar geworden

      Wenn etwas nur funktioniert, wenn man nicht weiß WIE es funktioniert, ist es aber keine Lösung
      Hallo und danke für eure Rückmeldungen.
      Also der Inhalt der DLL ist schon ein bischen älter und eigentlich auch nur als Hilfe für einen anderen User hier aus dem Forum als DLL compiliert worden.

      Das mit der Sicherheit hatten wir in dem anderen Beitrag auch schon besprochen und ich glaube das ich hier ein wenig falsch verstanden werde :D

      Die DLL sollte für kleine Projekte (Anfänger) gedacht sein... für leute die sowas in Ihrem Programm haben möchten aber eigentlich nicht richtig sinnvoll ist.

      Dadurch das ich persönlich eine Aktivierung über einen Produktschlüssel als sehr unsicher sehe (egal mit welchem Algorithmus), werde ich diese DLL auch nicht Sicherer machen :D.

      Die DLL Arbeitet in der tat mit einer kleinen rechnung anhand dieser der Schlüssel auf richtigkeit geprüft wird (Als keine kommunikation über Netzwerk oder speichern von Dateien).

      Eincompilieren dürft Ihr die Datei natürlich ohne mich nennen zu müssen.
      ICH RATE EUCH ABER VOR DER NUTZUNG DIESER PRODUKTAKTIVIERUNG FÜR GRÖßERE PROJEKTE AB!!
      Wie bereits gesagt ist eine Produktaktivierung über einen Produktschlüssel kein Stück sicher. Zudem solltet Ihr natürlich auch bedenken wie sinnvoll es ist, eine aktivierung einzubauen.

      Den wie hier immer wieder besprochen wird geht es um Sicherheit und Sicherheit ist in der Entwicklung Teuer (weil Zeitaufwändig).
      Soll bedeuten dass der Schutz der Software niemals teurer sein soll als die Software die geschützt wird.

      Und danke nochmal für das Beispiel vom ersetzen der Datei... Aber wie gesagt war eigentlich NUR als Hilfe für einen anderen User hier gedacht und als wir es verwendet hatten war es sowieso fest als Klasse in unserem Programm eingebunden (nicht extern) und durch einen längeren Schlüssel "geschützt" (Achso und in dem Programm wo er eingebaut war wurden sowieso alle Variablen, Methoden, Functions usw.. durch Unbrauchbare Zeichenfolgen ersetzt... somit kann man noch Decompilieren aber das lesen und Verstehen wird scheiße schwer).

      Wünsche euch allen noch einen schönen Tag

      Gruß SaS
      Beim den Teil Prüfung des Schlüssels,

      Wo bitte ist den da der Code womit man die Prüfung ausführt, entweder ich verstehe das ganze nicht, oder der Code wurde vergessen hinzuschreiben.
      Weil da ist nur die Prüfung, ob wahr oder falsch, aber zur ausführung, ansprechen der MasketTextBox ist da nichts.

      Ich meine ich gebe jetzt den Key in die Textbox ein, womit sage ich dann aber so den Key bitte Prüfen, oder soll man die Textbox als Klickt event nutzen?
      Hallo,

      Die Sicherheit ist denke ich hier nicht so dass Problem wen man sich ein Leyer Model vorstellt. Ich würde die DLL in zusammenhang mit einer Datenbank und einen Webdienst nutzen um einfach eine Sinvolle AKtivierung zu erzihlen.

      Ich manipuliere die exe filles beim Download durch einen Webhandler der ein eingebetteten Resurce String ersetzt, da landed eine Hasch drinnen (SHA512) die ein Registrierungs Key (Produkt Key) endhält, diese wird lokal mit nen Key abgeglichen. Fakt ist dass ein großteil bei mir über einen Server läuft und so die Manipulation schwierig ist. Zumal sich der Client immer am Netzwerk anmelldet mit der gehaschten ID.

      LG, J.Herbrich