过滤器


常用端口说明:


端口

端口说明

备注

23

Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。


80



443

ssl+http







1.扑捉指定<host>主机

        [src|dst] host <host>

        src :  表示源地址,也就是包发送地址;

        dst :   表示目标地址,也就是包的接受地址;

        如果 [ src | dst ]未指定,则指定地址出现在源地址或目标地址中的包都会被抓取。


2.过滤扑捉以太网<ehost>主机 

        ether [src|dst] host <ehost>

        此命令允许你过滤以太网主机地址。可以通过优先指定关键字 src | dst 在 关键词 ether 和 host 之间来确定关注的是源地址还是目标地址。如果没有指定,就和上面这个命令一样。


3.通过指定网关过滤抓包

        gateway host <host>

        通过制定host 作为网关包。也就是说,以太网源地址或目标地址是 host ,但 ip 地址和目标ip地址都不是host 的包。


4.通过指定子网掩码过滤抓包


        [src|dst] net <net> [{mask<mask>}|{len <len>}]

通过网络号进行过滤。可以选择优先指定src|dst 来确定抓取的是源网络或目标网络。如果没指定,网络出现在源地址还是目标地址的都会被选择。另外,你可以选择子网掩码或者CIDR(无类别域形式)。


5.协议端口过滤

      [tcp|udp] [src|dst] port <port]

        过滤tcp,udp协议及端口号。可以使用src|dst 和tcp|udp 关键词来确定是源还是目标,tcp 协议还是udp 协议。tcp|udp 必须出现在src|dst之前。


6.按包大小过滤

less|greater <length>

选择长度符合要求的包。(大于等于或小于等于)


7.指定协议层过滤

ip|ether proto <protocol>

选择有指定的协议在以太网层或是ip 层的包


8.过滤广告形式

ether|ip broadcast|multicast

            选择以太网/ip 层的广播或多播


9.自定义过滤规则

<expr> relop <expr>

创建一个复杂过滤表达式,来选择包的字节或字节范围符合要求的包。请


10.过滤器表达式对话框中也提供了一些过滤规则,根据需求自行调整和修改。




比较值:

表达式                    符号表示                    说明

eq                            ==                         示例:ip.addr == 192.168.1.111

ne                            !=                           示例:ip.addr != 192.168.1.110

gt                              >                           示例:frame.pkt_len > 10

lt                                <                          示例: frame.pkt_len < 128

ge                            >=                         示例:frame.pkt_len ge 0x100

le                              <=                          示例:frame.pkt_len <= 0x20



组合表达式:

表达式                    符号表示                    说明

and                             &&                         示例:ip.addr==10.0.0.5 and tcp.flags.fin
or                                  ||                           示例:ip.addr==10.0.0.5 or ip.addr==192.1.1.1
xor                               ^^                         示例:tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29
not                                 !                           示例:not llc


注:比如你要抓非 192.168.1.111 的所有数据包,filter 的写法不应该是  ip.addr != 192.168.1.111 ,  在数据包中,有可能双向中,都会包含这个地址,只要两个地址中,任何一个不包含这个地址这个条件就为真,所以,正确的写法应该是:!(ip.addr == 192.168.111)



常用过滤器:

过滤器                                            说明

tcp[13] & 32 == 32                        设置了 URG 位的TCP数据包

tcp[13] & 16 == 16                        设置了 ACK 位的TCP数据包

tcp[13] & 8 == 8                            设置了 PSH 位的TCP数据包

tcp[13] & 4 == 4                            设置了 RST 位的TCP数据包

tcp[13] & 2 == 2                            设置了 SYN 位的TCP数据包

tcp[13] & 1 == 1                            设置了 FIN 位的TCP数据包

tcp[13]  == 18                                TCP SYN-ACK 数据包

ether host 00:00:00:00:00:00:00        流入或流出你Mac地址的流量

!ether host 00:00:00:00:00:00:00       不流入或流出你Mac地址的流量

broadcast                                        仅广播流量

icmp                                                ICMP 流浪

icmp[0:2] == 0x0301                        ICMP 目标不可达、主机不可达

ip                                                    仅仅 IPv4 流量

ip6                                                  仅仅 IPv6 流量

udp                                                 仅仅UDP流量

!tcp.port == 3389                            排除RDP流量

tcp.flags.syn == 1                            具有SYN标志位的TCP数据包

tcp.flags.rst == 1                              具有RST标志位的TCP数据包

!arp                                                    排除ARP流量

http                                                  所有HTTP流量

tcp.port == 23 || tcp.port 21            文本管理流量(Telnet或FTP)

smp || pop || imap                            文本email流量(SMTP、POP或IMAP)



协议                                头部大小

以太网                                14字节(包含CRC)

IP 头                                    20字节

TCP头                                20字节(没有数据以及选项的TCP数据包也是20字节)