1. tshark
1.1 安装
Centos
yum install -y wireshark
Ubuntu
apt-get install -y tshark
1.2 使用
1.2.1 抓包参数说明
常用
-i
和-f
参数
-i
设置抓包的网络接口,不设置则默认为第一个非自环接口。-f
设定抓包过滤表达式(capture filter expression)。抓包过滤表达式的写法雷同于tcpdump,可参考tcpdump man page的有关部分。-D
列出当前存在的网络接口。在不了解OS所控制的网络设备时,一般先用“tshark -D”查看网络接口的编号以供-i参数使用。-s
设置每个抓包的大小,默认为65535,多于这个大小的数据将不会被程序记入内存、写入文件。(这个参数相当于tcpdump的-s,tcpdump默认抓包的大小仅为68)-p
设置网络接口以非混合模式工作,即只关心和本机有关的流量。-B
设置内核缓冲区大小,仅对windows有效。-y
设置抓包的数据链路层协议,不设置则默认为-L找到的第一个协议,局域网一般是EN10MB等。-L
列出本机支持的数据链路层协议,供-y参数使用。
-f
参数详解
- 设置监听的协议类型:
-f udp/tcp/http
必须为小写 - 设置源ip:
-f "src host x.x.x.x"
- 设置源端口:
-f "src port 80"
- 设置源ip和源端口:
-f "src host x.x.x.x and src port xx"
- 设置目的ip:
-f "dst host x.x.x.x"
- 设置目的端口:
-f "dst port xx"
- 设置目的ip和端口:
-f "dsthost x.x.x.x and port xx"
1.2.2 输出参数说明
常用
-T
和-l
参数
-w
设置raw数据的输出文件-F
设置输出raw数据的格式,默认为libpcap。-V
设置将解码结果的细节输出,否则解码结果仅显示一个packet一行的summary。-x
设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据。-T
设置解码结果输出的格式,包括text,ps,psml和pdml,默认为text。-t
设置解码结果的时间格式。“ad”表示带日期的绝对时间,“a”表示不带日期的绝对时间,“r”表示从第一个包到现在的相对时间,“d”表示两个相邻包之间的增量时间-S
在向raw文件输出的同时,将解码结果打印到控制台。-l
在处理每个包时即时刷新输出。-X
扩展项。-q
设置安静的stdout输出(例如做统计时)-z
设置统计参数。
1.3 示例
- 实时打印当前http请求的url
tshark -i eth0 -n -f "tcp dst port 80" -T fields -e http.host -e http.request.uri -l
- 实时打印当前mysql查询语句
tshark -i eth0 -n -f "tcp dst port 3306" -T fields -e mysql.query
2. tcpdump
这也是一个抓包工具,不过没tshark好用,简单介绍一下吧。。
2.1 安装
Centos
yum install -y tcpdump
Ubuntu
apt-get install -y tcpdump
2.2 使用
- 截获从网口
eth0
出去或接收到的包
tcpdum -i eth0
- 截获所有与主机 xx.xx.xx.xx 相关的包
tcpdump host xx.xx.xx.xx
- 截获tpc协议的80端口的包
tcpdump tcp port 80