提取TortoiseSVN保存的密码

130

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

2个回答

238

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

详细回答:以下是该工具的工作原理。

凭证保存在%APPDATA%\Subversion\auth\的子目录中。从这个之前的答案列出它们如下:

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

第一个目录是我们感兴趣的目录。它似乎包含名称看起来像 GUID 的文件;每个文件对应一个您保存凭据的仓库。

这些文件中的密码是由Windows Data Protection API加密的。上述工具使用Obviex的样例代码与此 API 进行交互并进行解密。

为了使其工作,您必须在检查“保存身份验证”复选框时使用相同的 Windows 用户帐户。这是因为 Windows Data Protection API 使用与您的 Windows 帐户相关联的加密密钥。如果您丢失此帐户(或者管理员重置密码),则将无法再解密密码(除非通过暴力破解/第三方工具dpapick.com)。新的具有相同用户名/密码(或可能甚至 SID)的 Windows 帐户不足以实现此目的。


8
根据下面的信息,听起来你可能可以以某种方式在本地解密它们...
更新:TortiseSVN社区给出了明确的答案。
当它们通过网络发送时进行加密,使用握手和/或连接时商定的密钥进行加密。
当它们被本地存储/读取时,它们通过Windows Crypto API进行加密/解密,该API使用与您的Windows帐户相关联的密钥。
本地加密副本无法通过服务器解密,因为密钥是本地的。
因此,当您连接(假设通过HTTPS),您的客户端通过适当的Windows API获取已解密的凭据,然后将其包含在HTTPS传输中。 HTTPS使用SSL证书加密客户端和服务器之间的整个通信,而不仅仅是凭据。

你确定密码没有在客户端解密吗? - Jus12
我很确定...在没有向TortoiseSVN团队发布明确问题的情况下,这是我找到的...http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug.html#tsvn-dug-general-auth 此外,如果它在客户端解密,然后以纯文本形式推送到服务器上,那么它将失去意义。我猜你可以通过SSH发送它。 - Aaron McIver
但实际上,任何人都可以将密文发送到服务器,而tortoiseSVN并没有通过加密提供任何额外的安全性。 - Jus12
这就是为什么他们让用户在关机时或定期清除授权数据,如果有需要的话。如果持有授权数据的机器已经被攻击,则这实际上不是TortoiseSVN问题本身。 - Aaron McIver
感谢您的工作。我希望已经有这方面的工具了。 - Jus12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接