需求:标题就是需求,想用密码库批量检测一下域内的弱密码。
解决:PowerShell来实现,不需要第三方工具,不怕被人偷了密码。
本脚本需要3个文件,空的即可,位于d:/pwd下
1 name.csv,保存需要测试的用户名列表
2 pwd.csv,保存需要测试的密码列表
3 name2.csv,保存验证成功的密码
域不能限制测试密码次数,必须管理员方式运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
echo
"本脚本需要3个文件,位于d:/pwd下"
echo
"1 name.csv,保存需要测试的用户名列表 "
echo
"2 pwd.csv,保存需要测试的密码列表"
echo
"3 name2.csv,保存验证成功的密码"
echo
"域不能限制测试密码次数,必须管理员方式运行"
$files
= (
Get-Childitem
d:\pwd\name2.csv).pspath
$content
=
get-content
$files
Import-Csv
-Path D:\pwd\name.csv |
foreach
{
$bb
=
"{0}"
-F
$_
.name
$UserName
=
"tech\"
+
"$bb"
Import-Csv
-Path D:\pwd\pwd.csv |
foreach
{
$pwd2
=
"{0}"
-F
$_
.pwd
$pass
=
ConvertTo-SecureString
-AsPlainText
$_
.pwd -Force
$cred
=
New-Object
System.Management.Automation.PSCredential(
$UserName
,
$Pass
)
$dCred
=
$cred
$dUsername
=
$dCred
.username
$dPassword
=
$dCred
.GetNetworkCredential().password
$currentDomain
=
"LDAP://"
+ (
[ADSI]
"
").distinguishedName
$auth = New-Object System.DirectoryServices.DirectoryEntry($CurrentDomain,$dUserName,$dPassword)
if ($auth.name -eq $null)
{
# Write-Host 当前测试用户$bb 当前测试密码$pwd2
# Write-Host "
验证密码失败.
" -foregroundcolor 'Red'
}
else
{ Write-Host 当前测试用户$bb 当前测试密码$pwd2
Write-Host "
密码测试成功 ->
" $($auth.Name) -foregroundcolor 'green'
$a = "
密码测试成功 ->
$UserName
$pwd2
"
|Out
-File
-Append D:\pwd\name2.csv
} } }
|
如果有密码验证成功的,会自动追加写入到D:\pwd\name2.csv下,同时,控制台会绿色显示那条记录。
在上面的脚本中,我注释掉了两行,可以显示密码验证失败的时候,以红色显示记录,考虑到不显示会更节省内存,所以注释掉了。这个脚本用到了很多PowerShell的知识点,有兴趣的同学可以自己看看。
本文转自 九叔 51CTO博客,原文链接:http://blog.51cto.com/jiushu/1675200,如需转载请自行联系原作者