前言
同样的套路又来了,继续尝试从配置文件中读取敏感的信息,这次轮到的是MySQL-Front。
MySQL-Front就一款开源的mysql管理工具,官方网站http://www.mysqlfront.de/ 。
配置文件的路径:
MySQL-Front的配置文件存在用户目录下,环境变量是%appdata% 。
在windows7下的存储路径是:
C:\Users\%user%\AppData\Roaming\MySQL-Front\Accounts.xml
Accounts.xml这个XML文件里面存储了所有重要的信息,且密码默认不是加密的。上次我忘记mysql root用户的密码,打开这个文件立马就找回密码,
这个算是不加密的好处吧。→_→不过总有刁民想害朕,还是需要保护好这些重要的信息,以免被坏人读取到。
格式化XML
Accounts.xml 中的内容是被压缩成一行的。需要格式化成好看的格式。这类在线工具搜索一下就可以找得到。
Accounts.xml 格式化后的内容如下:- <?xml version="1.0" encoding="utf-8"?>
- <accounts version="1.1.0">
- <default>127.0.0.1</default>
- <account name="127.0.0.1">
- <lastlogin>42847.9391816088</lastlogin>
- <manualurl version="5.0.22-community-nt"></manualurl>
- <connection>
- <database></database>
- <host>127.0.0.1</host>
- <library>
- <filename>libMySQL.dll</filename>
- <tunnel_url></tunnel_url>
- </library>
- <password encode="none">root</password>
- <port>3306</port>
- <user>root</user>
- </connection>
- <favorites />
- </account>
- <account name="daqin">
- <lastlogin>0</lastlogin>
- <manualurl version=""></manualurl>
- <connection>
- <database></database>
- <host>127.0.0.1</host>
- <library>
- <filename>libMySQL.dll</filename>
- <tunnel_url></tunnel_url>
- </library>
- <password encode="none">daqin</password>
- <port>3306</port>
- <user>daqin</user>
- </connection>
- <favorites />
- </account>
- </accounts>
复制代码 python处理XML、HTML的利器PyQuery
我出于要练习的目的,想要用python的XML标准库处理XML ,但是发python 内置提供了好几种方法:xml.sax xml.dom xml.minidom
以及还有xml.parsers.expat ,选择太多,还是决定用PyQuery,PyQuery是依赖于lxml实现的jquery风格的xml解析和处理库。
lxml算是python很重要的库了,已知pandas,BeautifulSoup等等这些库有部分功能依赖lxml。
输入命令安装即可:
pip install pyquery
看完教程后就能把代码写出来了↓↓↓
python3 读取 MySQL-Front 的密码:- # -*- coding: utf-8 -*-
- """
- Created on 2017-04-22 22:53:35
-
- @author: codegay
- """
- import os
- from pyquery import PyQuery as pyq
-
- xmlpath = os.environ['appdata']+r'\MySQL-Front\Accounts.xml'
-
- root = pyq(filename=xmlpath)
-
- for r in root('connection').items():
- print("----------------------------------------------")
- print('host:',r('host').text())
- print('username:',r('user').text())
- print('password:',r('password').text())
复制代码 运行代码后输出:- ----------------------------------------------
- host: 127.0.0.1
- username: root
- password: root
- ----------------------------------------------
- host: 127.0.0.1
- username: daqin
- password: daqin
复制代码 codegay 2017年5月1日14:14:09
ps:第一次尝试用小书匠编辑器客户端,支持markdown,支持一键发布到cnblogs,推荐一下。
参考资料:
pyquery 官方文档(英文) http://pyquery.rtfd.org/
Python爬虫利器六之PyQuery的用法 http://cuiqingcai.com/2636.html
(在线工具)XML格式化 http://web.chacuo.net/formatxml
小书匠编辑器 http://soft.xiaoshujiang.com/download.html |