tcpdump
tcpdump是linux下的一个网络抓包工具
tcpdump非常强大且复杂命令,是我们平常排查网络相关问题的得力助手
安装
一般linux发行版自带基本无需安装
常用操作
抓取有192.168.1.1的包,来源或目的
tcpdump host 192.168.1.1
在所有网卡中抓取有192.168.1.1的包,来源或目的
tcpdump -i any host 192.168.1.1
抓取主机是192.168.1.1 或 192.168.1.2
tcpdump -i any host 192.168.1.1 or 192.168.1.2
抓取除了192.168.1.1的包
tcpdump -i any host ! 192.168.1.1
抓取所有的流量
tcpdump -nS
指定端口
tcpdump -i any port 22
抓取192.168.1.1到192.168.1.2的80端口
tcpdump -i any src host 192.168.1.1 and dst host 192.168.1.2 and dst port 80
tcpdump -i eth0 icmp
tcpdump -i eth0 ip
tcpdump -i eth0 tcp
tcpdump -i eth0 udp
tcpdump -i eth0 arp
显示参数
- -n 不解析主机名
- -nn 不解析主机名以及协议
- -v 打印详情
- -e 显示二层信息
- -s 抓取全部数据0为全部,默认96
- -c 抓包次数
http协议
所有的get请求
tcpdump -i eth0 -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
POST 请求
tcpdump -i any -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354'
抓取80端口的http协议get请求的流量,只需要指定下tcp dst port 80
指定下端口号,post同理
tcpdump -i any -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
抓取192.168.1.1的80端口中get和post请求的http流量的请求和响应
tcpdump -i any -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x48545450 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x3C21444F and host 192.168.1.1'
监控所有的get和post的主机和地址
tcpdump -i any -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"
导出文件
-w 表示把数据报文输出到文件
-r 表示读取数据报文
抓取所有的包保存到tcpdump.pcap
tcpdump -i any -s 0 -X -w tcpdump.pcap
读取pcap文件
tcpdump -A -r tcpdump.pcap
保存文件的时候切分文件
tcpdump -i any host -G 60 -C 150M -w test_%Y%m%d%H%M.pcap
参考资料
https://www.middlewareinventory.com/blog/tcpdump-capture-http-get-post-requests-apache-weblogic-websphere/
https://www.cnblogs.com/bakari/p/10748721.html