简介
捕获mysql,redis,http,mongodb等协议,抓包截取项目中的数据库请求并解析成相应的语句,如修改mysql协议会解析为sql语句,即可调试。不要代码,直接嗅探项目中的数据请求。
有时候你想获取一些时间段的 SQL,但是是又不想开审计或其他原因,可以使用 go-sniffer 工具,从 tcp 数据包中解析 SQL。
项目地址:
https://github.com/40t/go-sniffer
支持列表:
设置:
- 支持 :
MacOS
Linux
Unix
- 不支持:
windows
- 如果过程中遇到问题
go get
,请尝试升级go版本(如果go get过程中遇到问题,请尝试升级go版本) - ssl 加密无法获取 sql
安装
安装 go 和依赖
yum -y install libpcap-devel go
安装 go-sniffer
# 克隆代码到本地
git clone https://github.com/40t/go-sniffer.git
cd go-sniffer
# 初始化go模块
go mod init github.com/40t/go-sniffer
# 下载依赖
go mod tidy
# 编译项目
go build
# 测试
./go-sniffer --help
用法
=======================================================================
[使用说明]
go-sniffer [设备名] [插件名] [插件参数(可选)]
[例子]
go-sniffer en0 redis 抓取redis数据包
go-sniffer en0 mysql -p 3306 抓取mysql数据包,端口3306
go-sniffer --[命令]
--help 帮助信息
--env 环境变量
--list 插件列表
--ver 版本信息
--dev 设备列表
[例子]
go-sniffer --list 查看可抓取的协议
=======================================================================
[设备名] : lo0 : 127.0.0.1
[设备名] : en0 : x:x:x:x:x5:x 192.168.1.3
[设备名] : utun2 : 1.1.11.1
=======================================================================
示例
# mysql
go-sniffer lo0 mysql
# redis
go-sniffer en0 redis
# http
go-sniffer eth0 http -p 8080
# mongodb
go-sniffer eth1 mongodb
测试
准备mysql 实例一台
创建库
creaet database test;
创建数据库账号
create user sniffer@'127.0.0.1' identified by '123';
grant all on *.* to sniffer@'127.0.0.1';
安装 sysbench
yum install -y sysbench
生成测试数据
sysbench \
--db-driver=mysql \
--mysql-host=127.0.0.1 \
--mysql-port=3306 \
--mysql-user=sniffer \
--mysql-password=123 \
--mysql-db=test \
--tables=10 \
--table-size=1000 \
--report-interval=1 \
--threads=1000 \
--rand-type=uniform \
--time=120 \
--auto-inc=on \
/usr/share/sysbench/oltp_read_only.lua \
prepare
启动 go-sniffer 监听
./go-sniffer lo mysql # 注意网卡名称
运行
sysbench --report-interval=5 \
--num-threads=100 \
--num-requests=0 \
--max-time=20 \
--mysql-user=sniffer \
--mysql-password='Passw0rd' \
--oltp-table-size=10000 \
--mysql-host=127.0.0.1 \
--mysql-port=3306 \
--mysql-db=test \
--test=/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \
run
即可查看到 sql 输出了