1

是否可以将 tcp recv/send 的内容转储到 pcap 文件,然后让 wireshark 分析它。我想这样做是因为我想记录应用程序对话以调试问题,但我不想编写自己的解析器(wireshark 已经支持它)并且不一定相信应用程序能够正确解析帧。

4

1 回答 1

2

以下内容基于我专门在 Windows 上完成的工作。我不能说这对其他系统有多大的影响。FWIW,我建议编辑您的问题(或至少对其进行标记)以更清楚地了解您的目标操作系统。

如果您正在谈论将直接从 TCP 客户端接收到的内容写入 pcap 文件,答案是否定的。pcap 文件格式至少需要一些网络标头,例如 IP 和 TCP 标头,才能使文件有效。

我看到有四种方法。

  1. 您可以为从套接字读取的每个数据伪造这些标头。这不一定需要大量工作,但需要了解网络标头、传输标头和有效负载(即您的数据)之间的关系,以便一切正常工作。如果您只对 Wireshark 中的有效负载分析感兴趣,这可能是一种有效的方法。但是,如果您要在 Wireshark 中进行的分析是网络分析(即,包括网络标头的分析),那么您将要避免使用此选项并弄清楚如何直接捕获网络标头。
  2. 您可以使用原始套接字在网络层捕获网络流量。这将为您提供 IP 数据包 - IP 标头、TCP 标头和有效负载。您可以将其转储到使用LINKTYPE_RAW作为链接层标头类型的 pcap 文件中,Wireshark 将很好地读取该文件。我以前用过这种方法。
  3. 第三种方法是使用WinPcap来收集您的数据。这是 Wireshark 在幕后用来收集数据的软件,也是我现在使用的方法。如果您安装了 Wireshark,则 WinPcap 也已安装。WinPcap 有一个简单的 API,其中包含许多用于打开接口、收集数据并将其转储到 pcap 或pcap-ng文件的示例。
  4. 第四个选项是最简单的……只需使用 Wireshark 与您的应用程序同时收集数据。

HTH。

于 2013-06-28T16:14:05.043 回答