1

我想解析 tshark 的标准头输出。由于默认值不起作用,我正在使用一个自定义字段解析器,它几乎可以做同样的事情。我缺少的是协议名称的解析。我的命令是:

sudo tshark -b 256 -P -T fields -e frame.time_epoch -e ip.src -e ip.dst -e ip.proto -e ip.len -e col.Info -E separator=';' -b filesize:65535 -b files:10 -w tshark_tmp

这几乎可行,我得到的是(这个例子是捕获两个 ping):

1378869929.862628000;192.168.78.252;192.168.78.53;1;84;Echo (ping) request  id=0x0abe, seq=65/16640, ttl=64
1378869929.863188000;192.168.78.53;192.168.78.252;1;84;Echo (ping) reply    id=0x0abe, seq=65/16640, ttl=64 (request in 1)

在正常的、没有自定义字段的 tshark 中,相同的两个 ping 看起来像这样:

0.000000 192.168.78.252 -> 192.168.78.53 ICMP 98 Echo (ping) request  id=0x0abe, seq=13/3328, ttl=64
0.000707 192.168.78.53 -> 192.168.78.252 ICMP 98 Echo (ping) reply    id=0x0abe, seq=13/3328, ttl=64 (request in 1)

我需要解决的主要区别在于我84的协议,而 tshark 打印ICMP 98. 我可以实现自己的查找表,但是有大量的协议,tshark 已经知道如何解码它们,我只需要弄清楚如何在我的解析中得到它。

4

2 回答 2

1

找到了答案

-e col.Protocol

像往常一样,你解决一个问题好几天,发布问题然后找到答案。

于 2013-09-11T05:01:14.453 回答
1

从 1.11.x 和 1.12 版本开始tshark,字段名称是_ws.col.Protocoland _ws.col.Info,而不是col.Protocoland col.Info

例子:

tshark -T fields -e _ws.col.Protocol -e _ws.col.Info

来源:tshark 1.11.3 和 1.12.0-rc2 中缺少 col.Protocol

于 2014-06-21T20:55:35.953 回答