Problem mit Passwort Abfrage

  • In einem anderen Forum hat jemand erklärt wie man eine sichere Passwortabfrage in autoit programmiert , nur bei mir funkt das nicht so ganz :s

    [autoit]

    #include <Crypt.au3>

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

    $Passwort = "12345" ;dein pw
    $Hashkey = "key" ;der hashkey muss im programm enthalten sein

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

    _Crypt_Startup()

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

    $Key = _Crypt_DeriveKey($Passwort, $Hashkey, $CALG_MD5) ;key generieren

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

    $Data = _Crypt_EncryptData($Passwort, $Key, $CALG_AES_256) ;encrypten

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

    Send(@CRLF & $Data & @CRLF)

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

    _Crypt_DestroyKey($Key) ;ende
    _Crypt_Shutdown()

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

    Hier wird der Hash generiert.


    [autoit]

    #RequireAdmin
    #include <Crypt.au3>

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

    $hGUI = GUICreate("Crackme 3", 222, 100, -1, -1)
    $hPW_Label = GUICtrlCreateLabel("Enter Password:", 4, 8, 81, 17)
    $Password = GUICtrlCreateInput("", 88, 4, 129, 21)
    $hStart = GUICtrlCreateButton("Ok", 110, 28, 50, 25)
    $q = Guictrlcreatebutton("Button",10,50,100,50)
    GUISetState(@SW_SHOW, $hGUI)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $hStart
    _Start()
    EndSwitch
    WEnd

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

    Func _Start()
    $Passwort = GUICtrlRead($Password)
    $Hashkey = "key" ;der hashkey sollte auch nochmal gesichert werden
    $Hash = "0xF0DB6718284C2E372E5628815F40CA3E" ;der aes256 key, erzeugt aus dem hashkey und den pw

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

    _Crypt_Startup()
    $Key = _Crypt_DeriveKey($Passwort, $Hashkey, $CALG_MD5)
    $pw = _Crypt_DecryptData($Hash, $Key, $CALG_AES_256)

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

    $pass = Guictrlread($Password)

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

    If $pw = $pass Then

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

    Msgbox(0,"..", "Right")
    _Crypt_DestroyKey($Key) ;closen
    _Crypt_Shutdown()
    Else
    msgbox(0,"...","Wrong")
    _Crypt_DestroyKey($Key) ;closen
    _Crypt_Shutdown()
    Endif
    EndFunc

    [/autoit]


    Code ist jetzt richtig ;D

    3 Mal editiert, zuletzt von Litom2 (26. Oktober 2012 um 12:12)

  • Du kannst auch $Passwort. Du hast ja das Control schon ausgelesen.
    Am besten auch bei einer Sprache bleiben, deutsch oder englisch.
    Und ungarische Notation, sowie eindeutige Variablennamen.