kodius Posted April 13, 2009 Posted April 13, 2009 How do I validate the password the end user types and make sure it is complex 8 chars, one Capital and number? ; Get password to pass later in script $user_input = InputBox("Checkpoint Charlie", "Please Enter Password for My_Special_Account Account", "", "*") If $user_input = "" Then MsgBox(4096, "Checkpoint Charlie", "Can't Continue without a Password!", 10) Exit EndIf
Mat Posted April 13, 2009 Posted April 13, 2009 (edited) heres something I did, you cant continue until password is confirmed Do $Pass = InputBox ("Password", "Please enter your password", "", "*M") $Split = StringSplit ($Pass, "") If $Split[0] $ConfirmPass = InputBox ("Password", "Please Confirm your password", "", "*M") If $Pass <> $ConfirmPass Then MsgBox (48, "Error", "Passwords do not match!!") Until $Pass = $ConfirmPass Edit: put in *M so pass cannot be "" edit 2: Do $Pass = InputBox ("Password", "Please enter your password", "", "*M") $Split = StringSplit ($Pass, "") If $Split[0] < 8 Then MsgBox (48, "Error", "Pass is less than 8 character!") $ConfirmPass = "" ContinueLoop EndIf $n = 0 $u = 0 For $i = 1 to $Split[0] If StringIsDigit ($Split[$i]) = 1 Then $n = 1 If StringIsUpper ($Split[$i]) = 1 Then $u = 1 Next If $n <> 1 then MsgBox (48, "Error", "Pass contains no numbers!") $ConfirmPass = "" ContinueLoop ElseIf $u <> 1 then MsgBox (48, "Error", "Pass contains no capitals!") $ConfirmPass = "" ContinueLoop EndIf $ConfirmPass = InputBox ("Password", "Please Confirm your password", "", "*M") If $Pass <> $ConfirmPass Then MsgBox (48, "Error", "Passwords do not match!!") Until $Pass = $ConfirmPass Edited April 13, 2009 by mdiesel AutoIt Project Listing
kodius Posted April 13, 2009 Author Posted April 13, 2009 heres something I did, you cant continue until password is confirmed Do $Pass = InputBox ("Password", "Please enter your password", "", "*M") $Split = StringSplit ($Pass, "") If $Split[0] $ConfirmPass = InputBox ("Password", "Please Confirm your password", "", "*M") If $Pass <> $ConfirmPass Then MsgBox (48, "Error", "Passwords do not match!!") Until $Pass = $ConfirmPass Edit: put in *M so pass cannot be "" edit 2: Do $Pass = InputBox ("Password", "Please enter your password", "", "*M") $Split = StringSplit ($Pass, "") If $Split[0] < 8 Then MsgBox (48, "Error", "Pass is less than 8 character!") $ConfirmPass = "" ContinueLoop EndIf $n = 0 $u = 0 For $i = 1 to $Split[0] If StringIsDigit ($Split[$i]) = 1 Then $n = 1 If StringIsUpper ($Split[$i]) = 1 Then $u = 1 Next If $n <> 1 then MsgBox (48, "Error", "Pass contains no numbers!") $ConfirmPass = "" ContinueLoop ElseIf $u <> 1 then MsgBox (48, "Error", "Pass contains no capitals!") $ConfirmPass = "" ContinueLoop EndIf $ConfirmPass = InputBox ("Password", "Please Confirm your password", "", "*M") If $Pass <> $ConfirmPass Then MsgBox (48, "Error", "Passwords do not match!!") Until $Pass = $ConfirmPass Right on the money, REALLY appreciated!!
Mat Posted April 13, 2009 Posted April 13, 2009 (edited) any one else interested, look at this nice little func i ended up with, you can use combinations of complexity, so you can use 5 for instance (no numbers needed), or just use 7. Has someone released this kind of thing before? If not I think I'll improve this and make a nice little udf... expandcollapse popup; Complexity ; 0 - No complexity ; 1 - Mandatory entry ; 2 - 8 letters min ; 4 - Numbers must be included ; 8 - Capitals must be included _PasswordCreate (15) Func _PasswordCreate ($Complexity) Local $Pass, $Split, $n, $u, $ConfirmPass, $m If BitAND($complexity, 1) Then $m = "M" Else $m = "" EndIf Do $Pass = InputBox ("Password", "Please enter your password", "", "*" & $m) If @Error Then Return SetError (1); Pass box cancelled $Split = StringSplit ($Pass, "") If BitAND($complexity, 2) Then If $Split[0] < 8 Then MsgBox (48, "Error", "Pass is less than 8 character!") $ConfirmPass = "" ContinueLoop EndIf EndIf If BitAND($complexity, 4) Then $n = 0 For $i = 1 to $Split[0] If StringIsDigit ($Split[$i]) = 1 Then $n = 1 Next If $n <> 1 then MsgBox (48, "Error", "Pass contains no numbers!") $ConfirmPass = "" ContinueLoop EndIf EndIf If BitAND($complexity, 8) Then $u = 0 For $i = 1 to $Split[0] If StringIsUpper ($Split[$i]) = 1 Then $u = 1 Next If $u <> 1 then MsgBox (48, "Error", "Pass contains no capitals!") $ConfirmPass = "" ContinueLoop EndIf EndIf $ConfirmPass = InputBox ("Password", "Please Confirm your password", "", "*") If $Pass <> $ConfirmPass Then MsgBox (48, "Error", "Passwords do not match!!") Until $Pass = $ConfirmPass Return $Pass EndFunc Edited April 13, 2009 by mdiesel AutoIt Project Listing
CodyBarrett Posted April 13, 2009 Posted April 13, 2009 i havent seen very many udf's like this.. pretty cool [size="1"][font="Tahoma"][COMPLETED]-----[FAILED]-----[ONGOING]VolumeControl|Binary Converter|CPU Usage| Mouse Wrap |WinHide|Word Scrammbler|LOCKER|SCREEN FREEZE|Decisions Decisions|Version UDF|Recast Desktop Mask|TCP Multiclient EXAMPLE|BTCP|LANCR|UDP serverless|AIOCR|OECR|Recast Messenger|AU3C|Tik-Tak-Toe|Snakes & Ladders|BattleShips|TRON|SNAKE_____________________[u]I love the Helpfile it is my best friend.[/u][/font][/size]
Mat Posted April 13, 2009 Posted April 13, 2009 i havent seen very many udf's like this.. pretty cool check out example scripts now for the script, alongside password enter. I've done quite a bit of work on it.here is the thread AutoIt Project Listing
GEOSoft Posted April 14, 2009 Posted April 14, 2009 @mdiesel Here's another method that you might want to fine tune and play with. expandcollapse popupGlobal $sPass $sUserPass = _PassWord() If @Error Then MsgBox(0, "Error " & @Error, "No Password") Else MsgBox(0, "Results", $sUserPass) EndIf Func _Password() $sPass = "" $sPass = InputBox("Password", "Please enter your password", "", "*") If $sPass Then If StringLen($sPass) >= 8 Then $iValid = 0 For $i = 1 To 3 $iValid += _Check($i) Next ;MsgBox(0, "TEST", $iValid) If $iValid <3 Then _Error() _Password() Else $sVerify = InputBox("Confirm Password", "Please enter your password again", "", "*") If NOT $sVerify Then Return SetError(1) If $sVerify == $sPass Then ;MSGBOX(0, "TEST 2", "Verified") Return $sPass Else ;MsgBox(0, "TEST 3", $sPass & @CRLF & $sVerify) _Password() EndIF EndIf Else _Error() _PassWord() EndIf Else Return SetError(1) EndIf EndFunc Func _Error() MsgBox(0,"Invalid Password", "The Password must be at least 8 Characters and contain" & _ " a combination of Upper and Lower case letters with at least 1 number.") EndFunc Func _Check($iChk) Switch $iChk Case 1 $sChk = "[a-z]" Case 2 $sChk = "[A-Z]" Case 3 $sChk = "[0-9]" Case Else Return 0 EndSwitch If StringRegExp($SPass, $sChk) Then Return 1 Return 0 EndFunc George Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.*** The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number. Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else. "Old age and treachery will always overcome youth and skill!"
ResNullius Posted April 14, 2009 Posted April 14, 2009 For another password complexity tester: http://www.autoitscript.com/forum/index.ph...st&p=410930
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now