5

有没有办法将 TortoiseSVN 的已保存登录名/密码从机器移动到网络存储库?刚买了一台新机器,知道我的用户名,但不记得我登录到存储库。

我知道 TortoiseSVN 在 %appdata%\Subversion\auth 的目录中保存了一些身份验证信息

移动了我在 svn.simple 找到的文件;我在其中以明文形式看到我的用户名,但密码已加密。我还在文件中看到“wincrypt”,这就是调用的加密功能。

通常情况下,我只会让 SVN 管理员为我重置它,但他和 SVN 的其他管理员一样,直到下周都在休假。

我可以深入研究 TortoiseSVN 的源代码,看看身份验证是如何完成的,但必须有一种更简单的方法。如果有用的话,我可以在旧机器的成功身份验证上运行 Wireshark。

4

6 回答 6

4

看到这个答案:提取 TortoiseSVN 保存的密码

如果您仍然可以访问旧机器和 Windows 用户帐户,那么您可以使用第 3 方“TortoiseSVN Password Decrypter”实用程序提取密码。

Wireshark 是另一个不错的选择,但我认为它不会对 SSL 存储库有所帮助。

于 2011-01-25T14:19:29.377 回答
3

在 TortoiseSVN 1.9 及更高版本中,您无需任何其他工具即可完成此操作:

设置对话框 -> 保存的数据,然后单击文本“身份验证数据”右侧的“清除...”按钮。将弹出一个新对话框,显示所有存储的身份验证数据,您可以在其中选择要清除的数据。不要清除,而是按住 Shift 和 Ctrl 按钮,然后双击列表。对话框中将显示一个新列,其中清楚地显示密码。

于 2020-03-13T18:13:51.310 回答
2

Solved! Turns out it was pretty simple to resolve.

Wireshark was the answer. Did a capture of the communication between my old machine and the repository host, launched the repo browser from TortoiseSVN. Then I ran "Follow TCP Stream" on the conversation, and found this line:

Authorization: Basic ZHIzeDppc0F3ZXNvbWU=

Here's the Powershell script to decode it:
$basic = "ZHIzeDppc0F3ZXNvbWU="
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($basic))

Returns plain text: uname:pwd

于 2010-09-16T17:33:40.260 回答
2

根据帮助文件,TortoiseSVN 将凭据存储在以下子文件夹中%appdata%\Subversion\auth

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

我想您可以尝试将这些文件夹复制到另一台机器上。

于 2010-09-15T18:33:30.687 回答
1

使用来自登录用户的数据,使用 Windows 加密 API 对凭据进行加密。这意味着加密基于您的 Windows 登录帐户,因此即使您在那里设置了具有相同用户名和密码的用户,也无法将其复制到另一台机器上。

于 2010-09-16T06:02:26.947 回答
-1

我认为您不希望这成为可能,因为这意味着任何人都可以复制某些文件并能够使用您的 SVN 帐户进行更改。也许最好这是不可能的并且事情更安全。

相反,您应该在内部制定更好的密码管理策略,这样您就不必依赖某些人来处理这种事情(即总线因素)。

于 2010-09-15T19:17:02.613 回答