#include #include #include #include #include #include #include #Include $sSalt = "Most recent sig. I made" $aCorrect=IniReadSection(@ScriptDir&"\PW_List.ini","User") _ArrayDelete($aCorrect,0) $hGUI = GUICreate("Login Check", 500, 140) GUICtrlCreateLabel("Benutzername:", 5, 5, 85, 21) $idInpUser = GUICtrlCreateInput("", 95, 5, 190, 21) GUICtrlCreateLabel("Passwort:", 5, 35, 85, 21) $idInpPW = GUICtrlCreateInput("123456789", 95, 35, 190, 21, $ES_PASSWORD) ; Input mit Passwort Style $idBtnLogin = GUICtrlCreateButton("&Login", 5, 60, 490, 30) GUISetState(@SW_SHOW) $iLoginTrys = 0 $iMaxTrys = 5 While 1 $LoginState = GUICtrlGetState($idBtnLogin) ;ermitteln welchen Status der Login-Button hat If GUICtrlRead($idInpPW) <> "" And GUICtrlRead($idInpUser) <> "" Then ;Wenn Passwort und Benutzer dann If BitAND($LoginState, $GUI_DISABLE) = $GUI_DISABLE Then GUICtrlSetState($idBtnLogin, $GUI_Enable) ;Wenn $LoginState nicht aktiv (also der Loginbutton nicht klickbar) ist dann Login-Button aktivieren Else ;entweder Passwort ider Benutzer sind nicht ausgefüllt If BitAND($LoginState, $GUI_Enable) = $GUI_Enable Then GUICtrlSetState($idBtnLogin, $GUI_DISABLE) ;Wenn $LoginState aktiv (also der Loginbutton klickbar) ist dann Login-Button deaktivieren EndIf $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit Case $idBtnLogin ;Loginbutton wurde geklickt $bCorect = False ;diese Boolsche Variable auf FALSCH setzen For $i = 0 To UBound($aCorrect) - 1 If GUICtrlRead($idInpUser) = $aCorrect[$i][0] Then ;wenn das Arrayelement gleich dem eingegebenen Benutzer ist dann $bCorect = True ;diese Boolsche Variable auf WAHR setzen ExitLoop ;Schleife verlassen EndIf Next If $bCorect Then ;Es wurde ein Benutzer mit Zugangsberechtigung eingegeben ConsoleWrite($aCorrect[$i][1] & @CRLF) $sPW = _Crypt_HashData(GUICtrlRead($idInpPW) & $sSalt, $CALG_MD5) ;das eingegebene Passwort zusammen mit dem "Salz" verschüsseln ConsoleWrite($sPW & @CRLF) If $sPW <> $aCorrect[$i][1] Then $bCorect = False ;der Schlüssel des eingebenen Passworts und der im Array hinterlegte Schlüssel ;für das Passwort stimmen nicht überein also $bCorrect auf FALSCH setzen EndIf If Not $bCorect Then ;entweder kein Benutzer mit Zugangsberechtigung ;oder ungültige Passworteingabe $iLoginTrys += 1 ;Anzahl der Loginversuche um 1 erhöhen If $iLoginTrys > $iMaxTrys - 1 Then ;Anzahl der maximal zuässigen Loginversuche wurde überschritten MsgBox(16, $iMaxTrys & " falsche Loginversuche", "Computer wird für 15 Min. gesperrt", 0, $hGUI) ;Ausgabe Exit ;deshalb Programm beenden Else ;Anzahl der maximal zuässigen Loginversuche wurde nicht überschritten MsgBox(48, "noch " & $iMaxTrys - $iLoginTrys & " Loginversuch(e)!", "danach wird der Computer für 15 Min. gesperrt", 0, $hGUI) ;Anzeige der restichen Loginversuche EndIf Else ;Benutzer mit Zugangsberechtigung und gütiges Passwort wurden eingegeben MsgBox(64, "Login" & $iLoginTrys, "Sie haben sich erfolgreich angemeldet!", 0, $hGUI) GUIDelete() ;Gui löschen ExitLoop ;(GuiGetMsg-) Schleife verlassen EndIf EndSwitch WEnd ;hier der zuschützende Skriptteil