【发布时间】:2010-11-20 01:31:19
【问题描述】:
是否可以让 libpcap 删除一个数据包,而不是在它通过时嗅探它?我想拦截每个数据包并将其与测量数据一起封装成一个新数据包,但两个数据包(我的和原始数据包)都到达目的地。
【问题讨论】:
-
因为这个问题是关于 libcap 的,你可能想添加一个 libpcap 标签。
是否可以让 libpcap 删除一个数据包,而不是在它通过时嗅探它?我想拦截每个数据包并将其与测量数据一起封装成一个新数据包,但两个数据包(我的和原始数据包)都到达目的地。
【问题讨论】:
这是不可能的。您需要编写一个驱动程序(针对您的操作系统)以使网络堆栈过滤掉数据包。
【讨论】:
echo 0 > /proc/sys/net/ipv4/ip_forward 关闭不转发到此主机的数据包。
您可以做到这一点的唯一方法是成为发送方和接收方之间的唯一物理路径,并关闭拦截器上的数据包转发。
如果您正在捕获无线流量,则无能为力。没有任何软件库可以去除环境空气中的无线电波。
【讨论】:
不,libpcap 不能“删除数据包”。
不太清楚您想要实现什么,但您似乎想要接收数据,向其中添加一些附加信息,然后重新发布。如果您使用的是 UDP 等数据报协议,那么您可以简单地将增强数据重新发送到不同的 UDP 端口。
【讨论】:
作为对 Ben S 的回应,您无法从空中删除数据包,但您可以阻止它们到达目的地 - 使用 ARP 缓存中毒等。
【讨论】:
正如其他人所说,您不能使用 libpcap。 libpcap 是一个被动监听器。如果你在 Linux 上,你可以使用一个 netfilter,它连接到 iptables。这是一个如何做到这一点的示例。
【讨论】: