前言:
在Linux下,当我们需要抓取网络数据包分析时,通常是使用工具tcpdump。但是,有时我们需要将抓取的数据包保存在一个文件中,已备以后分析。而tcpdump保存的文件是二进制的文件,使用cat和vim 都无法打开查看。此时我们采取的措施是,下载到本地使用wireshark界面网络分析工具进行网络包分析。其实wireshark也提供有Linux命令行工具tshark。tshark不仅有抓包的功能,还带了解析各种协议的能力。
默认我们的机器上是没有安装这个工具的。如果你的linux是CentOS那么就使用yum安装
yum install -y wireshark
也可以到官网下载源码 http://www.wireshark.org
具体安装方法,请参考 http://www.qtasp.cn/wiresharkcharpt/buildingwireshark.html
以下,简单介绍这个抓包工具的应用
1. 以下的用法可以显示访问http请求的域名以及uri
tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src"
-e "http.host" -e "http.request.method" -e "http.request.uri"
2. 以下可以抓取mysql的查询
tshark -n -i eth1 -R 'mysql.query' -T fields -e "ip.src" -e "mysql.query"
另外一种方法:
tshark -i eth1 port 3307 -d tcp.port==3307,mysql
-z "proto,colinfo,mysql.query,mysql.query"
3. 以下可以抓取指定类型的MySQL查询
tshark -n -i eth1 -R 'mysql matches "SELECT|INSERT|DELETE|UPDATE"'
-T fields -e "ip.src" -e "mysql.query"
4. 统计http的状态
tshark -n -q -z http,stat, -z http,tree
这个命令,直到你ctrl + c 才会显示出结果
5. tshark 增加时间标签
tshark -t ad
tshark -t a