这个问题遇到的比较多,也最头疼,如果没有及时通过Navicat的功能备份链接信息到文件,则重装系统后什么链接信息都没有。

这里需要指出说明一下:

Navicat的数据sql查询文件、备份文件存储在 C:\Users\Administrator\Documents\Navicat\MySQL\servers

navicat的数据库链接信息存储在注册表:HKEY_CURRENT_USER\Software\PremiumSoft

1.注册表文件寻找

注册表系统级的一般是在system32\config目录下,可这个不存储用户数据,也就是不存储 HKEY_CURRENT_USER 这个单元的数据。而恰恰Navicat是存储在这个单元下的,所以我们需要找到用户目录下的 NTUSER.DAT

如果你和我一样是administrator用户,则对应路径是:C:\Users\Administrator\NTUSER.DAT

无论通过什么方式,数据恢复还是ghost提取,还是怎样,只要拿到这个文件即可。

2.加载配置单元

推荐下载使用:Registry Workshop 高级注册表编辑工具

使用注册表工具(Registry Workshop),加载配置单元。

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

名字起一个方便寻找的,位置随意,下方步骤将以我所选择的HKEY_USERS为准。

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

在左侧选择对应的目录“software”

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

绿色范围内的就是你的配置文件了,只要确认有你的数据项,那就继续下面的步骤。

如果没有,或者你和我的Navicat版本不同。则找到对应的目录,确认数据还在,就没有问题。

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

3.导出Navicat配置单元

选择Navicat的目录,右键,选择导出。

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

选择导出的位置,输入文件名,保存导出即可。(我已经导出过一次了,所以图中已经有了一个注册表reg文件,可以忽略)

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

4.修改注册表文件路径

接着再用notepad++打开保存的注册表文件,按ctrl+h替换文件内容

将 HKEY_USERS\dddd\Software 替换为 HKEY_CURRENT_USER\Software

点击全部替换,再ctrl+s保存到文件。

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

5.导入到当前注册表

我们再双击打开刚才的注册表,使其添加恢复到当前系统注册表中。

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

6.重新运行Navicat

重新运行Navicat,此时,数据应该已经恢复如初了。

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

此时链接信息恢复了,但是不包含SQL查询语句哪些,如果你的文件还在,也可以将其文件迁移到新的系统中对应的目录去。

SQL查询记录及备份数据目录为:C:\Users\Administrator\Documents\Navicat\MySQL\servers

Xshell 找回

时隔多日,再记录一下 XSHELL 的密码信息找回,如果你已经重装系统了,和上文一样以前的文件还有保留或者GHO还在,那么这个方法就适用于你。

版本是 XSHELL6

密码文件存储在:C:\Users\Administrator\NetSarang Computer\6\Xshell\Sessions\*.xsh

你可以编辑文件从中找到你的密码字串

意外重装系统,如何找回老的Navicat数据库/Xshell链接信息?-LMLPHP

如果你运气好,没有重装系统(也就是没有更换用户),那么你可以直接通过下面这个脚本跑出你的密码:

https://github.com/dzxs/Xdecrypt

因为解密这个密码需要用到当前用户的 SID ,但如果你重装过系统,这个 SID 就会被重置更新掉。除非你找到之前的 SID 否则除了暴力破解是没有办法的。

比如这个密匙是通过用户名+SID构成: "AdministratorS-1-5-21-1234567890-123456789-1234567890-500"

用户名:Administrator

SID: S-1-5-21-1234567890-123456789-1234567890-500

RID: 500

RID

Windows系统帐户对应固定的RID:

  • 500: ADMINISTRATOR
  • 501: GUEST
  • 502: krbtgt(域环境)
  • 512: Domain Admins(域环境)
  • 513: Domain Users(域环境)
  • 514: Domain Guests(域环境)
  • 515: Domain Computers(域环境)
  • 516: Domain Controllers(域环境)

一般我们都是管理员,所以这个 RID 也都是500,文章参考来源:https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E5%B8%90%E6%88%B7%E7%9A%84RID-Hijacking/

如果时运不济注册表文件丢失,或者非要暴力破解的话,枚举并更改中间的数字作为密匙,直到解开密码为止。

和前文一样,如果你还留有注册表文件 C:\Users\Administrator\NTUSER.DAT,那么你可以将这个文件挂载到注册表配置单元,并将这个配置但愿导出为 reg,这样你就可以通过文本编辑器打开这个文件。

直接搜索 500 或者,S-1-5-21 或者 ConvertUserDevModesCount 这类的关键词,一定可以找到 SID 的字串结构。然后将其代入 python 脚本进行尝试解密。

if not os.path.isdir(args.password):
    print (args.sid)
    print (args.password)
    args.sid = "AdministratorS-1-5-21-1234567890-123456789-1234567890-500"
    print (args.sid)
    r = decrypt_string(args.sid, args.password)
    if r:
        print(r)

然后运行:

python3 Xdecrypt.py -p FBO1bmXbG0000000000000000000000000000000000000z2lzLDZSJQ==

如果正确,最后一行就是你的密码。

03-11 18:59