标签:powershell active directory域 adsi
需求:标题就是需求,想用密码库批量检测一下域内的弱密码。
解决:PowerShell来实现,不需要第三方工具,不怕被人偷了密码。
本脚本需要3个文件,空的即可,位于d:/pwd下
1 name.csv,保存需要测试的用户名列表
2 pwd.csv,保存需要测试的密码列表
3 name2.csv,保存验证成功的密码
域不能限制测试密码次数,必须管理员方式运行
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 当前测试密码$mysecret Write-Host "密码测试成功 -> " $($auth.Name) -foregroundcolor ‘green‘ $a = "密码测试成功 -> $UserName $mysecret" |Out-File -Append D:\pwd\name2.csv } } }
如果有密码验证成功的,会自动追加写入到D:\pwd\name2.csv下,同时,控制台会绿色显示那条记录。
在上面的脚本中,我注释掉了两行,可以显示密码验证失败的时候,以红色显示记录,考虑到不显示会更节省内存,所以注释掉了。这个脚本用到了很多PowerShell的知识点,有兴趣的同学可以自己看看。
本文出自 “九叔-微软私有云” 博客,请务必保留此出处http://jiushu.blog.51cto.com/972756/1675200
标签:powershell active directory域 adsi
原文地址:http://jiushu.blog.51cto.com/972756/1675200