我们在使用wireshark去抓取协议log的时候,经常碰到抓到的log过大,而很难打开的想象。特别是对于测试时间久的case, log size几个G,甚至十几,几十个G的情况,对于这种情况,有两种处理的方法,一种是log分段存取,例如可以设置每50M存一次; 另一种方法是加入你只需要某一种协议的log,可以把它单独过滤存储,或者把不需要的协议/端口log 过滤掉。 本文介绍的就是capture filter捕捉过滤的设置方法。

捕捉过滤器的语法与其它使用LipcapLinux)或者WinpcapWindows)库开发的软件一样,比如著名的TCPdump。捕捉过滤器必须在开始捕捉前设置完毕,这一点跟显示过滤器是不同的\

设置捕捉过滤器的步骤是:
选择 capture -> options
填写"capture filter"栏或者点击"capture filter"按钮为您的过滤器起一个名字并保存,以便在今后的捕捉中继续使用这个过滤器。
点击开始(Start)进行捕捉。

 

语法:

Protocol

Direction

Host(s)

Value

Logical Operations

Other expression

例子:

tcp

dst

10.1.1.1

80

and

tcp dst 10.2.2.2 3128

 

Protocol(协议):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果没有特别指明是什么协议,则默认使用所有支持的协议。(除了过滤上述协议外,不能过滤其他协议,例如sctp.)

Direction
(方向):
可能的值: src, dst, src and dst, src or dst
如果没有特别指明来源或目的地,则默认使用 "src or dst" 作为关键字。
例如,"host 10.2.2.2""src or dst host 10.2.2.2"是一样的。 Host(s):
可能的值: net, port, host, portrange.
如果没有指定此值,则默认使用"host"关键字。
例如,"src 10.1.1.1""src host 10.1.1.1"相同。

Logical Operations(逻辑运算):
可能的值:not, and, or.
("not")具有最高的优先级。或("or")和与("and")具有相同的优先级,运算时从左至右进行。
例如,
"not tcp port 3128 and tcp port 23"
"(not tcp port 3128) and tcp port 23"相同。
"not tcp port 3128 and tcp port 23"
"not (tcp port 3128 and tcp port 23)"不同

例子:

tcp dst port 3128 

显示目的TCP端口为3128的封包。

ip src host 10.1.1.1

显示来源IP地址为10.1.1.1的封包。

host 10.1.2.3

显示目的或来源IP地址为10.1.2.3的封包。

src portrange 2000-2500

显示来源为UDPTCP,并且端口号在20002500范围内的封包。

not imcp

显示除了icmp以外的所有封包。(icmp通常被ping工具使用)

src host 10.7.2.12 and not dst net 10.200.0.0/16

显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。

(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8

显示来源IP10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在20010000之间,并且目的位于网络10.0.0.0/8内的所有封包。

 


注意事项:

当使用关键字作为值时,需使用反斜杠“\”
"ether 
proto \ip" (与关键字"ip"相同).
这样写将会以IP协议作为目标。

"ip proto \icmp" (
与关键字"icmp"相同).
这样写将会以ping工具常用的icmp作为目标。

可以在"ip""ether"后面使用"multicast""broadcast"关键字。
当您想排除广播请求时,"no broadcast"就会非常有用。

 


查看TCPdump的主页以获得更详细的捕捉过滤器语法说明。
Wiki Wireshark website上可以找到更多捕捉过滤器的例子。