##tcp过滤速查
# tcpdump -i dev [src|dst] [[host x.x.x.x] [port xx] [net x.x.x.x] [tcp|udp|icmp]]
1. 常用在过滤表达式
- 过滤主机
[ether] [src|dst] host x.x.x.x
- 过滤端口
[src|dst] port xx
- 网络过滤
[src|dst] net x.x.x.x
- 协议过滤
[arp|ip|tcp|udp|icmp]
- 内容过滤
proto[offset:len]
过滤表达式可以用逻辑运算符连接,默认使用and连接。
2. 内容过滤
- proto[offset:len]表示获取proto协议报文offset开始的len字节内容;
- proto可以是ether,fddi,tr,wlan,ppp,slip,link,ip,arp,rarp,tcp,udp,icmp,ip6,radio;
- offset,表示偏移位置,默认为起始0;
- len,表示读取的字节数,默认为1;
可用于proto[offset:len]的比较操作符包括:>,<,>=,<=,=,!=;
- 设置了ip头部选项
ip[0] & 0x0f > 5
- 设置DF标志
ip[6] = 64
- 匹配小 TTL
ip[8] < 5
- 总的ip报文的长度大于 X 字节的包
ip[2:2] > X
- 源端口大于 1024 的 TCP 数据包
tcp[0:2] > 1024
TCP flag,tcp[13]可以使用
tcpflags
来表示,tcp-fin
,tcp-syn
,tcp-rst
,tcp-push
,tcp-push
,tcp-ack
,tcp-urg
也免去了计算实际值的麻烦;- SYN报文,
tcp[13] = 2
- SYN, ACK报文,
tcp[13] = 18
- SYN 或者 SYN-ACK报文,
tcp[13] & 2 = 2
- PSH-ACK报文,
tcp[13] = 24
- 包含 FIN 标记报文,
tcp[13] & 1 = 1
- RST报文,
tcp[13] & 4 = 4
- SYN报文,
- 设置了ip头部选项
3.具体报文格式
REFERENCE
- 大棚linux http://roclinux.cn/?p=2511
- 《cpdump 高级过滤技巧》