0%

网络抓包过滤表达式

一、表达式构成##

表达式共有7种基本元素。基本元素之间可以用not and or这3种符号相连,这3种符号中,not符号的优先级最高,andor符号的优先级相同。
另外:按照语法表达式的要求,表达式中有很多地方可以省略,但是为了表达式的可读性,禁止省略比较好。

1.1、第一类基本元素###

基本形式如下:

1
proto(常见的取值有:tcp,udp;未指定,默认取为跟‘type’相应的所有合法值) dir(常见的取值有:src,dst,src or dst,src and dst;未指定,默认值为‘src or dst’) type(可取值有:host,net,port,portrange;未指定,默认值为‘host’) id(名字或者数字)

基本含义如下:

1
2
3
4
proto字段用于限定协议;
dir字段用于指定过滤条件是应用到源地址还是目标地址,或者是两者。
type字段用于指定过滤条件是应用到"host,net,port,portrange"之中的哪种类型
id字段一般为地址,端口号,端口号范围

比如:

1
2
3
4
5
6
7
8
9
10
11
#抓取使用tcp协议,源主机地址为192.168.1.1的包
tcp src host 192.168.1.1

#抓取使用udp协议,源主机或者目标主机地址端口为8886的包
udp src or dst port 8886

#抓取使用tcp协议,源主机和目标主机网络地址都为192.168.1.0的包
tcp src and dst net 192.168.1.0

#抓取使用tcp协议,目标主机端口地址范围为6000-6008的包
tcp dst portrange 6000-6008

1.2、第二类基本元素###

关键词为proto,基本形式如下:

1
proto protocol

基本含义如下:

1
使用protocol协议的IPv4或者IPv6包符合条件

比如:

1
2
#抓取使用tcp协议的IPv4或者IPv6包
proto tcp

1.3、第三类基本元素###

关键词为gateway,基本形式如下:

1
gateway host

基本含义:抓取使用host作为网关的包。不常用。

1.4、第四类基本元素###

关键词为broadcast,基本形式如下:

1
broadcast

基本含义:抓取Ethernet广播包。不常用。

1.5、第五类基本元素###

关键词为less,基本形式如下:

1
less length

基本含义:抓取长度小于等于length的包。不常用。

1.6、第六类基本元素###

关键词为greater,基本形式如下:

1
greater length

基本含义:抓取长度大于等于length的包。不常用。

1.7、第七类基本元素###

基本形式如下:

1
expr(由“数值常量,运算操作符[+,-,*,/,&,|,<<,>>],长度操作符[关键词为'len'],访问器[即'[]']”组成) relop(可取值有:>,<,>=,<=,=,!=) expr(由“数值常量,运算操作符[+,-,*,/,&,|,<<,>>],长度操作符[关键词为'len'],访问器[即'[]']”组成)

基本含义:抓取使得关系表达式满足的包。不常用。

二、表达式应用举例##

2.1、监听本机Mysql数据库绑定的3306端口###

欲监听本机,需要使用相应的网卡,在笔者机器上,是“lo”这个网卡。
具体命令如下:

1
sudo tcpdump -i lo 'tcp src or dst port 3306'

2.2、监听与www.baidu.com的通信###

欲监听互联网主机,需要使用相应的网卡,在笔者机器上,是“eth0”这个网卡。
具体命令如下:

1
sudo tcpdump -i eth0 'ip src or dst host www.baidu.com'

2.3、监听tcp通信###

欲监听与互联网主机的tcp通信,使用“eth0”这个网卡;欲监听与本机的tcp通信,使用“lo”这个网卡。
具体命令分别为:

1
2
#tcp是关键词,必须被转义
sudo tcpdump -i eth0 'proto \tcp'
1
2
#tcp是关键词,必须被转义
sudo tcpdump -i lo 'proto \tcp'

参考文献

[1]man 7 pcap-filter

您的支持将鼓励我继续分享!