HJLin 发表于 2008-07-25 22:28

大牛现身解困:网络数据截取

linux环境下!截取所有数据包并分析是否丢弃然后再交给系统协议栈,现在都有什么方法呢?实现原理呢?
用socket_raw 和 socket_packet 类型的socket可以实现监听,但是可以实现分析并且丢弃吗?我总觉得不行。。
听说libpcap包可以实现这些功能,还有其他流行的方法吗?什么原理呢

网上搜索了半天没见着什么令人满意的答案,望大牛出来帮小弟一把:em02:

76ersjy2 发表于 2008-07-25 22:41

帮你顶!我也想知道。

daniudaniu 发表于 2008-07-26 08:29

piaobo79 发表于 2008-07-26 13:35

用netfilter写个kernel module, 或者是用libipqueue,这个库可以把被iptables标记为queue的包发送到用户空间程序里,你改了以后可以直接使用ipqueue库把包返回到网络栈. 第一种方法最好,难度也不算太高。第二种需要iptables配合使用,有点麻烦。

gigabyte 发表于 2008-07-26 19:15

原帖由 piaobo79 于 2008-7-26 13:35 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
用netfilter写个kernel module, 或者是用libipqueue,这个库可以把被iptables标记为queue的包发送到用户空间程序里,你改了以后可以直接使用ipqueue库把包返回到网络栈. 第一种方法最好,难度也不算太高。第二种需 ...

赞你…………方法不错

@sky 发表于 2008-07-27 10:47

一般都是拷贝,不丢弃:em02: :em02:

Godbach 发表于 2008-07-29 10:19

原帖由 @sky 于 2008-7-27 10:47 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
一般都是拷贝,不丢弃:em02: :em02:

对,整一个copy过来就可以了

sunorr 发表于 2008-07-30 17:05

libiptc
:lol:

streetboy85 发表于 2008-07-30 20:30

原帖由 piaobo79 于 2008-7-26 13:35 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
用netfilter写个kernel module, 或者是用libipqueue,这个库可以把被iptables标记为queue的包发送到用户空间程序里,你改了以后可以直接使用ipqueue库把包返回到网络栈. 第一种方法最好,难度也不算太高。第二种需 ...
:lol: :lol: 方法不错

shaogua 发表于 2008-08-05 21:24

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
查看完整版本: 大牛现身解困:网络数据截取