360 MySQL 协议的抓包工具

项目地址:https://github.com/Qihoo360/mysql-sniffer/blob/master/README_CN.md

MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端或 Client 端请求,并格式化输出。输出内容包括访问时间、访问用户、来源 IP、访问 Database、命令耗时、返回数据行数、执行语句等。有批量抓取多个端口,后台运行,日志分割等多种使用方式,操作便捷,输出友好。

特别注意,请先安装依赖: glib2-devel(2.28.8)、libpcap-devel(1.4.0)、libnet-devel(1.1.6)

由于我本地测试服务器是centos
安装:

//安装依赖
yum install glib2-devel libpcap-devel libnet-devel -y

git clone https://github.com/Qihoo360/mysql-sniffer
cd mysql-sniffer
mkdir proj
cd proj
cmake ../

//这个时候由于系统原因报错,修改下如下文件
vim bin/CMakeFiles/mysql-sniffer.dir/link.txt
//在文件最末尾增加一个  -pthread
make
cd bin
./mysql-sniffer -h

有help信息即成功
测试下:

./mysql-sniffer -i eth0 -p 3306

然后新开窗口,连接下mysql

mysql -h127.0.0.1 -p3306 -P

use test;
select * from user limit 13; 

2222.jpg

同样,你访问你的php或者其他连接了mysql的项目,同样可以打印出执行的sql,再也不用在代码里面echo或者log到文件了。

当然它还有其他的一些功能,详细看./mysql-sniffer -h

注意:

  • 生成的这个mysql-sniffer是个二进制包,可以拷贝到其他机器用,但是其他机器要安装相应的依赖包
  • 这个只监听启动命令后的mysql连接,之前连接的是不监听的。意思是你之前用mysql -h连接了mysql,或者之前项目写的一些连接池运行中,再开的监听,是不能打印sql的。

标签: 抓包工具

发表评论: