Sign in to follow this  
Followers 0
guinness

PasswordValid - UDF-like example of validating a password.

21 posts in this topic

#1 ·  Posted (edited)

I created a UDF-like example for validating a password. This is proof of concept and not a "fully featured" UDF. Take it apart, break it, request something better, your choice!

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

; Constants for the PasswordValid object
Global Const $PASSWORDVALID_GUID = '501E91C9-58DC-4FA0-ABF8-212914D9EFDD', $PASSWORDVALID_FLAG_VALID = 0
Global Enum $PASSWORDVALID_CONSECUTIVE, $PASSWORDVALID_ID, $PASSWORDVALID_INTS, $PASSWORDVALID_LENGTH, $PASSWORDVALID_LOWERCASE, _
        $PASSWORDVALID_SPACE, $PASSWORDVALID_SPECIAL, $PASSWORDVALID_UPPERCASE, $PASSWORDVALID_MAX

; Enumeration flags
Global Enum Step * 2 $PASSWORDVALID_FLAG_CONSECUTIVE, _
        $PASSWORDVALID_FLAG_INTS, _
        $PASSWORDVALID_FLAG_LENGTH, _
        $PASSWORDVALID_FLAG_LOWERCASE, _
        $PASSWORDVALID_FLAG_SPACE, _
        $PASSWORDVALID_FLAG_SPECIAL, _
        $PASSWORDVALID_FLAG_UPPERCASE, _
        $PASSWORDVALID_FLAG_UNKNOWN

#cs
    > _PasswordValid => Create a password object
    > _PasswordValid_AllowConsecutive => Set to True/False to allow consecutive characters e.g. the S in Password. Default is True
    > _PasswordValid_AllowSpace => Set to True/False to allow spaces. Default is False
    > _PasswordValid_Ints => Set a value for the minimum number of integers. Default is 0
    > _PasswordValid_Length => Set a value for the minimum number of characters. Default is 0
    > _PasswordValid_Lowercase => Set a value for the minimum number of lowercase characters. Default is 0
    > _PasswordValid_Special => Set a value for the minimum number of special characters (ASCII - (33-47, 58-64, 91-96, 123-126) see below). Default is 0
    > _PasswordValid_Uppercase => Set a value for the minimum number of uppercase characters. Default is 0
    > _PasswordValid_Validate => Check if a password matches the specs set

    @extended returns the reason as to why the password passed or failed. Use the following functions to determine the reason as to why
    > _PasswordValid_Error_IsConsecutive => The password failed due to consecutive characters
    > _PasswordValid_Error_IsInts => The password failed due to the minimum number of integers
    > _PasswordValid_Error_IsLength => The password failed due to the minimun length
    > _PasswordValid_Error_IsLowercase => The password failed due the minimum number of lowercase characters
    > _PasswordValid_Error_IsSpace => The password failed due to usage of spaces
    > _PasswordValid_Error_IsSpecial => The password failed due to the minimum number of special characters
    > _PasswordValid_Error_IsUnknown => The object was invalid
    > _PasswordValid_Error_IsUppercase => The password failed due to the minimum number of uppercase characters
    > _PasswordValid_Error_IsValid => The password was valid

    All functions require the object returned by _PasswordValid() to be passed as the first parameter & the second parameter to set the value

    Note: _PasswordValid() doesn't require any parameters to be passed & the second parameter of _PasswordValid_Validate() is the password to validate
    Passwords are case-sensitive, therefore Password is different to that of PasSword

    Special characters include: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
#ce

Example()

Func Example()
    ; Create a password object
    Local $hPassword = _PasswordValid()

    ; Assign the password object with allowing a minimum of 2 integers
    _PasswordValid_Ints($hPassword, 2)

    ; Assign the password object with allowing a minimum of 6 characters
    _PasswordValid_Length($hPassword, 6)

    ; Assign the password object with allowing a minimum of 2 lowercase characters
    _PasswordValid_Lowercase($hPassword, 2)

    ; Allow characters to follow after each other
    _PasswordValid_AllowConsecutive($hPassword, True)

    ; This password is set to fail, but it's to showcase the @extended return values
    Local Const $bIsValid = _PasswordValid_Validate($hPassword, '4u0')
    Local Const $iErrorFlags = @extended

    ConsoleWrite('The password 4u0 ' & ($bIsValid ? 'passed' : 'failed') & ' the validation. See below for more details.' & @CRLF)

    ; Custom function to output to SciTE's console of what exactly failed
    PasswordError($iErrorFlags)

    ; Display the result
    MsgBox($MB_SYSTEMMODAL, '', 'Is the password 4ut01It valid: ' & _PasswordValid_Validate($hPassword, '4ut01It'))

    ; Destroy the password object
    $hPassword = Null
EndFunc   ;==>Example

; An example of parsing the @extended flag to determine what exactly failed
Func PasswordError($iFlags = @extended)
    If _PasswordValid_Error_IsValid($iFlags) Then
        ConsoleWrite('The password was valid.' & @CRLF)
    EndIf
    If _PasswordValid_Error_IsConsecutive($iFlags) Then
        ConsoleWrite('The password contained repeating characters e.g. S in Password.' & @CRLF)
    EndIf
    If _PasswordValid_Error_IsInts($iFlags) Then
        ConsoleWrite('The password didn''t contain the minimum number of digits.' & @CRLF)
    EndIf
    If _PasswordValid_Error_IsLength($iFlags) Then
        ConsoleWrite('The password didn''t match the miminum length.' & @CRLF)
    EndIf
    If _PasswordValid_Error_IsLowercase($iFlags) Then
        ConsoleWrite('The password didn''t contain the minimum number of lowercase characters.' & @CRLF)
    EndIf
    If _PasswordValid_Error_IsSpace($iFlags) Then
        ConsoleWrite('The password contained space(s).' & @CRLF)
    EndIf
    If _PasswordValid_Error_IsSpecial($iFlags) Then
        ConsoleWrite('The password didn''t contain the minimum number of special characters.' & @CRLF)
    EndIf
    If _PasswordValid_Error_IsUppercase($iFlags) Then
        ConsoleWrite('The password didn''t contain the minimum number of uppercase characters.' & @CRLF)
    EndIf
    If _PasswordValid_Error_IsUnknown($iFlags) Then
        ConsoleWrite('The password object wasn''t valid.' & @CRLF)
    EndIf

    Return True
EndFunc   ;==>PasswordError

#Region PasswordValid UDF functions
Func _PasswordValid()
    Local $aPasswordValid[$PASSWORDVALID_MAX]
    For $i = 0 To $PASSWORDVALID_MAX - 1
        ; Set all fields to zero
        $aPasswordValid[$i] = 0
    Next

    ; Set the GUID to validate that it's a valid API later on
    $aPasswordValid[$PASSWORDVALID_ID] = $PASSWORDVALID_GUID

    ; Set the default of "AllowConsecutive" to True
    _PasswordValid_AllowConsecutive($aPasswordValid, True)

    ; Set the default of "AllowSpace" to False
    _PasswordValid_AllowSpace($aPasswordValid, False)

    Return $aPasswordValid
EndFunc   ;==>_PasswordValid

Func _PasswordValid_AllowConsecutive(ByRef $aPasswordValid, $bValue)
    Local $bReturn = False
    If __PasswordValid_IsAPI($aPasswordValid) And IsBool($bValue) Then
        $bReturn = True
        $aPasswordValid[$PASSWORDVALID_CONSECUTIVE] = $bValue
    EndIf

    Return $bReturn
EndFunc   ;==>_PasswordValid_AllowConsecutive

Func _PasswordValid_AllowSpace(ByRef $aPasswordValid, $bValue)
    Local $bReturn = False
    If __PasswordValid_IsAPI($aPasswordValid) And IsBool($bValue) Then
        $bReturn = True
        $aPasswordValid[$PASSWORDVALID_SPACE] = $bValue
    EndIf

    Return $bReturn
EndFunc   ;==>_PasswordValid_AllowSpace

Func _PasswordValid_Ints(ByRef $aPasswordValid, $iValue)
    Local $bReturn = False
    If __PasswordValid_IsAPI($aPasswordValid) And (IsInt($iValue) Or StringIsInt($iValue)) Then
        $bReturn = True
        $aPasswordValid[$PASSWORDVALID_INTS] = Int($iValue)
    EndIf

    Return $bReturn
EndFunc   ;==>_PasswordValid_Ints

Func _PasswordValid_Length(ByRef $aPasswordValid, $iValue)
    Local $bReturn = False
    If __PasswordValid_IsAPI($aPasswordValid) And (IsInt($iValue) Or StringIsInt($iValue)) Then
        $bReturn = True
        $aPasswordValid[$PASSWORDVALID_LENGTH] = Int($iValue)
    EndIf

    Return $bReturn
EndFunc   ;==>_PasswordValid_Length

Func _PasswordValid_Lowercase(ByRef $aPasswordValid, $iValue)
    Local $bReturn = False
    If __PasswordValid_IsAPI($aPasswordValid) And (IsInt($iValue) Or StringIsInt($iValue)) Then
        $bReturn = True
        $aPasswordValid[$PASSWORDVALID_LOWERCASE] = Int($iValue)
    EndIf

    Return $bReturn
EndFunc   ;==>_PasswordValid_Lowercase

Func _PasswordValid_Special(ByRef $aPasswordValid, $iValue)
    Local $bReturn = False
    If __PasswordValid_IsAPI($aPasswordValid) And (IsInt($iValue) Or StringIsInt($iValue)) Then
        $bReturn = True
        $aPasswordValid[$PASSWORDVALID_SPECIAL] = Int($iValue)
    EndIf

    Return $bReturn
EndFunc   ;==>_PasswordValid_Special

Func _PasswordValid_Uppercase(ByRef $aPasswordValid, $iValue)
    Local $bReturn = False
    If __PasswordValid_IsAPI($aPasswordValid) And (IsInt($iValue) Or StringIsInt($iValue)) Then
        $bReturn = True
        $aPasswordValid[$PASSWORDVALID_UPPERCASE] = Int($iValue)
    EndIf

    Return $bReturn
EndFunc   ;==>_PasswordValid_Uppercase

Func _PasswordValid_Validate(ByRef $aPasswordValid, $sPassword)
    Local $iFlags = $PASSWORDVALID_FLAG_UNKNOWN
    If __PasswordValid_IsAPI($aPasswordValid) Then
        $iFlags = $PASSWORDVALID_FLAG_VALID

        Local $bIsValid = False
        If Not $aPasswordValid[$PASSWORDVALID_CONSECUTIVE] Then
            $bIsValid = Not StringRegExp($sPassword, '(.)\1')
            If Not $bIsValid Then
                $iFlags = BitOR($iFlags, $PASSWORDVALID_FLAG_CONSECUTIVE)
            EndIf
        EndIf

        If $aPasswordValid[$PASSWORDVALID_INTS] > 0 Then
            $bIsValid = UBound(StringRegExp($sPassword, '\d', $STR_REGEXPARRAYGLOBALMATCH)) >= $aPasswordValid[$PASSWORDVALID_INTS]
            If Not $bIsValid Then
                $iFlags = BitOR($iFlags, $PASSWORDVALID_FLAG_INTS)
            EndIf
        EndIf

        If $aPasswordValid[$PASSWORDVALID_LENGTH] > 0 Then
            $bIsValid = UBound(StringRegExp($sPassword, '\S', $STR_REGEXPARRAYGLOBALMATCH)) >= $aPasswordValid[$PASSWORDVALID_LENGTH]
            If Not $bIsValid Then
                $iFlags = BitOR($iFlags, $PASSWORDVALID_FLAG_LENGTH)
            EndIf
        EndIf

        If $aPasswordValid[$PASSWORDVALID_LOWERCASE] > 0 Then
            $bIsValid = UBound(StringRegExp($sPassword, '[a-z]', $STR_REGEXPARRAYGLOBALMATCH)) >= $aPasswordValid[$PASSWORDVALID_LOWERCASE]
            If Not $bIsValid Then
                $iFlags = BitOR($iFlags, $PASSWORDVALID_FLAG_LOWERCASE)
            EndIf
        EndIf

        If Not $aPasswordValid[$PASSWORDVALID_SPACE] Then
            $bIsValid = Not StringRegExp($sPassword, '\s')
            If Not $bIsValid Then
                $iFlags = BitOR($iFlags, $PASSWORDVALID_FLAG_SPACE)
            EndIf
        EndIf

        If $aPasswordValid[$PASSWORDVALID_SPECIAL] > 0 Then
            $bIsValid = UBound(StringRegExp($sPassword, '[[:punct:]]', $STR_REGEXPARRAYGLOBALMATCH)) >= $aPasswordValid[$PASSWORDVALID_SPECIAL]
            If Not $bIsValid Then
                $iFlags = BitOR($iFlags, $PASSWORDVALID_FLAG_SPECIAL)
            EndIf
        EndIf

        If $aPasswordValid[$PASSWORDVALID_UPPERCASE] > 0 Then
            $bIsValid = UBound(StringRegExp($sPassword, '[A-Z]', $STR_REGEXPARRAYGLOBALMATCH)) >= $aPasswordValid[$PASSWORDVALID_UPPERCASE]
            If Not $bIsValid Then
                $iFlags = BitOR($iFlags, $PASSWORDVALID_FLAG_UPPERCASE)
            EndIf
        EndIf
    EndIf

    Return SetExtended($iFlags, $iFlags == $PASSWORDVALID_FLAG_VALID)
EndFunc   ;==>_PasswordValid_Validate

; Internal function for checking the opaque array is a valid API
Func __PasswordValid_IsAPI(ByRef $aPasswordValid)
    Return UBound($aPasswordValid) == $PASSWORDVALID_MAX And $aPasswordValid[$PASSWORDVALID_ID] == $PASSWORDVALID_GUID
EndFunc   ;==>__PasswordValid_IsAPI

; @extended parsing relating functions

; Error was related to consecutive values
Func _PasswordValid_Error_IsConsecutive($iFlags)
    Return __PasswordValid_Error_BitValidator($iFlags, $PASSWORDVALID_FLAG_CONSECUTIVE)
EndFunc   ;==>_PasswordValid_Error_IsConsecutive

; Error was related to incorrect number of integers
Func _PasswordValid_Error_IsInts($iFlags)
    Return __PasswordValid_Error_BitValidator($iFlags, $PASSWORDVALID_FLAG_INTS)
EndFunc   ;==>_PasswordValid_Error_IsInts

; Error was related to an invalid length
Func _PasswordValid_Error_IsLength($iFlags)
    Return __PasswordValid_Error_BitValidator($iFlags, $PASSWORDVALID_FLAG_LENGTH)
EndFunc   ;==>_PasswordValid_Error_IsLength

; Error was related to incorrect number of lowercase characters
Func _PasswordValid_Error_IsLowercase($iFlags)
    Return __PasswordValid_Error_BitValidator($iFlags, $PASSWORDVALID_FLAG_LOWERCASE)
EndFunc   ;==>_PasswordValid_Error_IsLowercase

; Error was related to containing spaces
Func _PasswordValid_Error_IsSpace($iFlags)
    Return __PasswordValid_Error_BitValidator($iFlags, $PASSWORDVALID_FLAG_SPACE)
EndFunc   ;==>_PasswordValid_Error_IsSpace

; Error was related to incorrect number of uppercase characters
Func _PasswordValid_Error_IsSpecial($iFlags)
    Return __PasswordValid_Error_BitValidator($iFlags, $PASSWORDVALID_FLAG_SPECIAL)
EndFunc   ;==>_PasswordValid_Error_IsSpecial

; Error was related to an unknown error
Func _PasswordValid_Error_IsUnknown($iFlags)
    Return __PasswordValid_Error_BitValidator($iFlags, $PASSWORDVALID_FLAG_UNKNOWN)
EndFunc   ;==>_PasswordValid_Error_IsUnknown

; Error was related to incorrect number of uppercase characters
Func _PasswordValid_Error_IsUppercase($iFlags)
    Return __PasswordValid_Error_BitValidator($iFlags, $PASSWORDVALID_FLAG_UPPERCASE)
EndFunc   ;==>_PasswordValid_Error_IsUppercase

Func _PasswordValid_Error_IsValid($iFlags)
    Return $iFlags == $PASSWORDVALID_FLAG_VALID
EndFunc   ;==>_PasswordValid_Error_IsValid

; Internal function for the BitAND checking
Func __PasswordValid_Error_BitValidator($iFlags, $iFlag)
    Return BitAND($iFlags, $iFlag) == $iFlag
EndFunc   ;==>__PasswordValid_Error_BitValidator
#EndRegion PasswordValid UDF functions
Edited by guinness

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites



 

Added: _PasswordValid_AllowConsecutive() to check if repeating characters are used.

Fixed: Issue when setting allow spaces in a password.

 

I am thinking about setting @extended and then the end user can use BitAND($iFlag,.. will determine what section failed. Let me know.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

 

Added: @extended value to determine what exactly failed. Use BitAND(@extended, $PASSWORDVALID_FLAG_* ) to determine what failed. See the example PasswordError() of how to achieve this.

Well I thought my idea was pretty easy to add, so I went ahead and did it.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

Very cool Guiness!

Share this post


Link to post
Share on other sites

Very cool Guiness!

Well I'm sure more "things" can be added.

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

 

Added: List of valid symbols. No changes to the functions were made.

I believe this UDF is pretty much "feature" complete.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

Any ideas on how this can be improved?


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

#8 ·  Posted (edited)

Allow valid unicode sequences.

Allow any binary sequence.

Edited by czardas

Share this post


Link to post
Share on other sites

When you say binary sequence, you mean 0-9A-Fa-f?


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

#10 ·  Posted (edited)

Perhaps I ought to have said incorrect surrogate pair sequences and unassigned code points although I believe this amounts to the same thing - any combination. Just some ideas you might be able to include.

Edited by czardas

Share this post


Link to post
Share on other sites

Could you provide an example of what is valid so I know we're on the same (code)page. Thanks.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

#12 ·  Posted (edited)

This is a valid sequence:

High order surrogate.. 0xD800 To 0xDBFF followed by a ==>
Low order surrogate... 0xDC00 To 0xDFFF

Edited by czardas

Share this post


Link to post
Share on other sites

Thanks.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

Here's a very quick attempt from me to make the code a little bit smaller/cleaner. Should be possible to define any rules you like based on an array and then an upper and lower limit.

Global Enum Step *2 $PASSWORDVALID_FLAG_CONSECUTIVE, $PASSWORDVALID_FLAG_INTS, $PASSWORDVALID_FLAG_LENGTH, $PASSWORDVALID_FLAG_LOWERCASE, $PASSWORDVALID_FLAG_NOSPACE, $PASSWORDVALID_FLAG_SPECIAL, _
        $PASSWORDVALID_FLAG_UPPERCASE


Func _Password_Validate($sPassword, $iFlags = 0, $iMinInts = 0, $iMinLength = 0, $iMinLowercase = 0, $iMinPunct = 0, $iMinUppercase = 0)
    Local $aRegexps[][3] = [ _
            ["(.)\1", 0, 0], _
            ["[0-9]", $iMinInts, -1], _
            [".", $iMinLength, -1], _
            ["[a-z]", $iMinLowercase, -1], _
            ["\s", 0, 0], _
            ["[[:punct:]]", $iMinPunct, -1], _
            ["[A-Z]", $iMinUppercase, -1]]

    Local $iRet = 0, $count
    For $i = 0 To UBound($aRegexps) - 1
        If Not BitAND($iFlags, BitShift(1, -$i)) Then ContinueLoop

        $count = UBound(StringRegExp($sPassword, $aRegexps[$i][0], 3))

        If $count < $aRegexps[$i][1] Or ($aRegexps[$i][2] >= 0 And $count > $aRegexps[$i][2]) Then $iRet += BitShift(1, -$i)
    Next

    Return $iRet
EndFunc   ;==>_Password_Validate

Func _Password_ErrorMsg($iRet)
    Local Const $aMessages[] = ["Consecutive characters cannnot be the same.", _
            "Not enough digits.", _
            "Password not long enough", _
            "Not enough lowercase characters.", _
            "Spaces not allowed in password.", _
            "Not enough punctuation", _
            "Not enough uppercase letters"]

    Local $iCount = 0, $sRet = ""
    For $i = 0 To UBound($aMessages) - 1
        If BitAND($iRet, BitShift(1, -$i)) Then
            $iCount += 1
            $sRet &= @CRLF & $aMessages[$i]
        EndIf
    Next

    If Not $iCount Then
        $sRet = "Password is good :)"
    Else
        $sRet = $iCount & " problems with the password: " & $sRet
    EndIf

    Return $sRet
EndFunc   ;==>_Password_ErrorMsg

Share this post


Link to post
Share on other sites

#15 ·  Posted (edited)

OK, thanks. Good to have alternative methods.

It's smaller, but I wouldn't necessarily say cleaner. I designed it the way I did so if I wanted to changed the likes of only $iMinPunct, then I didn't have to specify defaults for the others. There was method to my madness -_0

Edit: People should use the current beta of AutoIt to run Mat's example.

Edited by guinness

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

#16 ·  Posted (edited)

Thanks.

 

You are welcome. There are probably far too many questionable unicode sequences for it to be worth digging much deeper than this. Surrogates (being easy to identify) must appear in pairs in the correct order. Although the likelyhood of a person entering such a password is practically zero, a software product may have no restrictions on password character input.

Edit

Hmm, let me think: see next post.

Edited by czardas

Share this post


Link to post
Share on other sites

#17 ·  Posted (edited)

Look at this roadmap to the BMP. Notice there are several reserved regions and some ranges are simply skipped. I'm not exactly sure exactly what is valid unicode and what isn't, but this link is where you need to look.

Edited by czardas

Share this post


Link to post
Share on other sites

OK, thanks. Good to have alternative methods.

It's smaller, but I wouldn't necessarily say cleaner. I designed it the way I did so if I wanted to changed the likes of only $iMinPunct, then I didn't have to specify defaults for the others. There was method to my madness -_0

Edit: People should use the current beta of AutoIt to run Mat's example.

Yep, and I saw that. I was just bored and wanted to write a version using arrays.

Share this post


Link to post
Share on other sites

Now I understand.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

Updated the example and functions for improved clarity.


_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0