Key Abfrage mit zufälliger Verschlüsselungstärke

  • Hallo


    Ich habe gerade begonnen mich in autoit einzuarbeiten... Wollte Fragen Was ihr davon haltet bzw. Vorschläge hättet wie man es bewerkstelligen könnte das die erstellte "key.chs" nur mit diesem Produkt funktioniert.

    Also nicht durch einfaches kopieren der Datei auch auf jedem anderen PC läuft...


    Mein bisheriger Code:


    Local $Serial, $Serial_Input, $verschl, $success, $fail, $entsch, $level
    $exist = FileExists("key.chs")

    $Serial = "IPS-E8180-K0204-N0809"
    $ueberpruefen = FileRead("key.chs")
    $random = Random(1, 15, 1)
    ;MsgBox(64, "", $random); Nur zum testen mit welchem Verschlüsselungsgrad
    $level = "$random"
    $false = _StringEncrypt(0, $ueberpruefen, "ovl72gft", $level)
    Select

    Case $exist = 0
    $aktivierung = "Bitte aktivieren Sie Ihr Produkt mit Ihrem persönl. Schlüssel" & @CRLF & @CRLF
    $aktivierung &= "Wenn Sie keinen Schlüssel besitzen, wenden Sie sich an dummy@mail.com"
    MsgBox(64, "Lizenz", $aktivierung)
    $random = Random(1, 15, 1)
    MsgBox(64, "", $random)
    $level = $random
    $Serial_Input = InputBox("Serial", "Bitte Serial eingeben!")
    If $Serial_Input = $Serial Then
    $verschl = _StringEncrypt(1, $Serial, "ovl62gft", $level)
    FileWrite("key.chs", $verschl)
    $ueberpruefen = FileRead("key.chs")
    $entsch = _StringEncrypt(0, $ueberpruefen, "ovl72gft", $level)
    $success = "Vielen Dank das Sie dieses Programm gekauft haben!" & @CRLF
    $success &= "Ihre Seriennummer lautet: " & $entsch
    MsgBox(64, "", $success)

    Else
    $fail = "Der eingegebene Schlüssel ist ungültig" & @CRLF
    $fail &= "Programm wird nicht ausgeführt"
    MsgBox(64, "Lizenz", $fail)
    Exit

    EndIf
    Case Not $false = $Serial
    MsgBox(64, "Lizenz", "Ihre Lizenzdatei gehört nicht zu diesem Produkt")
    Exit
    Case $false <> $Serial
    MsgBox(64, "Lizenz", "Ihre Lizenzdatei gehört nicht zu diesem Produkt")
    Exit
    EndSelect
    ;°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    Einmal editiert, zuletzt von stinger2k (25. Januar 2010 um 22:13)

  • " Thx 2 bubblestar"

    Hat einer eine Idee wie ich "Random" fix als variable eintragen könnte nachdem es in meinem script 1x erfoldreich mit _StringEncrypt zum verschlüsseln verwendet wurde?
    Für die nachfolgende Überprüfung des entschlüsselten Key´s, bei jedem Programmstart.

    Danke schonmal im voraus....


    mfg

    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

  • Mir gefiel die Idee: WIe wärs mit dem Script hier:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=Serial.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <String.au3>
    Global $sIntern = @ComputerName & @UserName & @OSLang
    Global $sPassword = "12345"
    If StringLen($sPassword) > 5 Then $sPassword = StringLeft($sPassword, 5)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ 2775-479F-BA0B-3CB8-7E82 <- Seriennummer für meinen PC ;)

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists(@ScriptDir & "\key.chs") Then
    MsgBox(64, "Lizenz", "Bitte aktivieren Sie Ihr Produkt mit Ihrem persönl. Schlüssel" & @CRLF & @CRLF & "Wenn Sie keinen Schlüssel besitzen, wenden Sie sich an dummy@mail.com")
    $sInput = InputBox("Serial", "Bitte Serial eingeben! Um eine Serial anzufordern drücken sie auf 'cancel'")
    If @error Or $sInput = "" Then
    $sCrypt = _StringEncrypt(1, $sIntern, "NOSERIAL", 1)
    MsgBox(0, "", "Sie haben noch keine Serial? Wenden Sie sich mit folgendem Code an [email='dummy@mail.com'][/email]:" & _
    @CRLF & @CRLF & $sCrypt & @CRLF & @CRLF & _
    "Der Code befindet sich ab sofort in der Zwischenablage ihres Computers.")

    [/autoit] [autoit][/autoit] [autoit]

    ;~ ClipPut(_GenerateSerial($sCrypt)) ; Direkt Serial bekommen
    ClipPut($sCrypt)

    [/autoit] [autoit][/autoit] [autoit]

    Exit
    EndIf
    $sInput = StringRegExpReplace($sInput, "[\_\- ]", "")
    $sCheck = _StringEncrypt(0, $sInput, $sIntern, 1)
    If $sCheck = $sPassword Then
    MsgBox(0, "", "Serial genehmigt")
    If FileExists(@ScriptDir & "\key.chs") Then FileDelete(@ScriptDir & "\key.chs")
    FileWrite(@ScriptDir & "\key.chs", _StringEncrypt(1, $sInput, $sIntern, 5))
    Else
    MsgBox(0, "", "Seriennummer ist ungültig")
    Exit
    EndIf
    Else
    If _StringEncrypt(0, _StringEncrypt(0, FileRead(@ScriptDir & "\key.chs"), $sIntern, 5), $sIntern, 1) <> $sPassword Then
    MsgBox(0, "", "Seriennummer in key.chs ist ungültig")
    Exit
    Else
    MsgBox(0,"","Gültige Serial gefunden!")
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GenerateSerial($sUniqueKey, $sSecret = "12345")
    If StringLen($sSecret) > 5 Then $sSecret = StringLeft($sSecret, 5)
    $sSerial = _StringEncrypt(1, $sSecret, _StringEncrypt(0, $sUniqueKey, "NOSERIAL", 1), 1)
    Return StringRegExpReplace($sSerial, ".{4}(?!\z)", "$0-")
    EndFunc ;==>_GenerateSerial

    [/autoit]

    Die Funktion _GenerateSerial() wird von dir benutzt, um serials zu erstellen. Das Passwort ($sSecret) muss dabei mit dem im Script des Anwenders übereinstimmen.
    $sIntern kann durch ein beliebiges Sicherheitsmerkmal (Hardware-ID, Windows-Serial, Personalausweißnummer... was weiß ich) ersetzt werden.

    Wäre nett wenn jemand das mal testen könnnte.