tshark:仅解析特定数据包

tshark:仅解析特定数据包

目前我这样做是为了读取网络捕获文件:

tshark -r myfile icmp

它仅打印 ICMP 数据包,它是 IP 之上的协议(不是 UDP 或 TCP)。

但这myfile是一个包含大量 HTTP 流量的大文件。我发现tshark处理这个文件需要很长时间,部分原因是它完全处理了所有 TCP 数据包,甚至剖析了 HTTP 数据。我意识到这一点是因为它打印了与 HTTP 剖析相关的错误消息。

因为我知道我想要的 ICMP 数据包永远不会在 TCP 内部,所以我尝试了这些:

tshark -r myfile 'not tcp and icmp'
tshark -r myfile -2 -R 'not tcp' icmp

但是 tshark 仍然会解析 HTTP 数据包(我再次知道这一点,因为我看到了 HTTP 解析器错误消息)。

当低级协议不匹配时,我想通过不解析高级协议来节省时间(并避免由于解析器错误而导致崩溃)。

我知道我可以按照协议拆分我的捕获文件,但这并不实用,因为我想要查看的确切内容是无法提前知道的。

我也尝试了-O启用特定解剖器的选项,但是这会tshark打印每个数据包的完整多行详细信息,这不是我想要的。

我怎样才能tshark跳过解析特定低级协议的数据包?

我正在使用 tshark 1.10.6,但如果需要,我可以使用更新的版本。

答案1

你的语法不正确。你似乎混淆了Wireshark 显示过滤器语法和pcap 过滤器捕获过滤器语法。

使用最新稳定版本的沙克(目前为 2.4.0),您可以指定与选项一起使用的显示过滤器-Y。例如:

tshark -r myfile -Y "icmp"

-Y选项在 1.10.6 版本中也可用。

或者,您可以使用读取过滤器如下所示,但我一般坚持上面的显示过滤方法:

tshark -r myfile -2R "icmp"

相关内容