【发布时间】:2014-02-23 17:35:42
【问题描述】:
我在 Wireshark 中捕获了一些应用程序数据,(FIX 消息),我想知道是否有一种方法可以将每个数据包的 tcp 数据层导出到一个单独的文件中,每个数据包一行/一行。
我以为曾经有一个名为 tcp.data 的函数,但在我使用的 wireshark 版本(v1.10.1)中似乎不存在。
我一直计划在 Wireshark 首选项中添加一个额外的列,并将其设置为键入“自定义”,然后将 tcp.data 放入该字段。然后将此列导出到文本文件。
提前感谢您的任何想法或建议。
PS。我的另一个想法是编写一个脚本来解析捕获文件并有效地切断 tcp 层数据前面的前导标头,但这需要一些时间 - 希望在 Wireshark 本身中已经存在一种方法来执行此操作。
更新 1: 扩展艾萨克的解决方案,我想出了以下内容,但这实际上是打印整个 tcp 段,而不仅仅是段内的数据。我也尝试过 tcp.segment_data 但这也会导致同样的问题,即输出的不仅仅是 tcp 数据有效负载。不幸的是,目前最好的选择是手动解析 pcap 文件。有没有其他人有任何建议,或者可能发现我在 tshark 命令语法中的错误?
tshark -r capture_chopped.pcap -c4 -2 -R "(tcp.len > 0)" -T fields -d tcp.port==2634,echo -e tcp.segment -w - > output.2
更新 2 - 问题已解决: 我发现 tshark 的每个选项都没有提供我需要的全部信息,所以我开始创建自己的 Perl 脚本来直接从 pcap 文件中提取 FIX 消息字符串。 Perl 脚本包含在下面,以防它对其他处于类似情况的 PCAP 文件有所帮助。
【问题讨论】: