检测广播包的问题
时间:2010-10-15
来源:互联网
本帖最后由 destinywangyh 于 2010-10-15 11:37 编辑
复制代码
想用上面的代码把MAC目的地址是FF开头的包QUEUE下来,但加载模块后不但QUEUE不到广播包,连其他正常的出站通信都无法进行.
最奇怪的是如果我把第32行改成"if(dest[0]!=0xff)",就是反过来,只QUEUE正常的包,还是无法QUEUE到任何东西,广播包尽管RETURN NF_ACCEPT了,还是发不出去.实在想不明白,按理说HOOK到数据包之后要么QUEUE起来要么ACCEPT,怎么会直接不能通信呢?麻烦指教一下,谢谢!
- #include <linux/module.h>
- #include <linux/kernel.h>
- #include <linux/skbuff.h>
- #include <linux/ip.h>
- #include <linux/netfilter.h>
- #include <linux/netfilter_ipv4.h>
- #include <linux/if_ether.h>
- #include <linux/tcp.h>
- #include <linux/moduleparam.h>
- #include <linux/inet.h>
- #include <linux/etherdevice.h>
- #include <net/sock.h>
- #include <net/tcp.h>
- #include <net/udp.h>
- #include <net/netfilter/nf_nat.h>
- #include <net/netfilter/nf_nat_helper.h>
- #include <net/netfilter/nf_nat_rule.h>
- #include <net/netfilter/nf_conntrack.h>
- #include <net/netfilter/nf_conntrack_helper.h>
- #include <net/netfilter/nf_conntrack_expect.h>
-
- static struct nf_hook_ops nfhoo;
-
- unsigned int hook_funco(unsigned int hooknum,
- struct sk_buff *skb,
- const struct net_device *in,
- const struct net_device *out,
- int (*okfn)(struct sk_buff *))
- {
- skb_linearize(skb);
- unsigned char *dest = eth_hdr(skb)->h_dest;
- if(dest[0]==0xff)
- return NF_QUEUE;
- else
- return NF_ACCEPT;
- }
-
- int init_module()
- {
- nfhoo.hook = hook_funco;
- nfhoo.hooknum = NF_INET_POST_ROUTING;
- nfhoo.pf = PF_INET;
- nfhoo.priority = NF_IP_PRI_MANGLE;
- nfhoo.owner = THIS_MODULE;
-
- nf_register_hook(&nfhoo);
-
- return 0;
- }
-
- void cleanup_module()
- {
- nf_unregister_hook(&nfhoo);
- }
最奇怪的是如果我把第32行改成"if(dest[0]!=0xff)",就是反过来,只QUEUE正常的包,还是无法QUEUE到任何东西,广播包尽管RETURN NF_ACCEPT了,还是发不出去.实在想不明白,按理说HOOK到数据包之后要么QUEUE起来要么ACCEPT,怎么会直接不能通信呢?麻烦指教一下,谢谢!
作者: destinywangyh 发布时间: 2010-10-15
QUOTE:
# nfhoo.hook = hook_funco;
# nfhoo.hooknum = NF_INET_POST_ROUTING;
# nfhoo.pf = PF_INET;
# nfhoo.priority = NF_IP_PRI_MANGLE;
# nfhoo.owner = THIS_MODULE;
# nfhoo.hooknum = NF_INET_POST_ROUTING;
# nfhoo.pf = PF_INET;
# nfhoo.priority = NF_IP_PRI_MANGLE;
# nfhoo.owner = THIS_MODULE;
不建议你自己写的hook ,使用已定义的优先级别,自己定义一个吧。
另外,如果检测的是进来的而广播包, 可以考虑在 PREROUTING 处抓包
作者: Godbach 发布时间: 2010-10-15
用户态是否有接收 QUEUE 包的程序?
作者: Godbach 发布时间: 2010-10-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28