丢弃捕获的数据包

时间:2014-03-29 11:29:07

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

我正在工作的项目要求丢弃捕获的数据包。我使用libpcap成功捕获数据包,如此,

pcap_loop(handle, num_packets, got_packet, NULL);

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

我试着寻求帮助,结果空手而归。任何引用代码片段以执行通过libpcap删除捕获的数据包的要求都非常感谢。 :)


修改 如果通过libpcap无法做到这一点,欢迎提供其他建议。

请注意,在丢弃数据包之前,我需要获取要删除的数据包的destination/ source ip addresspayload

1 个答案:

答案 0 :(得分:1)

我不知道,如果有图书馆的话。 Libpcap仅用于网络数据包捕获,AFAIK。

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

您可以通过在netfilter中定义适当的规则来实现此目的。在那里,您还会找到libnftnl,它允许与Linux netfilter子系统通信。但是当我读到它时,你只能定义规则而不是丢弃单个数据包。