windows - Wireshark 自动更新输出文件
问题描述
我正在使用 Wireshark 3.2.6 和 USBPcap。我想读取 Wireshark 在捕获 USB 数据包(.pcap)时创建的输出文件,并且我想支持实时读取,所以基本上当实时捕获更改输出文件(向其附加更多数据)时,我的应用程序将检测到该文件已更改并处理这些附加数据。这很好用,但问题是 Wireshark 仅在您专注于 Wireshark 应用程序时更新文件 - 当您将它放在屏幕上并且它是您正在使用的实际窗口时。似乎每次 Wireshar 在后台时,它都不会更改文件,而是以某种方式将数据存储到其内部缓冲区中,并且只有当您专注于 Wireshark 应用程序时,它才会将所有数据刷新到文件中。这不是
有什么办法可以关闭它并使 Wireshark 不缓冲数据包数据,而是不断地将它们写入文件,即使 Wireshark 本身不是屏幕上的主窗口?
解决方案
您可以使用 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 以捕获。
推荐阅读
- api - 如何在经典 ASP 中从 SOAP 返回收据信息
- angular - 我应该如何为这些查询参数的 if 语句写出单元测试 if 语句?
- c# - 如何在 vps 上使用 Entity Framework 代码优先发布 ASP.NET MVC5 项目,而不重新创建数据库?
- visual-studio - Visual Studio 不允许我设置不同的启动项目
- pine-script - 将 pine 脚本 v2 转换为 v3 / v4
- docker-compose - 无法获取 Spring - Angular 应用程序部署在 Google 云上
- microservices - 处理微服务之间用户的即时阻塞和更新
- java - 字符串索引异常
- laravel - Laravel 选择并非所有相关模型
- spring - Spring ElasticSearch 重新索引文档