【MySQL】go-sniffer SQL 网络抓取工具

简介

捕获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 env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

可以直接将编译好的文件应用到其他机器,安装依赖即可使用。

用法

复制代码
=======================================================================
[使用说明]

    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 输出了

相关推荐
2501_941822754 分钟前
从数据库分片到水平扩展的互联网工程语法实践与多语言探索
数据库
扶尔魔ocy12 分钟前
【linux C】在mysql中增加自定义的C动态库
linux·运维·mysql
QUST-Learn3D16 分钟前
geometry4Sharp Ray-Mesh求交 判断点是否在几何体内部
服务器·前端·数据库
运维行者_19 分钟前
跨境企业 OPM:多币种订单与物流同步管理,依靠网络自动化与 snmp 软件
大数据·运维·网络·数据库·postgresql·跨境企业
gf132111121 分钟前
制作卡点视频
数据库·python·音视频
子超兄25 分钟前
慢查询处理SOP
数据库
TDengine (老段)26 分钟前
TDengine C/C++ 连接器入门指南
大数据·c语言·数据库·c++·物联网·时序数据库·tdengine
kabcko31 分钟前
CentOS安装Mysql
mysql·adb·centos
地球资源数据云31 分钟前
2019-2024年中国逐年10米分辨率最大值合成NDVI数据集
大数据·运维·服务器·数据库·均值算法
自燃人~36 分钟前
怎么优化慢SQL
数据库·sql