测试用户帐户和密码的工具(测试登录)


46

是的,我可以启动虚拟机或远程设备并尝试输入密码...我知道...但是有没有一种工具或脚本可以模拟登录,足以确认或拒绝密码正确?

场景:

服务器服务帐户的密码“已忘记” ...但是我们认为我们知道它是什么。我想将凭据传递给某些东西,并用“正确的密码”或“错误的密码”将其踢回。

我什至考虑过传递该用户帐户和密码的驱动器映射脚本,以查看它是否成功映射了驱动器,但是迷失了使驱动器正常工作的逻辑……类似:

-脚本通过msgbox要求用户名-script通过msgbox要求密码-script成功将驱动器映射到每个人都可以访问的公用共享-script取消映射驱动器,如果成功-script返回弹出式msgbox,指出“正确密码”或“不正确”密码”

感谢您提供任何帮助...您会认为这是一种罕见的情况,不需要工具来支持它,但是......


什么操作系统?什么服务
Cristian Ciupitu 09年

@Cristian-Windows域帐户-只需验证密码是否正确
TheCleaner 2009年

Answers:


77
runas /u:yourdomain\a_test_user notepad.exe

该实用程序将提示您输入密码,如果提供了正确的密码,则记事本将启动,否则将产生错误1326:用户名或密码不正确


1
聪明的罗伯托。+1
TheCleaner 2014年

3
简单。优雅。我喜欢。
停泊

5
太棒了!与已接受的答案相比,此解决方案具有两个重要优点:1)可以直接在Windows XP +上使用,无需下载任何内容,2)与之相关的:因为它来自MS,所以不需要我信任我的某些来源不明的第三方工具的密码。
2015年

2
Serverfault IT管理员知道这一点,但是如果您是家庭用户,则可以通过网络搜索找到该答案(这是最好的答案–仅使用Windows随附的内容):在家用计算机上,yourdomain以上部分是您的计算机的名称。在控制面板>系统中找到它。这些值之一实际上就是“计算机名:”。例如,如果您的计算机名称是“ smith-laptop”,而用户名是“ joe”,则可以这样做runas /u:smith-laptop\joe notepad.exe
Daryn 2015年

1
在成功的身份验证中,您可能会收到类似1385: Logon failure: the user has not been granted the requested logon type at this computer.
–mwfearnley

11

Powershell脚本:

#usage: Test-UserCredential -username UserNameToTest -password (Read-Host)

Function Test-UserCredential { 
    Param($username, $password) 
    Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
    $ct = [System.DirectoryServices.AccountManagement.ContextType]::Machine, $env:computername 
    $opt = [System.DirectoryServices.AccountManagement.ContextOptions]::SimpleBind 
    $pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ct 
    $Result = $pc.ValidateCredentials($username, $password).ToString() 
    $Result 
} 

http://powershellcommunity.org/Forums/tabid/54/aft/8034/Default.aspx


new-object directoryservices.directoryentry "",$username,$password-返回值,凭据有效,异常​​,它们不起作用。从以下答案中可以得出它的整洁功能:serverfault.com/q/596602/57144
TessellatingHeckler,2017年

5

您还可以使用:

净使用\\计算机名\共享名[密码] / USER:]用户名]

如果远程计算机上有该名称的共享。或者,C$如果帐户是管理员,请使用。


1

您可以编写一个简单的vbscript函数来验证这一点……

Function GoodPassword(strAdminUsername, strAdminPassword, strNTDomain)
    Const ADS_SECURE_AUTHENTICATION = 1

    On Error Resume Next
    Set objIADS = GetObject("WinNT:").OpenDSObject("WinNT://" & _
                        strNTDomain, strAdminUserame, _
                        strAdminPassword, _
                        ADS_SECURE_AUTHENTICATION)
    if err.number = 0 then
       GoodPassword = True
    Else
       GoodPassword = False
    End If
    On Error GoTO 0
End Function

资料来源:

http://www.4guysfromrolla.com/webtech/061202-1.shtml

http://hsdn.net/category_3.html


请注意,这将在“ n”笔登录失败后将帐户锁定,“ n”笔您设置的任何策略。对于您使用的任何解决方案都应该始终如此。
mrTomahawk

另外,该检查可能会忽略本地用户的凭据,除非您进行了调整,并两次指定了用户名,例如this OpenDSObject("WinNT://domain/userName,user","userName", "password", 1)来源
阿哥斯蒂诺

1

在Windows桌面上,您可以通过SysInternals / MS本身使用Active Directory资源管理器:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/adexplorer


我假设您建议使用初始“​​连接到Active Directory”提示作为密码测试用例-这似乎可以完成我的测试。不正确的密码会很快提示“用户名或密码不正确”,因此这是一个不错的基于GUI的测试,可以通过一系列可能的密码进行操作。
JimNim

0

您可以使用许多众所周知的工具之一来测试密码。我看到的是L0phtcrack。也许甚至可以通过转储身份验证数据库来离线执行此操作。在“另一个世界”中,我们使用“开膛手约翰”之类的东西。


1
我不是在谈论破解密码或测试其强度。我说的是一种可以告诉我为特定帐户输入的密码是否是该帐户密码的工具。
TheCleaner

@TheCleaner:当然,您可以创建一个单词列表,其中包含特定帐户的所有可能密码,并将此列表用于一组帐户。或只有一个...用SMB或其他工具进行测试是一个非常糟糕的主意。它会填充您的日志,弄乱与文件服务器的会话,在DC和文件服务器上生成负载,等等。
PEra

0

使用上面的代码,检查所有域帐户是否使用了特定密码。

$usernames = Get-ADUser -Filter * | select -ExpandProperty SamAccountName

foreach ($username in $usernames) {
$password = "Password"
Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
$ct = [System.DirectoryServices.AccountManagement.ContextType]::Machine, $env:computername 
$opt = [System.DirectoryServices.AccountManagement.ContextOptions]::SimpleBind 
$pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ct 
$Result = $pc.ValidateCredentials("domain\$username", $password).ToString() 
If ($Result -eq "True") {echo "$username" >> C:\result.txt}
}

-1

为什么不使用带有身份验证的网络服务(telnet,POP,IMAP,SMTP等)?另一方面,如果您在计算机上,则可以su - userToTest从非priv帐户尝试。如果密码确定,如果外壳允许连接,则将在userToTest homedir中允许您

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.