提取 TortoiseSVN 保存的密码

有没有办法提取 TortoiseSVN 保存的凭据?

108254 次浏览

根据下面的信息,似乎你可以以某种方式在本地解密它们..。

更新: 来自 TortiseSVN 社区的明确回答

当它们通过电线传送过来的时候 加密了,它们是用一个 握手和/或按协议键 连接的时间。

当它们在本地存储/读取时, 它们是通过 使用密钥的 WindowsCryptoAPI 绑定到你的 Windows 帐户。

本地加密的副本不可能 由服务器解密,因为 密钥是您帐户的本地密钥。

因此,当你连接(让我们说通过 HTTPS) ,您的客户端将获得 通过 适当的 WindowsAPI,然后包括 他们在 HTTPS 传输 加密 完整通信 客户端和服务器之间使用 SSL 证书,而不仅仅是 证件。

简短的回答: 您可以使用 TortoiseSVN 密码解密器轻松地显示您的缓存凭据,包括密码。

长话短说: 这个工具是这样工作的。

凭据保存在 %APPDATA%\Subversion\auth\的子目录中。从 先前的答案中列出的凭据如下:

  • svn.simple包含用于基本身份验证(用户名/密码)的凭据
  • svn.ssl.server包含 SSL 服务器证书
  • svn.username包含仅用户名身份验证的凭据(不需要密码)

第一个目录是感兴趣的目录。它似乎包含名称类似于 GUID 的文件; 对于已保存凭据的每个存储库,都有一个名称。

这些文件中的密码由 Windows 数据保护 API加密。上面的工具使用来自 显而易见的示例代码与这个 API 接口并执行解密。

为了使其正常工作,您必须能够访问当您选中“保存身份验证”复选框时运行的相同 Windows 用户帐户。这是因为 Windows 数据保护 API 使用与 Windows 帐户绑定的加密密钥。如果您失去了这个帐户(或者,我相信,如果管理员重置您的密码) ,那么您将不再能够解密的密码(除了 也许吧使用暴力/第三方工具第三方工具)。拥有一个具有相同用户名/密码(甚至可能是 SID)的新 Windows 帐户是不够的。