在工作中我们常会用到wireshark抓取数据包进行分析,当使用wireshark默认设置时,会捕获到大量冗余的数据包,如果没有过滤器过滤,我们很难找到自己想要抓取的数据,这个时候就需要用到wireshark的过滤器来过滤,它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。
wireshark提供的过滤器有捕捉过滤器和显示过滤器。
捕捉过滤器:用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。
显示过滤器:在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。
使用场景:
抓包过滤器:大流量网络环境故障检测,当进行数据包捕获时,只有满足给定的包含or排除表达式的数据包会被捕获。
显示过滤器:该过滤器根据指定的表达式用于在一个已捕获的数据包集合中,隐藏不想显示的数据包,或者只显示那些需要的数据包。
两种过滤器的目的是不同的。
捕捉过滤器是数据经过的第一层过滤器,它用于控制捕捉数据的数量,以避免产生过大的日志文件。
显示过滤器是一种更为强大(复杂)的过滤器。它允许您在日志文件中迅速准确地找到所需要的记录。
一、捕捉过滤器如何使用?
设置捕捉过滤器步骤:
1、选择capture(捕获)——>options(选项)
2、填写"capture filter"栏或者点击"capture filter"按钮为您的过滤器起一个名字并保存,以便在今后的捕捉中继续使用这个过滤器。
3、点击开始(Start)进行捕捉。
语法 | Protocol | Direction | Host(s) | Value | Logical Operations | Other expression |
---|---|---|---|---|---|---|
例子 | tcp | dst | 192.168.1.10 | 80 | and | tcp dst 192.168.1.100 3128 |
Protocol(协议):
常用的值:ether、fddi、ip、arp、rarp、tcp、udp
如果没有特别指明协议,则默认使用所有协议
Direction(方向)
常用的值:src、dst、src and dst、src or dst
如果没有特别指明来源或目的地,则默认使用“src or dst”作为关键字。
例如:“host 192.168.1.10”与“src or dst host 192.168.1.10”代表意义相同。
Host(主机)
常用的值:net、port、host、portrange
如果没有指定此值,则默认使用“host”关键字
Logical Operations(逻辑运算):
可能的值:not、and、or
举例:
tcp dst port 3128
显示目的TCP端口为3128的封包。
ip src host 192.168.1.10
显示源地址为192.168.1.10的封包。
host 192.168.1.10
显示目的或源IP地址为192.168.1.10的封包。
src portrange 2000-2500
显示来源为UDP或TCP,并且端口号在2000-2500范围内的封包。
not imcp
显示除了icmp意外的所有封包。(icmp包含ping、tracert)
src host 192.168.1.10 and not dst net 192.168.1.0/24
显示来源IP地址为192.168.1.10,但目的地址不是192.168.1.0/24的封包
二、显示过滤器
语法
语法 | Protocol | . String 1 | .String 2 | Comparison operator | Value | Logical Operations | Other expression |
---|---|---|---|---|---|---|---|
例子 | ftp | passive | ip | == | 192.168.1.10 | xor | icmp.type |
Protocol(协议):
可以使用OSI模型第2至第7层的协议
String1、String2(可选项):
协议的子类
Comparison operators(比较运算符):
英文写法 | C语言写法 | 含义 |
---|---|---|
eq | == | 等于 |
ne | != | 不等于 |
gt | > | 大于 |
lt | < | 小于 |
ge | >= | 大于等于 |
le | <= | 小于等于 |
Logical expressions(逻辑运算符):
英文写法 | C语言写法 | 含义 |
---|---|---|
and | && | 逻辑与 |
or | || |
逻辑或 |
xor | ^^ | 逻辑异或 |
not | ! | 逻辑非 |
举例:
1、需要显示arp和icmp协议的报文,则输入arp || icmp
2、需要显示来源或目的IP地址为10.180.108.55的封包,则输入:ip.addr == 10.180.108.55
3、显示源或目的tcp端口号为443的封包,则输入:tcp.port == 443