我正在使用tshark从TCP数据包输出人类可读的文本。我使用data.text字段执行此操作。例如,我的tshark.exe开关包括:
-o data.show_as_text:TRUE -T fields -e data.text
这对于大多数数据包来说都很好。当发件人重新发送数据包时,麻烦就来了。在这种情况下,data.text始终为空白。
在分析Wireshark中的流量时,我发现重新传输的TCP帧(这些帧被标记为[TCP Retransmission]并包括注释“此帧是(怀疑)重新传输”)根本不包含“数据”字段-Wireshark不会重建它(即使我启用了“将数据作为文本解析”选项)。相反,这些帧具有一个“重传的TCP分段数据”字段(tcp.segment_data),其中不包含任何已解析的文本。
这是tshark / wireshark的错误吗?为什么没有为这些数据包构造数据字段?我是否还有其他方法可以从重传的TCP数据包中获取文本,还是我唯一的选择手动解码重传数据包的tcp.segment_data十六进制?
我经常监视的TCP连接已重传了数据包,因此我目前缺少关键数据。
答案 0 :(得分:0)
您是否启用了TCP重组?也许尝试使用-o tcp.desegment_tcp_streams:FALSE
禁用它?如果那没有帮助,则可能是您使用的Wireshark版本存在错误。您可以尝试upgrading to the latest stable version(在撰写本文时为2.6.1),然后重试。如果您的操作系统可用,您甚至可以尝试使用最新的automated installer,也可以尝试building Wireshark from sources。如果问题仍然存在,则可以提交Wireshark bug report以及示例捕获文件来说明问题。
您可能还想在命令行中添加Wireshark显示过滤器,以将输出限制为仅包含data.text
的那些数据包,例如-Y data.text
。
有关-Y
和其他选项的更多信息,请参考tshark
man page。