我使用rawsockets在C中制作了一个数据包嗅探器,该嗅探器嗅探了指定端口上的所有传出UDP流量。
现在,我想丢弃与某个有效负载匹配的某些传出UDP数据包,以便可以使用其他有效负载重新发送它们。
在这种情况下,嗅探器将不再有用,因为它似乎无法显示检测到的网络流量。
有没有办法在不修改内核代码的情况下丢弃与Linux系统上某个有效负载和端口相匹配的数据包?嗅探器对我的目标有用吗?
方案1:创建TAP
接口(如果原始接口是以太网或模拟接口),然后将网络地址移动到该接口。分析到达物理接口的数据包,然后,如果允许通过,则将其发送到此TAP接口的进程侧。反之亦然,网络堆栈发送到TAP接口的数据包是通过程序获取的,并注入到物理接口中。
方案2:使用子系统的NFQUEUE
目标iptables
。所有满足规则条件的数据包都将传递到用户区域分析器进行检查,如果允许通过,则重新注入。从某种意义上讲,这是更好的选择,因为只有所有数据包中需要的子集才可以定向到您的过滤器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句