> If anyone knows how to query a password against complexity requirements,
> I'd like to know how.
When it comes to string validation the answer is almost always "Regular
Expressions". The vbscript example below tests arbitrary string for
compliance with "Password must meet security requirements" policy in
Windows. (watch for line wraps)
==8<===============
Option Explicit
Dim arrReq1(0),arrReq2(3),iReq,sErr,sArg,iNum,i
'Mandatory Requirement
'=====================
arrReq1(0) = ".{8,128}" ' length is 8 to 128 chars
'Group Requirements
'==================
iReq = 3 ' Must meet this number
' of requirements below
arrReq2(0) = "(?=.*[a-z])" ' contains lower letter
arrReq2(1) = "(?=.*[A-Z])" ' contains upper letter
arrReq2(2) = "(?=.*\d)" ' contains digit
arrReq2(3) = "(?=.*[^a-zA-Z\d])" ' contains non-alphanumeric
sErr = "Password does not meet security requirements"
iNum = 0
'String being tested against req's
'=================================
'sArg = "passwor"
'sArg = "password"
'sArg = "Password"
'sArg = "P4ssword"
sArg = "P4s$word"
If not ArgVrf(sArg,arrReq1(0)) Then
WScript.Echo sErr
WScript.Quit 1
End If
For i = LBound(arrReq2) to UBound(arrReq2)
If ArgVrf(sArg,arrReq2(i)) Then iNum = iNum+1
Next
If iNum<iReq Then
WScript.Echo sErr
WScript.Quit 1
End If
WScript.Echo "Test passed"
Function ArgVrf(arg,pattern)
Dim objRegExp
Set objRegExp = New RegExp
objRegExp.IgnoreCase = false
objRegExp.Pattern = pattern
ArgVrf = objRegExp.Test(arg)
Set objRegExp = Nothing
End Function
==8<===============
--
Al
List info : http://www.activedir.org/List.aspx
List FAQ : http://www.activedir.org/ListFAQ.aspx
List archive: http://www.mail-archive.com/activedir%40mail.activedir.org/