只抓取自己关心的数据包。有时候抓取所有的包,然后显示过滤,导致抓取的内容太多,影响性能,因此可以只抓取自己关心的数据。
特别注意:抓包过滤和显示过滤的语法不一样。
显示过滤 tcp.port == 9845,而抓包过滤是 tcp port 9845。wireshark抓包过滤和linux下的tcpdump语法一样,linux下tcpdump抓包过滤如下:
tcpdump -i any -s 0 tcp port 9845 -w test.pcap // 抓包写入文件
tcpdump -i any -s 0 tcp port 9845 -A // 抓包直接显示
抓包过滤设置:Capture-->Options-->Capture Filter,输入抓包过滤,语法正确显示绿色,否则显示红色。
语法:Protocol Direction Host Value Logical Operations Other expression
例子:tcp dst port 80 and tcp port 3128
Protocol(协议):
可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
如果没有特别指明是什么协议,则默认使用所有支持的协议。
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:
可能的值: net, port, host, portrange.
如果没有指定此值,则默认使用"host"关键字。
例如,"src 10.1.1.1"与"src host 10.1.1.1"相同。
注意:Host的取值和协议有关,前面是ip,对应host,前面是tcp,udp,对应port。tcp,udp协议首部只有端口的概念,ip地址在IP协议首部。
一个很实用的选项是端口范围,如下: tcp portrange 9530-9538
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)"不同。
注意:可以使用&& || ! 代替 and or not