Wireshark有错误吗?
不能正确过滤 ip.addr == 10.222.22.77,udp包含0a2001112233 过滤得当 ip.addr == 10.222.22.77,udp包含0a20
Frame 9594: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on
interface 0
Ethernet II, Src: QQ!! (ZZ!!), Dst: BrocadeC_16:d4:00 (XX!!)
Internet Protocol Version 4, Src: 10.222.22.82, Dst: 10.222.22.77
User Datagram Protocol, Src Port: 6060, Dst Port: 6060
Data (32 bytes)
Data: 0a20011122334455660000000a05000631090000082a0000...
[Length: 32]
答案 0 :(得分:0)
你可以尝试:
ip.addr == 10.222.22.77 and udp contains 0a:20:01:11:22:33
编辑:如果您有dftest
,则可以dftest "udp contains 0a20"
运行,您将获得:
Filter: "udp contains 0a20"
Constants:
00000 PUT_FVALUE 0a:20 <FT_PROTOCOL> -> reg#1
Instructions:
00000 READ_TREE udp -> reg#0
00001 IF-FALSE-GOTO 3
00002 ANY_CONTAINS reg#0 contains reg#1
00003 RETURN
...然后将其与dftest "udp contains 0a2001112233"
进行比较:
Filter: "udp contains 0a2001112233"
Constants:
00000 PUT_FVALUE 30:61:32:30:30:31:31:31:32:32:33:33 <FT_PROTOCOL> -> reg#1
Instructions:
00000 READ_TREE udp -> reg#0
00001 IF-FALSE-GOTO 3
00002 ANY_CONTAINS reg#0 contains reg#1
00003 RETURN
引用wireshark-filter手册页:
“contains
”运算符允许过滤器搜索字符序列,表示为字符串(带引号或未带引号),或字节,表示为字节数组,或单个字符,表示为C风格的字符常量。
在前一种情况下,Wireshark将数据解释为字节数组,但在后一种情况下,它将数据解释为不带引号的字符串,因此通过在字节之间包含冒号,您可以指示Wireshark将数据解释为一个字节数组,这是意图。
我不知道这种行为(将1或2个字节解释为字节数组,但是将2个以上的字符串解释为字符串)应该被视为Wireshark错误,但也许它应该是,案件可随意提交Wireshark bug。然而,它是当前的行为,所以最好的做法是在每个字节后总是添加一个冒号,如果你正在搜索字节,那么Wireshark就像预期的那样。