Wireshark提供了简单而强大的过滤语法,你可以用它们建立复杂的过滤表达式。你可以比较包中的值,合并表达式为多个指定表达式。本节介绍了相关操作。
提示 | |
---|---|
你可以在Wireshark Wiki Display页找到发现大量的显示过滤范例。http://wiki.wireshark.org/DisplayFilters. |
包详情面板的每个字段都可以作为过滤使用。应用这些作为过滤将会仅显示包含该字段的包。例如:过滤字符串:TCP将会显示所有包含TCP协议的包。
通过"Help/Support Protocals"/帮助/协议支持菜单项访问"Display Filter Fields/显示过滤字段"可以查看完整完整的过滤字段列表。
你可以通过在许多不同的比较操作建立比较过滤。详见表 6.3 “显示滤镜比较操作符”
提示 | |
---|---|
你可以使用下表中的英语和比较符(c-link)项达到同样的效果,它们也可以混合使用。 |
表 6.3. 显示滤镜比较操作符
English | C-linke | 描述及范例 |
---|---|---|
eq | == | Equalip.addr==10.0.0.5 |
ne | != | Not equalip.addr!=10.0.0.5 |
gt | > | Greate thanframe.pkt_len>10 |
lt | < | Less thanframe.pkt_len<128 |
ge | >= | Greater than or equal
toframe.pkt_len ge 0x100 |
le | <= | Equalframe.pkt_len <= 0x20 |
你可以用逻辑操作符将过滤表达式组合在一起使用,见表 6.4 “显示过滤的逻辑操作符”
表 6.4. 显示过滤的逻辑操作符
English | C-linke | 描述和范例 |
---|---|---|
and | && | Logical ANDip.addr==10.0.0.5 and tcp.flags.fin |
or | || | Logical ORip.addr==10.0.0.5 or ip.addr==192.1.1.1 |
xor | ^^ | Logical XORtr.dst[0:3] == 0.6.29 xor tr.src[0:3] == 0.6.29 |
not | ! | Logical Notnot llc |
[...] | Substring
Operator Wireshark允许选择一个序列的子序列。在标签后你可以加上一对[]号,在里面包含用逗号(是不是冒号?)分离的列表范围。 eht.src[0:3] == 00:00:83 上例使用n:m格式指定一个范围。在这种情况下,n是起始位置偏移(0表示没有偏移,即是第一位,同理1表示向右偏移一位,便是第二位),m是从指定起始位置的区域长度。 eth.src[1-2] == 00:83 上例使用n-m格式一个范围。在本例中n表示起始位置偏移,m表示终止位置偏移 eth.src[:4]=00:00:83:00 上例使用:m格式,表示从起始位置到偏移偏移位置m。等价于0:m eth.src[4:]=20:20 上例使用n:格式,表示从最后位置偏移n个序列 eht.src[2] == 83 上例使用 n 形式指定一个单独的位置。在此例中中序列中的单元已经在偏移量n中指定。它等价于n:1 eth.src[0:3,102,:4,4:,2] == 00:00:83:00:83:00:00:83:00:20:20:83 Wireshark 允许你将多个分号隔开的列表组合在一起表示复合区域,如上例所示 |
警告 | |
---|---|
在组合表达式中使用"!="操作符,像eth.addr,ip.addr,tcp.port,udp.port等元素可能会产生非预期效果 |
经常有人用ip.addr ==1.2.3.4 表达式来选择所有包含ip地址为1.2.3.4的包,
如果有人想用ip.addr !=1.2.3.4 表达式来排除ip地址为1.2.3.4的包,很不幸。它不会像你期待的那样。
相反,那个表达式为真值得条件是源地址或目标地址中的任意一个不等于1.2.3.4即可。因此,那个表达式ip.addr !=1.2.3.4 可以被读作:"该包包含的ip字段值必须不为1.2.3.4"。因为一个ip数据报同含源地址和目标地址,只要两个地址有一个不为1,2,3,4表达式就为真。
接着上面的话题,如果你真想过滤捕捉文件中,ip地址包含1.2.3.4的包,正确的表达式应该是!(ip.addr==1.2.3.4)。它可以读作:"显示所有'字段名为ip.addr值存在1.2.3.4'为非真的包'",换句话说:"筛选所有字段名ip.addr的值中未出现1.2.3.4的包"