提取TortoiseSVN保存的密码

有什么办法来提取TortoiseSVN保存的凭据?

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

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

凭据保存在%APPDATA%\Subversion\auth\子目录中。 从以前的答案列出他们是:

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

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

这些文件中的密码由Windows数据保护APIencryption。 上面的工具使用来自Obviex的示例代码来与此API进行接口并执行解密。

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

基于下面的信息,听起来像你可以用某种方式在本地解密它们。

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

当它们通过encryption线路发送时,它们在连接时使用握手和/或商定的密钥进行encryption。

当它们在本地存储/读取时,它们通过Windows Crypto API进行encryption/解密,Windows Crypto API使用与Windows帐户绑定的密钥。

本地encryption的副本不能由服务器解密,因为这些密钥在您的帐户中是本地的。

所以,当你连接(比方说通过HTTPS),你的客户端获取通过适当的Windows API解密的凭据,然后将其包括在HTTPS传输。 HTTPS使用SSL证书encryption客户端和服务器之间的整个通信,而不仅仅是证书。