大牛现身解困:网络数据截取
linux环境下!截取所有数据包并分析是否丢弃然后再交给系统协议栈,现在都有什么方法呢?实现原理呢?用socket_raw 和 socket_packet 类型的socket可以实现监听,但是可以实现分析并且丢弃吗?我总觉得不行。。
听说libpcap包可以实现这些功能,还有其他流行的方法吗?什么原理呢
网上搜索了半天没见着什么令人满意的答案,望大牛出来帮小弟一把:em02: 帮你顶!我也想知道。 用netfilter写个kernel module, 或者是用libipqueue,这个库可以把被iptables标记为queue的包发送到用户空间程序里,你改了以后可以直接使用ipqueue库把包返回到网络栈. 第一种方法最好,难度也不算太高。第二种需要iptables配合使用,有点麻烦。 原帖由 piaobo79 于 2008-7-26 13:35 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
用netfilter写个kernel module, 或者是用libipqueue,这个库可以把被iptables标记为queue的包发送到用户空间程序里,你改了以后可以直接使用ipqueue库把包返回到网络栈. 第一种方法最好,难度也不算太高。第二种需 ...
赞你…………方法不错 一般都是拷贝,不丢弃:em02: :em02: 原帖由 @sky 于 2008-7-27 10:47 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
一般都是拷贝,不丢弃:em02: :em02:
对,整一个copy过来就可以了 libiptc
:lol: 原帖由 piaobo79 于 2008-7-26 13:35 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
用netfilter写个kernel module, 或者是用libipqueue,这个库可以把被iptables标记为queue的包发送到用户空间程序里,你改了以后可以直接使用ipqueue库把包返回到网络栈. 第一种方法最好,难度也不算太高。第二种需 ...
:lol: :lol: 方法不错 piaobo79
发表于 2008-7-26 13:35
用netfilter写个kernel module, 或者是用libipqueue,这个库可以把被iptables标记为queue的包发送到用户空间程序里,你改了以后可以直接使用ipqueue库把包返回到网络栈. 第一种方法最好,难度也不算太高。第二种需要iptables配合使用,有点麻烦。
挂 netfilter 链只能截取投递到IP层的包,同时如果有使用AF_PACKET类型的程序一样是可以接受到所有的包。
个人觉得可以采用dev_add_pack添加过滤函数,当让在添加你的过滤函数值钱,必须先卸载掉ip_packet_type——如果高兴的话甚至可以吧AF_PACKET的套接字都“HOOK”了;然后在自己的过滤函数里面调用ip_rcv,此方法类似windows中api的 hook。
页:
[1]
2