2017-08-07 76 views
0

Wireshark中有错误吗?Wireshark UDP过滤十六进制无法正常工作不?

不正确 过滤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

你可以尝试:

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按预期工作。

+0

这有些如何工作。长度限于字符串一些如何? – Sein3i8

+0

我修改了我的答案以提供更详细的解释。 –