![是否有一个实用程序允许从 tcpdump 十六进制转储创建结构化数据?](https://linux22.com/image/86121/%E6%98%AF%E5%90%A6%E6%9C%89%E4%B8%80%E4%B8%AA%E5%AE%9E%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%85%81%E8%AE%B8%E4%BB%8E%20tcpdump%20%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E8%BD%AC%E5%82%A8%E5%88%9B%E5%BB%BA%E7%BB%93%E6%9E%84%E5%8C%96%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
有时我必须使用不知道如何解析的tcpdump
网络协议来解决问题。tcpdump
是否有一个实用程序可以读取十六进制转储格式的 tcpdump 数据包,然后根据我为此实用程序指定的结构解析它们?
就像是:
tcpdump -nxi any udp | the_utility "Packet_id:%d@60"
对于每个数据包将打印:
Packet_id:1
Packet_id:2
Packet_id:4
Packet_id:3
这个想法是,在偏移量 60 处有一个 32 位整数,我想将其以十进制格式打印到 STDOUT。
我知道 IP 碎片和 TCP 重组需要将某些状态传递到下一个十六进制转储才能正确解释。假设这对我来说不是问题。不过,如果您知道可以解决此问题的优雅解决方案,那就太好了。
虽然我喜欢 Wireshark,但我并不总是可以选择将数据包捕获文件复制到我的工作站以进行离线检查。另外,这些是我必须运行 tcpdump 的生产设备 - 这意味着我需要一个无需安装任何额外内容的解决方案。