Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get System minimum password length and complexity

Tags:

delphi

In local security policy (PC-Control panel-Administration-local security policy) there is a parameter "Minimum length of the password" and a parameter "Password must meet complexity requirements" (true/false). How can I read them in Delphi (for WinXpSp3-Win2003-Vista-Win7-Win2008(+r2))?

enter image description here

I'm looking for something like:

Function DetectSystemMinPassLength:integer;
begin
//?
end;

Function DetectSystemPassComplexity:boolean;
begin
//?
end;

Additional question: Does there exist in Delphi (or WinApi) function which can check if a given password conforms to system policies (or set)?

For example:

Function MyCheckPassComplexity (Password:string):boolean;
begin
// ???
end;

use

MyCheckPassComplexity (' 12345 '); //result False

MyCheckPassComplexity (' MyCoolPassword9999 '); //result True
like image 528
Gu. Avatar asked Nov 29 '11 12:11

Gu.


People also ask

What is the minimum password length you should have for your password?

When a password is properly generated, 11–15 characters will provide more than enough protection for the everyday user. However, we know that most people feel more comfortable and secure with a longer version.

What command will ensure passwords meet a minimum specified length?

First, launch the group policy editor by pressing Windows+R, typing “gpedit. msc” into the box, and then pressing the Enter key. Navigate to Computer configuration > Windows settings > Security settings > Account policies > Password policy. Once here, locate the setting “Minimum Password Length” and double-click on it.


1 Answers

Usually to read a local or group policy setting you must use the Group Policy Settings Reference for Windows and Windows Server which basically is a set of excel files which contains the windows registry keys where is stored such info. unfortunately in this case if you check such reference for these Account policies (Enforce password history, Maximum password age, Minimum password age, Minimum password length) you will find this message:

Password Policy security settings are not registry keys.

Exist a set of WMI classes in the root\RSOP\Computer namespace like RSOP_SecuritySettingBoolean, RSOP_SecuritySettingNumeric , RSOP_SecuritySettings to access the an account policy but these classes only works (I mean retrieve information) on systems which is are in a domain, but it does not work in a workgroup.

For the moment I think which you best option is export the local policies to a ini file using this command (and then parse the result using a TIniFile class)

secedit.exe /export /cfg C:\Output\Policy.Ini

This command will create a file like this

[Unicode]
Unicode=yes
[System Access]
MinimumPasswordAge = 0
MaximumPasswordAge = 42
MinimumPasswordLength = 0
PasswordComplexity = 0
PasswordHistorySize = 0

About your second question to validate a password you can use the NetValidatePasswordPolicy WinAPI function.

like image 105
RRUZ Avatar answered Oct 23 '22 03:10

RRUZ