Appearance
Appearance
⚠️WinPcap 3.1 的远程抓包功能目前无法与 Wireshark 一起工作!!!⚠️
本页用于收集在尝试让此功能可用时获得的信息。此功能不能与 WinPcap 3.1 一起工作;它已使用 Ethereal 0.10.13 + WinPcap 4.0 alpha 1 进行测试,测试中使用 Cisco MDS 9216 交换机的 fcanalyzer 作为远程抓包设备,并且可以工作。它也应能与当前版本的 Wireshark 和 WinPcap 4.x 一起工作。
如果你确实需要它,可以尝试使用 analyzer 进行远程抓包。这个 analyzer 与 WinPcap 本身有相同的来源,因此就此功能而言,它可能比 Wireshark 更好用(目前)。然后你可以把抓包文件拿来,用 Wireshark 分析它们……
你可以在相关的 WinPcap 页面找到更多信息:Remote Capture,或查看本页底部的链接。
下面是让 Wireshark 远程工作的最简单设置。
daemon 可用于 Win32 和 Linux。我这里只说明 Win32 版本,Linux 版本的工作方式应该类似。
首先在远程机器上安装 WinPcap。之后,可以在以下位置找到 daemon:
C:\Program Files\WinPcap\rpcapd.exe
现在最简单的方法是从命令行启动 deamon:
rpcapd -n
-n 会关闭身份验证,因为 Wireshark 不能使用它,否则 daemon 无法与 Wireshark 一起工作。
也可以选择将 daemon 作为 Windows 服务运行,但我没有尝试过。
client 部分只在 Win32 上工作!
在 Wireshark 中,你只需在 Capture Options 对话框的 Interface 字段中输入类似下面的内容:
rpcap://[1.2.3.4]/\Device\NPF_
其中 1.2.3.4 是远程机器的 IP 地址,\Device\NPF_{12345678-1234-1234-1234-1234567890AB} 是要从中抓包的接口(在 linux 上会类似 eth0)。
那么,从哪里获取该接口名称呢?我是从远程机器上已安装的 Wireshark 中获得这个名称的。
如果你在 rpcap 协议用于在 daemon 和 client 之间传输抓包数据的同一个接口上抓包,很快(约 100 个包)就会产生大量流量,因为 deamon 会抓取自己的流量,从而产生更多流量……
没有深入思考的话,我看不出设置正确抓包过滤器的简单方法,因为用于传输 rpcap 数据的端口似乎是随机选择的?! (该端口似乎是在建立连接时协商的——我们也许可以就此询问 WinPcap)。
完成上述所有步骤后,你会得到一个正在运行的抓包。不幸的是,没有抓到任何数据包。
以下内容与开发者相关。我对此做过一些深入调试和更多测试。问题如下:
我们使用函数 pcap_dispatch() 从 WinPcap 获取新数据包。调用此函数时,会针对每个抓到的数据包执行一次回调。随后回调函数会处理该数据包(例如,将其保存到抓包文件中)。
从“远程接口”执行相同操作时,dispatch 函数看起来似乎按预期工作(例如,返回它已处理了一些数据包),但就是不会调用回调函数 😦 底层问题很可能是 WinPcap 用于远程抓包的“read”例程没有告诉远程机器开始抓包;相反,这一步是在 pcap_loop() 和 pcap_next_ex() 内部完成的,而不是在 pcap_dispatch() 中完成的。pcap_loop() 和 pcap_dispatch() 都会调用 WinPcap 的“read”例程;如果把告诉远程机器开始抓包的代码从 pcap_loop() 移到“read”例程中,那么 pcap_loop() 和 pcap_dispatch() 都会工作(并且 pcap_loop() 也不必知道或关心该抓包是否为远程抓包)。
尽管 pcap_dispatch() 函数在 API 文档中被标记为 deprecated,我仍会认为这是 WinPcap 中的一个 bug……
做一个快速且非常粗糙的 hack,把 pcap_dispatch() 替换为 pcap_next_ex() 函数(现在 WinPcap API 文档推荐使用它;不过,pcap_dispatch() 在 Wireshark 中可能工作得稍好一些,因为如果一次 read 中交付了多个数据包,它可以处理多个数据包;而且在 libpcap 中,pcap_dispatch() 不被认为是 deprecated API,也不会被移除,因为那会破坏源代码和二进制兼容性),远程功能似乎可以工作了 😃
这已在 WinPcap 4.0 中修复。
Corvus Technologies 的一位成员已将所有信息和操作说明汇总到一份文档中,说明如何让它工作。那里也有一个可用版本的安装程序。
说明:http: //www corvus net/documents/wireshark-remote
安装程序:http: //www corvus net/tools/ MD5:6095e0ec5e7c52b7feafad27201ef93a
此外,这里还有一个链接,指向 Ethereal-dev 邮件列表上关于此问题以及 Corvus 为启用远程数据包抓取所采用的变通方法/拼凑方案的讨论。
一个 bugzilla 条目(Gitlab issue #2809)详细说明了在 Linux 上构建 rpcap 协议支持所涉及的步骤。
Imported from https://wiki.wireshark.org/CaptureSetup/WinPcapRemote on 2020-08-11 23:12:05 UTC