我想解析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)
相同的两个ping在正常情况下看起来像这样,没有自定义字段tshark:
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已经知道如何解码它们,我只需要弄清楚如何在我的解析中得到它。
答案 0 :(得分:1)
答案 1 :(得分:1)
自tshark
的1.11.x和1.12版本起,字段名称为_ws.col.Protocol
和_ws.col.Info
,而不是col.Protocol
和col.Info
。< / p>
示例:
tshark -T fields -e _ws.col.Protocol -e _ws.col.Info