检索 SQL Server 密码






2.83/5 (10投票s)
此工具用于检索遗忘的 SQL Server 密码和已注册服务器的密码。

引言
此工具用于检索遗忘的 SQL Server 密码。SQL Server 创建用户的密码哈希值,该哈希值存储在 master 数据库 (sysxlogins
) 中。用户的密码转换为 Unicode,并在末尾附加盐值,然后使用 SHA 1 生成哈希值。当用户尝试登录时,将相同的盐值添加到密码中,并将生成的哈希值与记录中的哈希值进行比较。如果它们匹配,则授予访问权限。哈希值针对区分大小写的密码和其大写形式分别生成两次。显然,大写“版本”更容易破解;一旦我们知道它,找到区分大小写的版本就易如反掌。事实上,如果加密方案将从大写版本创建哈希值(使用相同的盐值)并存储它们,那么在您的系统中使用区分大小写的密码几乎没有意义。区分大小写的密码只有在对其大写对应项保密的情况下才能改进。
此工具使用暴力破解算法来破解 SQL Server 密码。显然,复杂且长的密码可能需要几天才能检索到。
已注册的服务器
可以使用 SQL DMO(分布式管理对象)轻松检索 SQL Server 企业管理器中已注册 SQL Server 用户的密码和登录 ID。创建文件 SQLPasswords.vbs 并用记事本打开它。添加以下代码并保存
Dim pApplication
Set pApplication = CreateObject("SQLDMO.Application")
Call EnumGroups(pApplication.ServerGroups)
Sub EnumGroups(ByVal pGroups)
Dim pServerGroup
Dim pRegServer
For Each pServerGroup In pGroups
If pServerGroup.RegisteredServers.Count > 0 Then
Msgbox "Group :" & pServerGroup.Name
For Each pRegServer In pServerGroup.RegisteredServers
Msgbox "Name:" & pRegServer.Name
Msgbox "Login:" & pRegServer.Login
Msgbox "Password:" & pRegServer.Password
Next
End If
If pServerGroup.ServerGroups.Count > 0 Then
Call EnumGroups(pServerGroup.ServerGroups)
End If
Next
End Sub
运行脚本,这将使用您的帐户检索已注册服务器的密码。如果在注册 SQL Server 时未选中“始终提示登录名和密码”复选框,则登录 ID 和密码将以弱加密形式存储在以下注册表键中:HKEY_CURRENT_USER\SOFTWARE\Microsoft\MSSQLServer\SQLEW\Registered Server X。
建议
为了安全地使用 SQL Server,Microsoft 建议使用 Windows 集成安全性。在 Windows 集成安全性模式下,密码从不存储,因为您的 Windows 域登录名用作数据库服务器的安全标识符。
历史
- 2006 年 10 月 5 日:初始发布