Skript lizenz?

  • Servus,

    ich bin auf der suche nach zwei systemen:

    1: Jedesmal wenn das skript ausgeführt wird soll es selbst auf updates prüfen. ALso quasi ein versionscheck machen.

    2: Mein skript soll eine art lizenz haben. D.h. es soll nur auf einem einzigen PC gehen und somit nicht vervielfältigt werden.

    Hat jemand ein schlagwort dafür oder gibt es da schon lösungen für?

    Einmal editiert, zuletzt von Koffein (29. Juni 2012 um 13:35)

  • Hi,

    zu 1.: Den Versionsscheck kannst du zum Beispiel mit dem Herunterladen einer Ini-Datei von einem FTP-Server (oder einfach mit dem Auslesen des Quellcodes einer Website oder Text-Datei) realisieren. Siehe

    [autoit]

    _InetGetSource

    [/autoit]

    und

    [autoit]

    _FTP_FileGet

    [/autoit]

    zu 2.: Du kannst zum Beispiel die MAC-Adresse eines PCs auslesen und die mit einem String in deinem Skript vergleichen.
    Hier gibt das dafür bereits eine Lösung: [ gelöst ] script per mac adresse schützen


    Gruß stay

  • Du könntest auch, so mache ich es, in einer Datenbank die neuste Version eintragen.
    Wenn dann die Clientversion älter ist downloadet er die neueste.
    Den aktuellsten Downloadlink könntest du dann auch in die DB eintragen.

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Für 1. hab ich mal ein Script geschrieben. Für 2. scheint mir stayawayknight's Vorschlag nicht übel zu sein. Und sonst findest du wahrscheinich noch mehr bei google.

    Gruss Shadowigor

  • hallo,

    ich mache das immer mit einer updater.exe!

    1. script startet und prüft ob es einen neuen updater gibt ..

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

    #Region ### updater pruefen
    $fuserver = "\\server\dfs\IT-Systems-and-Services\Public\Updater\Updater.exe"
    $fulocal = "C:\programmpfad\Updater.exe"
    $fu_ver1 = FileGetVersion($fuserver) ;server File 1
    $fu_ver2 = FileGetVersion($fulocal) ;local File 2

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

    If $fu_ver1 > $fu_ver2 Then
    FileCopy ($fuserver, $fulocal,1)
    ;Exit
    Else
    ; mache weiter
    EndIf
    #EndRegion ### updater pruefen

    [/autoit]

    2. prüfen ob es eine neue script version gibt

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

    Starter_pruefen()

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

    Func Starter_pruefen()

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

    GUICtrlSetData($label, "... bitte warten ...")
    Sleep(1000)
    ;---Fileversion Starter abrufen------
    $sV1 = "\\server\dfs\IT-Systems-and-Services\Public\Updater\script.exe"
    $sV2 = "C:\programmpfad\script.exe"

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

    $v1 = FileGetVersion($sV1) ;server File 1
    $v2 = FileGetVersion($sV2) ;local File 2

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

    $v1split = Stringsplit($v1, ".")
    $v2split = Stringsplit($v2, ".")

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

    ;----------- prüfe starter ----

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

    $spl_1 = $v1split[1] & $v1split[2] & $v1split[3] & $v1split[4]
    $spl_2 = $v2split[1] & $v2split[2] & $v2split[3] & $v2split[4]

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

    $spl_erg = $spl_2 - $spl_1
    ;MsgBox(0,"", $spl_1 & "/" & $spl_2)
    ;MsgBox(0,"",$spl_erg)
    If $spl_erg < 0 Then
    ;If $v1 > $v2 Then
    GUICtrlSetData($label, '... Update "script " vorhanden ...')
    Sleep(1000)
    GUICtrlSetData($label, "... bitte warten ...")
    Sleep(1000)
    Run($Scriptdir & "\Updater.exe")
    Exit
    ;MsgBox (0,"", "Clientversion = " & @CRLF &$v1 & @CRLF & $v2)
    EndIf

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

    EndFunc ;==>Starter_pruefen

    [/autoit]

    3. wenn vorhanden ... folgendes, wenn nicht vorhanden, machen im script weiter

    hier wird die updater exe ausgeführt ...
    Run($Scriptdir & "\Updater.exe") folgend der quelltext dazu ...

    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=..\Icons\transmission_icons_win\Transmission Icons win\Transmission 1.ico
    #AutoIt3Wrapper_outfile=Updater.exe
    #AutoIt3Wrapper_Res_Comment=11.11.2010
    #AutoIt3Wrapper_Res_Description=Updater
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    ;updater
    Sleep(2000)

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

    $sV1 = "\\server\dfs\IT-Systems-and-Services\Public\Updater\script.exe"

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

    FileCopy($sV1, "C:\programmpfad\script.exe",1)
    Sleep(2000)

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

    Run("C:\programmpfad\script.exe")

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

    vielleicht hilft das bissl weiter :)

    gruß gmmg

  • Servus ich hätte da nen vorschlag.
    So mach ich das.

    Programm licgenerator.exe

    Spoiler anzeigen


    #Include <File.au3>
    #include <array.au3>
    #include <string.au3>

    Dim $Liccrypt="GutenMorgen2010"
    $driveserial=DriveGetSerial("C:\")
    $LicKey=_StringEncrypt(1, $driveserial, $Liccrypt)
    ClipPut( $LicKey )
    MsgBox(4096, "INFO","Der Lizenzschlüssel lautet." & @CRLF & @CRLF & $LicKey & @CRLF & @CRLF & "Er wurde in die Zwischenablage kopiert")


    das gane in eien INI schreiben un ddann in der exe auswerten.

    Spoiler anzeigen


    ;Lizenz prüfen
    Dim $Liccrypt="GutenMorgen2010"
    $driveserial=DriveGetSerial("C:\")
    $LicKey = IniRead(@ScriptDir & "\okfsplit.ini", "Lizenz", "LicKey", "NichtGefunden")
    $softlic=_StringEncrypt(0, $LicKey , $Liccrypt)
    If $softlic<>$driveserial Then
    MsgBox(4112,"Fehler", "keine gültige Lizenz eingetragen")
    Exit
    EndIf
    ;Lizenz prüfen ende

    Das Programm funktioniert jetzt nur auf diesen PC solage die Festplatte keine anders ist.

    Ich hoffe ich konnte dir helfen.

    Fertig

    gruss

    Baldrian

    Solange
    du den anderen sein Anderssein nicht verzeihen kannst, bist du noch weit ab vom
    Wege der Weisheit.

  • Danke für eure zahlreichen antworten.

    Ich hab mitlerweile einen anderen sehr simplen weg gefunden.

    Ich mache mithilfe der CompInfo (http://www.autoitscript.com/forum/topic/29…uter-info-udfs/)
    Einen Bios & CPU string und schreibe diesen in eine .ini

    Wenn ich will Das Benutzer A mein skript nutzen darf schickt er mit diesen string, ich lege den in eine ini auf meinen ftp server.

    Nun Startet Benutzer A das skript:

    1. String wird generiert
    2. Download der ini datei von meinem server
    3. auslesen der download ini
    4. Vergleichen zwichen string und download ini
    5. Wenn der string passt gehts weiter, wenn nicht sofort exit.


    Das selbe mache ich mit dem "Updater"

  • nun bei AutoIT wirst du nie ne richtige Sicherheit haben, da man es ohne Obfuscator + ähnliches leicht decompilen kann.
    Und selbst wenn , wenn jmd will, kann er einfach die Packets von deinem FTP Server ändern

  • L3viathan:
    Iw zwar was du meinst, aber: Alle Versuche, eine Lizenzprüfung zu machen, müssen zwangsläufig scheitern, da man auch Bytecode disassemblieren kann...
    @Koffein:
    Ich würde es mit Onlineüberprüfung machen mit Zeithash (damit die Verbindung nicht gefackt werden kann; zumindestens ist es dann ein Stück schwieriger). Dein Skript dann obfuscaten und die Exe deines Programms würde ich dann noch a la Themida schützen.
    Das würde das ganze zumindestens schwer knackbar machen lassen.

    Nur keine Hektik - das Leben ist stressig genug

  • @Koffein:
    Ich würde es mit Onlineüberprüfung machen mit Zeithash (damit die Verbindung nicht gefackt werden kann; zumindestens ist es dann ein Stück schwieriger). Dein Skript dann obfuscaten und die Exe deines Programms würde ich dann noch a la Themida schützen.
    Das würde das ganze zumindestens schwer knackbar machen lassen.

    Verstehe ich nicht ganz ?(

    Was soll denn gefackt werden?
    Oder wie soll das realisiert werden??

  • @Koffein
    Darf ich mal fragen wie jung Du bist?
    Es sind so viele Wege genannt wurden und jeden ist sehr verständlich dargestellt. Nur das umsetzen, das solltest Du schon selber zumindest versuchen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Man könnte auch kritisch hinterfragen, ob das Script überhaupt schützenswert ist.
    Wenn du ein gutes Produkt hast, solltest du schon ein bisschen Schleichwerbung machen. :D

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • ohforf.
    schleichtwerbung? soll er es das system hier ausbremsen?

    hier wird nicht geschlichen. wir geben gas.

    blitzgeräte gibt es nicht im forum. noch nicht ;) Oder? Doch,
    ein blitzgerät habe ich bereits gefunden. wer zu schnell in der
    shoutbox postet wird geblitzt. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • @Koffein
    Darf ich mal fragen wie jung Du bist?
    Es sind so viele Wege genannt wurden und jeden ist sehr verständlich dargestellt. Nur das umsetzen, das solltest Du schon selber zumindest versuchen.


    ??? Da hast du wohl etwas falsch verstanden 8| das srkitp ist schon lange fertig. Habe ich auch etwas weiter oben beschrieben wie ich es gelöst habe.

    Mir stellt sich nur die Frage wie man dort etwas faken soll und das Tool "umgehen" kann. Das habe ich nicht ganz verstanden.

    Ob es schützenswert ist glaube ich nicht. Aber die Personen die es bekommen sollen es nicht ungehindert weitergeben ;)