有没有办法提取TortoiseSVN保存的凭据?
答案 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 证书,而不仅仅是 凭证。