加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

sqlyog的配置文件解读

(2022-07-27 20:51:53)
标签:

python

分类: python
sqlyog是一款商业开源软件,非常不错的MySQL管理工具。因为一开始就用,所以这么长时间都很习惯了。

不过,总有更换电脑,或者重装系统的时候;亦或,MySQL数据库的密码忘记了。那么,如何解决sqlyog的配置文件。

1、配置文件存储位置
sqlyog会把配置文件存在用户目录下: C:\Users%user%\AppData\Roaming\SQLyog\sqlyog.ini。取环境变量%AppData% 加上 SQLyog\sqlyog.ini 也可以。

2、配置文件样式,以下是ini文件的样式:
[UserInterface]
Language=zh-cn
Version=2
ThemeFile=963
ThemeType=1
[Themedetails]
ThemeFile=964
ThemeType=1
[SQLYOG]
Encoding=utf8
Left=0
Top=0
Right=600
Bottom=600
Maximize=0
Host=新连接
ChildMaximized=1
[Connection 1]
Name=新连接
Host=localhost
User=root
StorePassword=1
Password=sLBzS1h0309zR9IxMQ==
Port=3306
Database=
......

3、解析密码。密码可以反向运算进行解析,在此使用Python进行解析运算。
"=="号是base64编码最明显的特征,一般看到类似sLBzS1h0309zR9IxMQ==这样的字符,就知道是base64。 sqlyog对密码的编码过程是对密码的字节分别进行位运算后,再进行base64编码存在配置文件中。 另一个需要注意的是python的bit左移是会进位的,所以需要和255进行与运算。

看一下Python的与运算:
>>> 2<<10
2048
>>> 2<<10&255
0

4、密码解析完整代码

# -*- coding: utf-8 -*-
"""
Created on 2017-03-15 07:42:58
@author: codegay
"""
 
import os
import configparser
import base64
 
 
def decode(base64str):
    tmp = base64.b64decode(base64str)
    return bytearray([(b<<1&255)|(b>>7) for b in tmp]).decode("utf8")
 
sqlyogini = os.environ.get('APPDATA')+"\\SQLyog\\sqlyog.ini"
print("sqlyogini文件路径:",sqlyogini)
ini = configparser.ConfigParser()
ini.read(sqlyogini,encoding='utf8')
 
connections = [r for r in ini.sections() if 'name' in ini.options(r) and ini.get(r,'password')]
 
for c in connections:
    name = ini.get(c,'name')
    host = ini.get(c,'host')
    user = ini.get(c,'user')
    b64pass = ini.get(c,'password')
    password = decode(b64pass)
    print(name,host,user,sep='\n')
    print('密码',password)
    print('----------------------------------------------------------------------------------')

程序运行的输出为:
sqlyogini文件路径: C:\Users\root\AppData\Roaming\SQLyog\sqlyog.ini
新连接
localhost
root
密码 aa新连接bb


0

阅读 收藏 喜欢 打印举报/Report
前一篇:Python的装饰器
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有