【问题标题】:Wireshark : how to force to drop packets with LUA?Wireshark:如何使用 LUA 强制丢弃数据包?
【发布时间】:2025-12-25 07:25:11
【问题描述】:

在使用使用 TCP 套接字的 JTAG 调试探针时,我在嗅探环回接口时遇到了一个问题。它完全淹没了环回,并在几秒钟后冻结了 Wireshark。

作为一种解决方法,我为这种情况制作了一个虚拟 LUA 解析器(redlink-server 协议)。 Wireshark 不再冻结,但它会在几分钟内产生 8Gb 的数据包...... (该插件包含一个空的解析器功能,添加将此解析器注册为 TCP 端口 3490)

有没有一种简单的方法可以从转储文件中删除这些数据包而不会使我的 RAM 溢出?

坦克提前

托马斯。

【问题讨论】:

  • 您是要捕获 JTAG 调试探测流量还是要排除它?假设您试图排除它,您可以添加一个捕获过滤器来仅捕获您感兴趣的流量,或者您可以添加一个捕获过滤器来专门排除 JTAG 流量。例如,要排除端口 3490 上的流量,您可以使用 not tcp port 3490。有关捕获过滤器的更多信息,请参阅pcap-filter
  • @ChristopherMaynard 我不想从 TCP 3490 中排除流量。使用过滤器,只过滤wireshark 上显示的内容,不是吗?我害怕帧仍然被捕获,也许我错了。 Wireshark 捕获 5 分钟后将占用 24G 内存(33,000,000 个 TCP 数据包)

标签: tcp lua wireshark wireshark-dissector


【解决方案1】:

您可以应用捕获过滤器,而不是显示过滤器,以避免捕获流量。在您的情况下,排除不需要的流量的捕获过滤器将是 not tcp port 3490

有关捕获过滤器的更多信息,请参阅 pcap-filter,以及 Wireshark 用户指南 Section 4.10. Filtering while capturing

【讨论】:

  • 谢谢,我混淆了显示过滤器和捕获过滤器......我的错。做not tcp port 3490 成功了。谢谢
  • 不客气。请注意,使用捕获过滤器时,有时可能存在优化空间。例如,我提供的过滤器产生 20 条 BPF 指令,因为它同时检查 IPv4 或 IPv6 数据包,并检查源端口和目标端口。但是,如果您知道 IPv6 不适用,并且您只知道目标端口很重要,则可以使用此过滤器将 BPF 指令的数量从 20 减少到 11:ip and not tcp dst port 3490。使用 Wireshark 的 "Compile BPFs" 按钮查看生成的指令或使用 dumpcap-d 选项。
  • 感谢您提供更多信息。如果我可以直接将此过滤器添加到 LUA 插件中也会很好。