提取TortoiseSVN保存的密码

时间:2010-10-07 15:15:18

标签: svn tortoisesvn forgot-password

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

2 个答案:

答案 0 :(得分:220)

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

答案很长:这是该工具的工作原理。

凭据保存在%APPDATA%\Subversion\auth\的子目录中。从this previous answer列出的是:

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

第一个目录是感兴趣的目录。它似乎包含名称看起来像GUID的文件;每个存储库,其中一个已保存凭据。

这些文件中的密码由Windows Data Protection API加密。上面的工具使用Obviex中的示例代码与此API接口并执行解密。

为了使其正常工作,您必须有权访问当您勾选“保存身份验证”复选框时所运行的同一Windows用户帐户。这是因为Windows Data Protection API使用与Windows帐户绑定的加密密钥。如果您丢失了此帐户(或者,我相信,如果管理员重置您的密码),那么您将无法再解密密码(可能除非使用暴力/ third party tool )。使用相同的用户名/密码(或者甚至可能是SID)的新Windows帐户是不够的。

答案 1 :(得分:8)

根据下面的信息,听起来你可以用某种方式在本地解密它们......

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

  

当他们通过电线发送时   加密后,使用a进行加密   握手和/或商定的钥匙   连接的时间。

     

当他们在本地存储/阅读时,   它们是通过加密/解密的   使用密钥的Windows Crypto API   绑定到您的Windows帐户。

     

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

     

所以当你连接时(让我们说通过   HTTPS),您的客户端获得   凭证通过解密   适当的Windows API,然后包括   他们在HTTPS传输中。 HTTPS   加密整个通信   客户与客户之间服务器使用SSL   证书,而不仅仅是   凭证。