Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

数据包输入

  • 数据包输入

  • 加载现有文件(使用未知文件格式)

  • 从物理网络设备抓包

  • 改进现有方式(OS driver/libpcap/WinPCap)

  • 编写自己的抓包应用程序

  • 从 pipe 抓包

经常有人询问,在常见方式并不真正适用时,如何将数据包数据导入 Wireshark。

对于实时抓包,CaptureSetup 页面将全面概述已经实现的各种方式。

以下页面用于选择开发尚不可用功能的第一步。

选择哪种方式取决于你只是有一些 Wireshark 无法理解格式的抓包文件,还是确实想以 libpcap/WinPcap 不支持的方式捕获实时网络数据。

加载现有文件(使用未知文件格式)

所以你有一个外部应用程序(或它生成的文件),它以 Wireshark 无法理解的文件格式生成网络数据包数据。

你可以(按优先顺序):

  • 修改该应用程序,使其生成 Wireshark 兼容的文件格式(例如 Development/LibpcapFileFormat);这可能需要向 libpcap 添加新的 link-layer type(如果你正在这样做,请向 tcpdump-workers@tcpdump.org 请求为其分配一个 link-layer type 值——不要任意选择一个值)

  • 向 Wireshark 的 wiretap library 添加对该文件格式的支持(如果你了解该文件格式,或愿意进行逆向工程工作)

  • 编写一个外部转换器,将外部文件格式转换为 libpcap(但这样的话,为什么不直接把这个功能添加到 wiretap,让 Wireshark 可以直接读取该文件呢)

向 wiretap 添加另一种文件格式相当容易(当然,你必须了解该文件格式)。更多信息可在 Wireshark 源码的 wiretap 目录中的 README 文件中找到。

从物理网络设备抓包

所以你有一些特殊硬件,并想把捕获到的数据导入 Wireshark。

不幸的是,这项任务几乎肯定依赖平台。

改进现有方式(OS driver/libpcap/WinPCap)

标准抓包会使用操作系统的网卡驱动程序以及 libpcap/WinPcap 来实际捕获数据包数据。

改进这种方式是完成工作的首选方法,因为所有使用 libpcap/WinPcap 的应用程序都会从这项工作中受益。

对于常见的网络硬件类型,大多数(如果不是全部)开发工作已经完成。你可以在 Supported Capture Media 页面找到概览。因此剩下的工作是为你正在使用的 OS 编写网卡驱动程序(并且很可能也要为其他 OS 编写)。

对于非常特殊或全新的网络硬件等,你可能需要做更多工作。

优点:

  • 可在 Wireshark 和其他应用程序(如 ntop)内部进行抓包控制(方便)
  • 可用 capture filters

缺点:

  • 发布周期通常“较慢”
  • 各种 UNIX OS 发行版随附的 libpcap 版本可能相当陈旧

因此,如果你想这样做,应就你的项目联系 libpcap/WinPcap 团队,因为这不是 Wireshark 团队的主题。

编写自己的抓包应用程序

如果你不想使用标准方式,可以从头编写自己的抓包应用程序。

优点:

  • 与通用 libpcap/WinPcap 实现相比,可能具有更高性能(如果实现得当)
  • 可以轻松添加 libpcap/WinPcap/Wireshark 尚未包含的特殊功能(例如:triggers/alarms)
  • 可以使用提供抓包数据的专有机制(例如 libraries)

缺点:

  • 可能需要大量工作
  • 仍然需要实现依赖 OS 的驱动程序(如果没有从其他地方获得现成驱动)
  • 无法在 Wireshark 和其他应用程序内部进行抓包控制(不方便)
  • 没有 capture filters(直到实现为止)
  • 重复造轮子
  • 面临棘手实现问题的风险(这些问题可能已在 libpcap 中解决)

如果你已经有一些专有机制(例如基于厂商的 library)来获取抓包数据,这可能是一个选项。

从 pipe 抓包

如果你知道方法,可以使用 pipes 做很多奇怪的事情 😃

详情请参见 CaptureSetup 页面。

Imported from https://wiki.wireshark.org/Development/PacketInput on 2020-08-11 23:12:57 UTC

相关 Wireshark Wiki 页面

网络分析技术档案