参数
抓包参数
-c 指定抓包的数量
-i 指定抓取的接口,默认为第一个网络接口
-n 不做主机名解析
-P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"
输出参数
-e: 输出的每行包括源和目的mac地址
-q: 简短打印
-X:输出包的头部数据,会以16进制和ASCII两种方式同时输出。
-XX:输出包的头部数据,会以16进制和ASCII两种方式同时输出,更详细。
-v:当分析和打印的时候,产生详细的输出
-vv:产生比-v更详细的输出。
-vvv:产生比-vv更详细的输出
其他功能参数
-D 列出可用于抓包的接口
-w:将抓包数据输出到文件中而不是标准输出
-r:从给定的数据包文件中读取数据,使用"-"表示从标准输入中读取
表达式
表达式是一个正则表达式,tcpdump利用它作为报文的过滤条件,满足该条件的才会被捕获
格式:proto dir type
类型type选项包含:host net port
方向dir包含:src dst
协议proto选项包含:ip、arp、rarp、tcp、udp、icmp等
高级使用
AND: and or &&
OR: or or ||
except: not or !
格式
tcpdump [协议类型] [源或目标] [主机名称或IP] [or/and/not/!条件组合] [源或目标] [主机名或IP] [or/and/not/!条件组合] [端口] [端口号]
常用例子
捕获所有流量
tcpdump -i any
捕获指定网卡的流量
tcpdump -i eth0
使用源和目的过滤
tcpdump src {source ip}
tcpdump dst {dest ip}
tcpdump host 192.168.1.100 //无论源或目的都可以
过滤某个子网的数据包
tcpdump net 1.2.3.0/24
过滤指定端口相关的流量
tcpdump port {port}
tcpdump src port {port} -> 只显示发出
tcpdump portrange 22-125
过滤指定协议的流量
tcpdump tcp
基于包大小过滤流量
tcpdump less 32
tcpdump grater 64
tcpdump <=128
使用端口范围过滤
tcpdump portrange 21-23
捕获主机A,B之间的报文
tcpdump -i any tcp port xxx and host A and B
过滤TCP flag
过滤SYN
tcpdump -c 2 net 193.0.0.0/8 and "tcp[13] & 2 != 0"
过滤ACK
tcpdump -c 2 net 193.0.0.0/8 and "tcp[13] & 16!=0"
过滤RST
tcpdump "tcp[13] & 4!=0"
过滤FIN
tcpdump "tcp[13] & 1!=0"