#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 ;#comments-end ;und jetzt das eigentloche durch obigen Skriptcode geschützte Programm ;aus der Hilfe zu (? finde ich jetzt beim eigenen Kommentieren nicht) etwas angepasst Opt("MustDeclareVars", 1) ConsoleWrite(@WindowsDir&@CRLF) Global $sBmpNormal = @ScriptDir & "\Pictures\left.bmp" Global $sBmpHot = @ScriptDir & "\Pictures\leftHover.bmp" Global $sBmpPress = @ScriptDir & "\Pictures\leftPressed.bmp" Global $sBmpDisabled = @ScriptDir & "\Pictures\leftDisabled.bmp" Global $sBmpImage = @WindowsDir & "\pchealth\helpctr\System\blurbs\watermark_300x.bmp" Global $idBtn1, $idBtn2, $idBtn3, $idBtn4, $msg Global $hImagebtn1, $hImagebtn2, $hImagebtn3, $hImagebtn4 ConsoleWrite(FileExists($sBMPDisabled)&@CRLF) ConsoleWrite(FileExists($sBMPImage)&@CRLF) ;Caveat: Minimum Operating Systems: Windows XP. ;Image list with multiple images will only show the images ;other than the 1st image when Themes are used. Global $hGUI = GUICreate("Button Imagelists - Minimum OS: Windows XP", 400, 300) GUICtrlCreatePic(@WindowsDir & "\Web\Wallpaper\Windows XP.jpg", 0, 0, 400, 300) GUICtrlSetState(-1, $GUI_DISABLE) ;multi state image Bitmap $idBtn1 = GUICtrlCreateButton("This Way", 30, 30, 90, 32) GUICtrlSetTip(-1, "Multi state bitmap imagelist") $hImagebtn1 = _GUIImageList_Create(32, 32, 5, 3, 6) _GUIImageList_AddBitmap($hImagebtn1, $sBMPNormal);1 - Normal _GUIImageList_AddBitmap($hImagebtn1, $sBMPHot) ;2 - Hot _GUIImageList_AddBitmap($hImagebtn1, $sBMPPress) ;3 - Pressed _GUIImageList_AddBitmap($hImagebtn1, $sBMPDisabled);4 - Disabled _GUIImageList_AddBitmap($hImagebtn1, $sBMPNormal);5 - Defaulted _GUIImageList_AddBitmap($hImagebtn1, $sBMPNormal);6 - Stylus Hot (tablet computers only) _GUICtrlButton_SetImageList($idBtn1, $hImagebtn1) ;single state image Bitmap $idBtn2 = GUICtrlCreateButton("This Way", 30, 70, 90, 32) GUICtrlSetTip(-1, "Single bitmap imagelist") $hImagebtn2 = _GUIImageList_Create(24, 24, 5, 3) _GUIImageList_AddBitmap($hImagebtn2, $sBMPNormal);1 - Normal _GUICtrlButton_SetImageList($idBtn2, $hImagebtn2) ;single state image Icon $idBtn3 = GUICtrlCreateButton("Unlock", 30, 110, 90, 40) GUICtrlSetTip(-1, "Single icon imagelist") $hImagebtn3 = _GUIImageList_Create(32, 32, 5, 3,6) _GUIImageList_AddIcon($hImagebtn3, "msrating.dll", 10, True) _GUICtrlButton_SetImageList($idBtn3, $hImagebtn3) ;single state image Bitmap with overlayed text $idBtn4 = GUICtrlCreateButton("Help", 30, 160, 90, 90) GUICtrlSetTip(-1, "Single bitmap imagelist with overlayed text") GUICtrlSetFont(-1, 14, 800, -1, "Comic Sans MS") $hImagebtn4 = _GUIImageList_Create(80, 80, 5, 3) _GUIImageList_AddBitmap($hImagebtn4, $sBMPImage) _GUICtrlButton_SetImageList($idBtn4, $hImagebtn4, 4) GUISetState() While 1 $msg = GUIGetMsg() Switch $msg Case $GUI_EVENT_CLOSE Exit Case $idBtn1 Case $idBtn2 GUICtrlSetState($idBtn1, $GUI_DISABLE) Case $idBtn3 GUICtrlSetState($idBtn1, $GUI_Enable) Case $idBtn4 EndSwitch WEnd