【问题标题】:Drop captured packet丢弃捕获的数据包
【发布时间】:2014-03-29 11:29:07
【问题描述】:

我正在工作的项目需要丢弃捕获的数据包。我像这样使用libpcap 成功捕获了数据包,

pcap_loop(handle, num_packets, got_packet, NULL);

在回调函数中,我在 num_packets 参数中捕获给定数量的数据包。我的要求是丢弃捕获的数据包。

我尝试寻求帮助,结果却空手而归。非常感谢任何参考代码 sn-ps 来执行通过libpcap 丢弃捕获的数据包的要求。 :)


编辑 如果无法通过libpcap 提供其他建议,欢迎提出建议。

注意,在丢弃数据包之前,我需要获取要丢弃的数据包的destination/ source ip address 和payload。

【问题讨论】:

  • 这个问题可能对stackoverflow.com/q/1284759/1741542有帮助
  • @OlafDietsche 谢谢你的评论 :) 运气不好..我们必须想出自己的机制不是吗。有没有可以执行此操作的库?

标签: c linux libpcap packet-capture packet-sniffers


【解决方案1】:

我不知道,是否有图书馆。 Libpcap 仅用于网络数据包捕获,AFAIK。

根据我有限的知识,我会说丢弃数据包只是忽略或不转发它。但是,这不是在某些程序中完成的,而是在内核的网络堆栈中完成的。

您可以通过在netfilter 中定义适当的规则来完成此操作。在那里,您还可以找到libnftnl,它允许与 Linux netfilter 子系统进行通信。但在我阅读时,您只能定义规则而不能丢弃单个数据包。

【讨论】:

  • 谢谢先生的回复..我会检查你所说的:)
  • "Libpcap 仅用于网络数据包捕获,AFAIK。"你是 100% 正确的。 “我想说丢弃一个数据包只是忽略或不转发它。但这不是在某些程序中完成的,而是在内核的网络堆栈中完成的。”是的。这样做的方式取决于操作系统;这个问题被标记为“linux”,所以他们可能正在运行 Linux。我认为有一些方法可以利用堆栈,以便用户模式代码可以决定丢弃或不丢弃哪些数据包(而不是必须向内核提供规则)。
猜你喜欢
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
  • 2010-11-20
  • 1970-01-01
  • 2019-07-25
相关资源
最近更新 更多