我已应用udp
过滤器来仅捕获 UDP 流量,如Wireshark 维基:
仅显示基于 UDP 的流量:
udp
但是,这不仅仅显示 UDP 流量。它还显示 UDP 流量以及在 UDP 之上构建的所有内容。
由于我只想分析我们自己的 UDP 流量,而且我还没有实现解析器,所以我正在寻找一种方法来仅显示无法识别为任何其他协议的 UDP 流量。
我想避免添加要排除的协议列表,例如避免在过滤器中出现长长其他协议列表:
udp && !http && !dhcpv6 && !bootp && !smb && !cldap && !mdns && !llmnr
如何才能捕获无法识别为其他协议的 UDP 流量?
答案1
首先请注意,您正在使用 Wireshark 的展示过滤器,与 libpcap 的捕获过滤器分开(并且非常不同)。(libpcap 本身有一个udp
过滤器,但它只能理解很少的协议。因此,您将捕获所有内容,但会过滤显示的列表。)
在 Wireshark 中,“Frame”部分包含有关所解剖数据包的各种元数据,例如:
Protocols in frame: eth:ethertype:ip:udp:dns
这对应于frame.protocols
字段。现在应用正则表达式~
使用或匹配matches
:
udp && frame.protocols ~ ":udp$"
这将匹配最后识别的协议为 UDP 的所有数据包(即frame.protocols
以文本结尾:udp
)。请注意 - 某些流量可能会被误检测为某些模糊协议,即使事实并非如此。
(udp &&
前缀是一种优化——与字符串正则表达式匹配相比,协议匹配可能更有效地丢弃非 UDP 流量。)