首页 > 解决方案 > Wireshark 自动更新输出文件

问题描述

我正在使用 Wireshark 3.2.6 和 USBPcap。我想读取 Wireshark 在捕获 USB 数据包(.pcap)时创建的输出文件,并且我想支持实时读取,所以基本上当实时捕获更改输出文件(向其附加更多数据)时,我的应用程序将检测到该文件已更改并处理这些附加数据。这很好用,但问题是 Wireshark 仅在您专注于 Wireshark 应用程序时更新文件 - 当您将它放在屏幕上并且它是您正在使用的实际窗口时。似乎每次 Wireshar 在后台时,它都不会更改文件,而是以某种方式将数据存储到其内部缓冲区中,并且只有当您专注于 Wireshark 应用程序时,它才会将所有数据刷新到文件中。这不是

有什么办法可以关闭它并使 Wireshark 不缓冲数据包数据,而是不断地将它们写入文件,即使 Wireshark 本身不是屏幕上的主窗口?

标签: windowswiresharkpcap

解决方案


您可以使用 Wireshark 和 tshark 设置输出文件。两种解决方案都包含在内,为您提供更多触发捕获的余地。

您描述的当 Wireshark 不是焦点窗口时,它不写入数据包时的行为不是我可以在我的 Windows 机器上复制的东西。如果您可以复制此错误,您可能需要在 ask.wireshark.org 上提问。

线鲨

使用 Wireshark 3.4.5

使用 Capture > Options > Capture 将捕获文件设置为永久文件。

在此处输入图像描述

在此处输入图像描述

沙克

请改用 tshark,它是 Wireshark 的命令行等效项。您可能会或可能不会安装它,具体取决于您的安装。您可以像这样写入文件:

tshark -w my_live_capture.pcapng

开始捕获后,您应该能够将 my_live_capture.pcapng 输入到您的应用程序中。tshark 将不断更新此文件,直到您终止捕获。

您可以在 WSL 上验证这一点(powershell 中的拖尾文件有点困难),如下所示:

tail -f ---disable-inotify temp.pcap | tshark -r -

注意:根据https://github.com/microsoft/WSL/issues/3942,WSL尾部需要 ---disable-inotify 。

您可能还想看看 dumpcap 是否更适合您的需求,因为相比之下 tshark 的丢包率约为 0.2%。tshark(和 Wireshark)调用 dumpcap 以捕获。


推荐阅读