一、表达式构成##
表达式共有7种基本元素。基本元素之间可以用not and or
这3种符号相连,这3种符号中,not
符号的优先级最高,and
和or
符号的优先级相同。
另外:按照语法表达式的要求,表达式中有很多地方可以省略,但是为了表达式的可读性,禁止省略比较好。
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 | proto字段用于限定协议; |
比如:
1 | #抓取使用tcp协议,源主机地址为192.168.1.1的包 |
1.2、第二类基本元素###
关键词为proto
,基本形式如下:
1 | proto protocol |
基本含义如下:
1 | 使用protocol协议的IPv4或者IPv6包符合条件 |
比如:
1 | #抓取使用tcp协议的IPv4或者IPv6包 |
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 | #tcp是关键词,必须被转义 |
1 | #tcp是关键词,必须被转义 |
参考文献
[1]man 7 pcap-filter