MobaXterm中密码的查看方式
目录
- 问题描述
- 解决方案
问题描述
MobaXterm是一款强大的终端连接工具,安装简单便捷,支持多种协议,一般使用免费版本即可满足日常使用要求。在使用MobaXterm进行ssh会话连接时,会提示保存密码,免费版本最多支持20个会话,后续再次连接时直接使用对应的Session即可,无需再次输入密码,MobaXterm会对这些密码进行管理,同时还支持设置本地的Master密码。
自动保存密码确实带来了很多方便,但是问题也恰恰出在了这里,在MobaXterm的免费版本中,我们无法查看保存的密码具体是什么,尽管不影响连接使用,但是难免会遇到要将密码分享出去的时候,这时候又恰恰没有记录,就很尴尬。
解决方案
十分幸运,github上有人开源了代码,用于解决这个问题,下面就来介绍一下这种解决方法。
准备工作
首先,我们需要把代码克隆下来,项目地址如下,具体的代码在python3文件夹中
https://github.com/HyperSine/how-does-MobaXterm-encrypt-password
接下来,我们需要确认MobaXterm中密码存储的位置为注册表
我们可以通过reg query命令验证下信息,命令如下
reg query HKEY_CURRENT_USER\Software\Mobatek\MobaXterm\C # Credentials
reg query HKEY_CURRENT_USER\Software\Mobatek\MobaXterm\P # Passwords
以Passwords为例,运行结果如下
可以看到密码被编码成了新的字符串。在运行解码代码之前,我们还需要更新下环境。
pip uninstall pycrypto
pip install pycryptodome
单条密码
下面,我们就可以运行对应的文件进行密码解码了。我们随机挑选一个session,以第一个为例,取最后一列中的字符串W8jczTkOZRzGXWnc(编码后的密码),使用如下命令,即可解码出原始的密码!
python MobaXtermCipher.py dec -p Master密码 W8jczTkOZRzGXWnc
(PS:这里需要区分是否有本地的Master密码,要使用不同的参数,上述为配置了Master密码的情况,具体的可以查看github项目中的Readme)
全部密码
如果我们想看到全部Session的密码,还可以使用项目中的另外一个文件ShowMobaXterm.py。
在作者的尝试过程中,发现也需要修改代码,可能也是和版本相关,大家在使用时可以根据环境情况决定是否要修改。具体的修改内容为注释掉代码中的230、231两行。
ConnPassword = cipher.DecryptPassword(
Value,
# ConnHostname.encode('ansi'),
# ConnUsername.encode('ansi')
).decode('ansi')
然后,执行该文件即可得到全部Session的密码,这里同样用到了Master密码。
python ShowMobaXterm.py Master密码
输出如下
搞定_