表达式共有7种基本元素。基本元素之间可以用not and or
这3种符号相连,这3种符号中,not
符号的优先级最高,and
和or
符号的优先级相同。
另外:按照语法表达式的要求,表达式中有很多地方可以省略,但是为了表达式的可读性,禁止省略比较好。
基本形式如下:
proto(常见的取值有:tcp,udp;未指定,默认取为跟‘type’相应的所有合法值) dir(常见的取值有:src,dst,src or dst,src and dst;未指定,默认值为‘src or dst’) type(可取值有:host,net,port,portrange;未指定,默认值为‘host’) id(名字或者数字)
基本含义如下:
proto字段用于限定协议;
dir字段用于指定过滤条件是应用到源地址还是目标地址,或者是两者。
type字段用于指定过滤条件是应用到"host,net,port,portrange"之中的哪种类型
id字段一般为地址,端口号,端口号范围
比如:
#抓取使用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
关键词为proto
,基本形式如下:
proto protocol
基本含义如下:
使用protocol协议的IPv4或者IPv6包符合条件
比如:
#抓取使用tcp协议的IPv4或者IPv6包
proto tcp
关键词为gateway
,基本形式如下:
gateway host
基本含义:抓取使用host作为网关的包。不常用。
关键词为broadcast
,基本形式如下:
broadcast
基本含义:抓取Ethernet广播包。不常用。
关键词为less
,基本形式如下:
less length
基本含义:抓取长度小于等于length的包。不常用。
关键词为greater
,基本形式如下:
greater length
基本含义:抓取长度大于等于length的包。不常用。
基本形式如下:
expr(由“数值常量,运算操作符[+,-,*,/,&,|,<<,>>],长度操作符[关键词为'len'],访问器[即'[]']”组成) relop(可取值有:>,<,>=,<=,=,!=) expr(由“数值常量,运算操作符[+,-,*,/,&,|,<<,>>],长度操作符[关键词为'len'],访问器[即'[]']”组成)
基本含义:抓取使得关系表达式满足的包。不常用。
欲监听本机,需要使用相应的网卡,在笔者机器上,是“lo”这个网卡。
具体命令如下:
sudo tcpdump -i lo 'tcp src or dst port 3306'
欲监听互联网主机,需要使用相应的网卡,在笔者机器上,是“eth0”这个网卡。
具体命令如下:
sudo tcpdump -i eth0 'ip src or dst host www.baidu.com'
欲监听与互联网主机的tcp通信,使用“eth0”这个网卡;欲监听与本机的tcp通信,使用“lo”这个网卡。
具体命令分别为:
#tcp是关键词,必须被转义
sudo tcpdump -i eth0 'proto \tcp'
#tcp是关键词,必须被转义
sudo tcpdump -i lo 'proto \tcp'
参考文献:
[1]man 7 pcap-filter