获取 MobaXterm 保存的 SSH 密码

问题简述

使用 MobaXterm 在连接 SSH 时会保存密码,需要查看密码时却发现需要升级 “专业版”。我并不是此软件的重度使用者,而且相当长一段时间内使用 VSCode Remote 插件都是可以解决问题的

网络上的教程有很多的,我也是看了他们写的内容发现 Github 上有大神写了个 Python 脚本,能够逆向解密保存的 SSH 密码

解决方案

安装 Python 和 pycryptodome

当然,对于 python 版本要求是 3.x。不过对于现在人均 anaconda 的情况下,新建一个环境还是很简单的pycryptodome 是一个 python 库,用 pip 安装就好了

安装

conda create -name common python=3.9
conda activate common
pip install pycryptodome

测试

conda info
python -V
pip -V
pip list

解密

解密需要找到 MobaXterm 存放的密码,因为这个软件有安装版也有便携版(绿色版),所以关于密码存放的位置,前者在注册表里,后者在软件目录下的 MobaXterm.ini 配置文件里。

我使用的是便携版,所以不需要很麻烦地找注册表。如果是安装版的,可以看看项目的说明。打开这个 ini 配置文件后,下滑应该可以找得到 [passwords] 一项。随后挨行找,找到你需要的那行,把等号后面的密码复制一下。

打开命令行

# Clone 项目
git clone https://github.com/HyperSine/how-does-MobaXterm-encrypt-password.git

# 重新激活 common 环境
conda activate common

# 解密
cd ./how-does-MobaXterm-encrypt-password/python3
python .\MobaXtermCipher.py dec -p [MobaXterm 主密码] [刚刚复制的密码]