heidisql修改mysql密码_获取HeidiSQL保存的密码
Loading...请注意,本文编写于 273 天前,最后修改于 273 天前,其中某些信息可能已经过时。今天在使用一个数据库时一是半会想不起来数据库的密码了,后来想起来在客户端工具heidisql上有保存过密码,下面讲解如何获取heidisql保存的密码。HeidiSQL是一款开源的SQL管理工具,用于管理MYSQL,MSSQL 等数据库,很多管理工具都会把密码存在本地,HeidiSQL也是如此
Loading...
今天在使用一个数据库时一是半会想不起来数据库的密码了,后来想起来在客户端工具heidisql上有保存过密码,下面讲解如何获取heidisql保存的密码。
HeidiSQL是一款开源的SQL管理工具,用于管理MYSQL,MSSQL 等数据库,很多管理工具都会把密码存在本地,HeidiSQL也是如此,但是只是经过非常简单的编码,解密的过程如下。
使用的是版本是HeidiSQL_11.0_64_Portable,配置会存在软件目录下的portable_settings.txt中,如果是安装的版的话,HeidiSQL安装版会配置信息存在以下注册表中:
```
HKEY_CURRENT_USER\Software\HeidiSQL\
```
密码会保存在以下节点下面。
```
HKEY_CURRENT_USER\Software\HeidiSQL\Servers
```
打开portable_settings.txt可以看到配置文件中有以下这样的ip 密码之类这样的信息
HeidiSQL配置文件节选:
```
Servers\192.168.1.1\SessionCreated12020-04-23 09:11:48
Servers\192.168.1.1\Host1192.168.1.1
Servers\192.168.1.1\WindowsAuth30
Servers\192.168.1.1\CleartextPluginEnabled30
Servers\192.168.1.1\User1root
Servers\192.168.1.1\Password16A6A6A9
Servers\192.168.1.1\LoginPrompt30
Servers\192.168.1.1\Port13306
Servers\192.168.1.1\NetType30
Servers\192.168.1.1\Compressed30
Servers\192.168.1.1\LocalTimeZone30
Servers\192.168.1.1\QueryTimeout330
Servers\192.168.1.1\KeepAlive320
Servers\192.168.1.1\FullTableStatus31
Servers\192.168.1.1\Databases1
Servers\192.168.1.1\Library1libmysql-6.1.dll
Servers\192.168.1.1\Comment1
Servers\192.168.1.1\StartupScriptFilename1
Servers\192.168.1.1\TreeBackground3536870911
Servers\192.168.1.1\SSHtunnelHost1
Servers\192.168.1.1\SSHtunnelHostPort322
Servers\192.168.1.1\SSHtunnelUser1
Servers\192.168.1.1\SSHtunnelPassword11
Servers\192.168.1.1\SSHtunnelTimeout34
Servers\192.168.1.1\SSHtunnelPrivateKey1
Servers\192.168.1.1\SSHtunnelPort33307
Servers\192.168.1.1\SSL_Active30
Servers\192.168.1.1\SSL_Key1
Servers\192.168.1.1\SSL_Cert1
Servers\192.168.1.1\SSL_CA1
Servers\192.168.1.1\SSL_Cipher1
Servers\192.168.1.1\ServerVersionFull15.7.29 - MySQL Community Server (GPL)
Servers\192.168.1.1\ConnectCount37
Servers\192.168.1.1\ServerVersion350729
Servers\192.168.1.1\LastConnect12020-05-09 11:32:06
```
通过反复把密码填为a r 1 aaa aaaa rrrr 之类,终于发现了算出密码的规则,以密码aaa为例子,在配置文件可以得到`6A6A6A9` 6A转为10进制得到106 减最后一位的9得到97,刚好可以对应ASCII码上的字母a,有3个6A,所以还可以还原得到aaa。
也就是说前面的都是ASCII码,最后一位是偏移量,ASCII减偏移量就是对应的密码字符。
以下是在ipython中解码的演示
```cpp
int("6A",16)
Out[1]: 106
106 - 9
Out[2]: 97
chr(97)
Out[3]: 'a'
```
以下是一个读取HeidiSQL 配置文件中的密码的python3代码:
```python
# -*- coding: utf-8 -*-
"""
2020-5-09 13:32:54 AnAn
"""
import re
settings = r"C:\Program Files\HeidiSQL_11.0_64_Portable\portable_settings.txt"
with open(settings,encoding="utf8") as f:
lines = [r.strip() for r in f.readlines() if "\\Password
passwords = [re.split("\",r)[-1] for r in lines]
def heidipass(code):
ascii = code[:-1]
d = int(code [-1])
decode = lambda x:chr(int(x,16) - d)
password = ''.join(map(decode,re.findall("\w{2}",ascii)))
return password
for r in passwords:
print(heidipass(r))
```
HeidiSQL官方网站: [http://www.heidisql.com/](http://www.heidisql.com/)
ASCII码对照表 [http://tool.oschina.net/commons?type=4](http://tool.oschina.net/commons?type=4)
最后修改:2020 年 05 月 09 日 01 : 42 PM
© 允许规范转载
赞赏
如果觉得我的文章对你有用,请随意赞赏
×Close
赞赏作者
扫一扫支付
支付宝支付
微信支付
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)