c - 丢弃捕获的数据包

标签 c linux libpcap packet-capture packet-sniffers

我做的项目有丢弃抓包的需求。我像这样使用 libpcap 成功捕获数据包,

pcap_loop(handle, num_packets, got_packet, NULL);

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

我尝试寻求帮助,结果却两手空空。非常感谢任何引用代码片段来执行通过 libpcap 丢弃捕获的数据包的要求。 :)


编辑 如果通过 libpcap 无法做到这一点,欢迎提出替代建议。

请注意,在丢弃数据包之前,我需要获取要丢弃的数据包的目标/源 ip 地址有效负载

最佳答案

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

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

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

关于c - 丢弃捕获的数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22730498/

相关文章:

linux - softirq 和 tasklet 在哪个上下文中?

c - 生成具有重复的集合元素的 k 组合的算法?

c++ - 如何在 GCC 中启用反斜杠支持?

c - 为什么没有分号给出错误,但太多分号却没有?

linux - 从 usr/include 中删除一个文件?

c - 如何设置libpcap过滤器获取arp包

tomcat - 以root权限启动tomcat webapp

c - 如何在没有 pcap_breakloop 的情况下中断 pcap_loop 循环

c++ - 多播接收器套接字中的重复数据包

C - 合并排序的合并部分