【问题标题】:Wireshark automatically update output fileWireshark 自动更新输出文件
【发布时间】:2021-05-07 21:57:35
【问题描述】:

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

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

【问题讨论】:

    标签: windows wireshark pcap


    【解决方案1】:

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

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

    Wireshark

    使用 Wireshark 3.4.5

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

    tshark

    请改用 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 以捕获。

    【讨论】:

    • 感谢您的回答。因此,您启动 Wireshark,将 USBPcap 选项设置为“从新连接的设备捕获”,通过 Capture->Options->Output 指定输出文件,然后单击开始?如果我这样做,我的文件不会自动更新。现在我发现我不一定需要将 Wireshark 作为我的主窗口,但是如果我尝试右键单击文件并获取其属性,则文件会更新。知道是什么原因造成的吗?
    • 这对于您的应用程序(或者您正在读取文件)来说有些奇怪,因为无论捕获机制如何,文件都会不断更新。如果不是这种情况,您可能需要向 Wireshark 提交错误。如果这回答了您的问题,请将其标记为这样。
    • 恐怕它没有回答我的问题:(。即使我没有运行我的应用程序也会发生这种情况。Wireshark 只是不会不断更新我的文件。
    • 这听起来像是您的计算机独有的问题。您可能需要进行更多故障排除(例如尝试另一台计算机)。
    【解决方案2】:

    这很好用,但问题是 Wireshark 仅在您专注于 Wireshark 应用程序时更新文件 - 当您将它放在屏幕上并且它是您正在使用的实际窗口时。好像每次 Wireshark 在后台时,它都不会更改文件,而是以某种方式将数据存储到其内部缓冲区中,并且只有当您专注于 Wireshark 应用程序时,它才会将所有数据刷新到文件中。

    Wireshark 程序自己写入实时捕获文件;要进行捕获,它会运行 dumpcap 程序,该程序是 Wireshark 发行版的一部分。该程序在后台运行,写入捕获文件,并向 Wireshark 主进程发送消息,告诉它一些数据包已写入文件;当 Wireshark 收到其中一条消息时,它应该从文件中读取这些数据包并更新显示。

    如果 dumpcap 没有写入文件,如果 Wireshark 不在前台,这是一个错误,您应该将其报告为问题the Wireshark issues list.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 2022-10-07
      相关资源
      最近更新 更多