Versionsschutz per Serial /MySQL Datebank

  • Soo.

    Ich erstell mal mein eigenes Thema zu dem Script.


    Das Script, welches ihr hier finden werdet, habe ich mit Hilfe von der mysql.au3 UND der UDF von ProgAndy gemacht.


    Kritik / Lob gern gesehen.

    Werde weitgehend versuchen, alles zu realisieren.


    Updates:

    Datenbankbasis sowie Serialregistrierung möglich

    Login für Folgescript möglich

    Beschränkter Zugang (Per Rechteabfrage der VVersion)


    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <mysql.au3>
    $toolname = "Schrubbers Testtool"
    $short = "Schrubber"
    $dbname = "lolrofl"
    $table = "test"
    Local $UserName = "root", $Password = "root", $Database = $dbname, $MySQLServerName = "localhost"
    _MySQL_InitLibrary()
    If @error Then
    TrayTip('Error', 'libmysql.dll konnte nicht gefunden werden', 10, 3)
    Sleep(10000)
    Exit
    EndIf
    $MysqlConn = _MySQL_Init()
    $Connected = _MySQL_Real_Connect($MysqlConn, $MySQLServerName, $UserName, $Password, $Database)
    $hSQLping = _MySQL_Ping($MysqlConn)
    If $hSQLping = 1 Or $hSQLping = 3 Then
    TrayTip('Error', 'Verbindung zur Datenbank konnte nicht hergestellt werden', 10, 3)
    Sleep(10000)
    Exit
    EndIf

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

    #Region ### START Koda GUI section ### Form=
    $title = GUICreate($toolname, 386, 322, 192, 124)
    $b_login = GUICtrlCreateButton("Login", 264, 256, 113, 25, $WS_GROUP)
    $b_buyfull = GUICtrlCreateButton("Vollversion kaufen", 136, 257, 113, 23, $WS_GROUP)
    $b_XDXDXDXDXD = GUICtrlCreateButton("XDXDXDXDXD", 8, 256, 113, 25, $WS_GROUP)
    $l_headline = GUICtrlCreateLabel($short, 50, 24, 260, 58)
    GUICtrlSetFont(-1, 28, 800, 2, "Nightclub BTN")
    GUICtrlSetColor(-1, 0xFF0000)
    $i_username = GUICtrlCreateInput("", 104, 144, 233, 21)
    $i_passwort = GUICtrlCreateInput("", 104, 176, 233, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
    $l_username = GUICtrlCreateLabel("Username", 40, 144, 52, 17)
    $l_password = GUICtrlCreateLabel("Password", 40, 176, 50, 17)
    $l_info = GUICtrlCreateLabel("Sie nutzen die", 40, 224, 74, 17)
    $l_version = GUICtrlCreateLabel("Testversion", 112, 224, 59, 17)
    GUICtrlSetColor(-1, 0xFF0000)
    $l_leftinfo = GUICtrlCreateLabel("Verbleibende Zeit:", 16, 296, 90, 17)
    $l_timeleft = GUICtrlCreateLabel("(No time)", 112, 296, 45, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _quit()
    Case $b_login
    if (GUICtrlRead($i_username) = "") Then
    MsgBox(0, "Error", "Sie haben keinen Username eingegeben.")
    Elseif (GUICtrlRead($i_passwort) = "") Then
    MsgBox(0, "Error", "Sie haben kein Passwort eingegeben.")
    Else
    Local $sReturn = _mysql_checklogin($MysqlConn, GUICtrlRead($i_username))
    If GUICtrlRead($i_passwort) == $sReturn Then
    MsgBox(0, "Login erfolgreich", "Sie haben sich erfolgreich eingeloggt!")
    $version = _mysql_checkversion($MysqlConn, GuiCtrlRead($i_username))
    if($version = "V") Then
    GUICtrlSetData($l_version, "Vollversion")
    GUICtrlSetColor($l_version, 0x32CD32)
    EndIf
    GUICtrlSetData($l_timeleft, _mysql_checktime($MysqlConn, GuiCtrlRead($i_username)))
    Else
    MsgBox(0, "Login fehlgeschlagen", "Die eingegebenen Daten sind falsch. Versuchen sie es bitte erneut.")
    EndIf
    EndIf
    Case $b_buyfull
    ShellExecute("http://LinkzuderHomepage.de")
    EndSwitch
    WEnd
    Func _mysql_checklogin(Const $MysqlVerbindung, Const $sAccount)
    _MySQL_Real_Query($MysqlVerbindung, "SELECT `Password` FROM `"&$dbname&"`.`"&$table&"` WHERE `Account` = '" & $sAccount & "';")
    If @error Then
    Return SetError(-1, @error, 0)
    Else
    Local $sResult = _MySQL_Store_Result($MysqlVerbindung)
    Local $aReturn = _MySQL_Fetch_Row_StringArray($sResult)
    _MySQL_Free_Result($sResult)
    If UBound($aReturn) = 0 Then
    Return SetError(-2, @error, 0)
    Else
    Return $aReturn[0]
    EndIf
    EndIf
    EndFunc ;==>_mysql_checklogin
    Func _mysql_checkversion(Const $MysqlVerbindung, Const $sAccount)
    _MySQL_Real_Query($MysqlVerbindung, "SELECT `VVersion` FROM `"&$dbname&"`.`"&$table&"` WHERE `Account` = '" & $sAccount & "';")
    If @error Then
    Return SetError(-1, @error, 0)
    Else
    Local $sResult = _MySQL_Store_Result($MysqlVerbindung)
    Local $aReturn = _MySQL_Fetch_Row_StringArray($sResult)
    _MySQL_Free_Result($sResult)
    If UBound($aReturn) = 0 Then
    Return SetError(-2, @error, 0)
    Else
    Return $aReturn[0]
    EndIf
    EndIf
    EndFunc ;==>_mysql_checkversion
    Func _mysql_checktime(Const $MysqlVerbindung, Const $sAccount)
    _MySQL_Real_Query($MysqlVerbindung, "SELECT `Time` FROM `"&$dbname&"`.`"&$table&"` WHERE `Account` = '" & $sAccount & "';")
    If @error Then
    Return SetError(-1, @error, 0)
    Else
    Local $sResult = _MySQL_Store_Result($MysqlVerbindung)
    Local $aReturn = _MySQL_Fetch_Row_StringArray($sResult)
    _MySQL_Free_Result($sResult)
    If UBound($aReturn) = 0 Then
    Return SetError(-2, @error, 0)
    Else
    Return $aReturn[0]
    EndIf
    EndIf
    EndFunc ;==>_mysql_checktime
    Func _mysql_checklast(Const $MysqlVerbindung, Const $sAccount)
    _MySQL_Real_Query($MysqlVerbindung, "SELECT `lastcheck` FROM `"&$dbname&"`.`"&$table&"` WHERE `Account` = '" & $sAccount & "';")
    If @error Then
    Return SetError(-1, @error, 0)
    Else
    Local $sResult = _MySQL_Store_Result($MysqlVerbindung)
    Local $aReturn = _MySQL_Fetch_Row_StringArray($sResult)
    _MySQL_Free_Result($sResult)
    If UBound($aReturn) = 0 Then
    Return SetError(-2, @error, 0)
    Else
    Return $aReturn[0]
    EndIf
    EndIf
    EndFunc ;==>_mysql_checklast
    Func _mysql_checkserial(Const $MysqlVerbindung, Const $sAccount)
    _MySQL_Real_Query($MysqlVerbindung, "SELECT `Account` FROM `"&$dbname&"`.`"&$table&"` WHERE `Serial` = '" & $serial & "';")
    If @error Then
    Return SetError(-1, @error, 0)
    Else
    Local $sResult = _MySQL_Store_Result($MysqlVerbindung)
    Local $aReturn = _MySQL_Fetch_Row_StringArray($sResult)
    _MySQL_Free_Result($sResult)
    If UBound($aReturn) = 0 Then
    Return SetError(-2, @error, 0)
    Else
    Return $aReturn[0]
    EndIf
    EndIf
    EndFunc ;==>_mysql_checkserial
    Func _quit()
    _MySQL_Close($MysqlConn)
    _MySQL_EndLibrary()
    Exit
    EndFunc ;==>_quit

    [/autoit]


    Für folgendes ist die mysql.au3 aus dem ENGLISCHEN Forum von nöten!


    [autoit]

    #include <mysql.au3>
    $UserName = "root" $Password = "root" $Database = "lolrofl"
    $MySQLServerName = "localhost"
    $SQLInstance = _MySQLConnect($UserName,$Password,$Database,$MySQLServerName) $SQLCode = "CREATE TABLE Tool( Serial VARCHAR (20), Account VARCHAR (30), Password VARCHAR (30), VVersion VARCHAR (1), Time INTEGER, lastcheck VARCHAR(8))" _Query($SQLInstance, $SQLCode) _MySQLEnd($SQLInstance)

    [/autoit]


    [autoit]


    #include <mysql.au3>
    $UserName = "root"
    $Password = "root"
    $Database = "lolrofl"
    $MySQLServerName = "localhost"
    $SQLInstance = _MySQLConnect($UserName,$Password,$Database,$MySQLServerName)
    $SQLCode = "INSERT INTO Tool (Serial, Account, Password, VVersion, Time, lastcheck) VALUES('xasdzuasdgas', 'trick', '1', 'V', '30', '29062010' )"
    _Query($SQLInstance, $SQLCode)
    _MySQLEnd($SQLInstance)

    [/autoit]


    Augenmerk dieses Schutzes liegt bei der Funktionalität und nicht dem Design ;)


    Schrubber

    3 Mal editiert, zuletzt von Schrubber (1. Juli 2010 um 14:56)

  • Hallo,

    also die Idee ist nicht schlecht. Ich glaube aber das Autoit das Passwort nicht verschlüsselt sendet, das heißt wenn ein User einen Sniffer installiert hat und deinen Server,Benutzernamen und Passwort heruasbekommt kann er schnell die DB schrotten oder verändern:-) Ich suche auch eine möglichkeit die verbindung zwichen Autoit und MYSQL zu verschlüsseln hat einer eine Idee ohne PHP:-)?

    Gruß

    Loco

  • Ohne PHP kriegste nix sicheres hin.
    Ist in den meisten Fällen in MySQL Dingen so