常用命令选项
- -n 不解析域名,直接显示 IP
- -i 指定网卡
- -w 抓取的包写入到文件. 方便wireshare分析
- -s0 : tcpdump 默认只会截取前
96
字节的内容,要想截取所有的报文内容,可以使用-s number
,number
就是你要截取的报文字节数,如果是 0 的话,表示截取报文全部内容。
过滤器
Host 过滤器
-- 抓去机器host是192.168.52.101的package
tcpdump host 192.168.52.101 (所有192.168.52.101发出和收到的包)
--src 代表源头
--dst 代表目标
tcpdump src host 192.168.52.101 (52.101发出的包)
tcpdump dst host 192.168.52.101 (收到的)
--
tcpdump src host 192.168.52.101 or dst host 192.168.52.53
Port 过滤器
tcpdump port 8082 --源端口或者是目的端口为8082的package
同host过滤器,使用src和det可以进行过滤
host和port可以组合使用.
例如抓取从52.101发出去,本机8080收到的流量
tcpdump src host 192.168.52.101 and dst port 8080
Net 过滤器
从 https://juejin.cn/post/6844904084168769549#heading-9 拷贝复制而来
Network 过滤器用来过滤某个网段的数据,使用的是 CIDR 模式。可以使用四元组(x.x.x.x)、三元组(x.x.x)、二元组(x.x)和一元组(x)。四元组就是指定某个主机,三元组表示子网掩码为 255.255.255.0
,二元组表示子网掩码为 255.255.0.0
,一元组表示子网掩码为 255.0.0.0
。例如,
抓取所有发往网段 192.168.1.x
或从网段 192.168.1.x
发出的流量:
$ tcpdump net 192.168.52
抓取所有发往网段 10.x.x.x
或从网段 10.x.x.x
发出的流量:
$ tcpdump net 10
和 Host 过滤器一样,这里也可以指定源和目的:
$ tcpdump src net 10
也可以使用 CIDR 格式:
$ tcpdump src net 172.16.0.0/12
http
#抓取 80 端口的 HTTP 有效数据包,排除 TCP 连接建立过程的数据包(SYN / FIN / ACK)
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
#提取 HTTP 请求的主机名和路径:
tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"