如何从netfilter.sys截获的skb中获取mac头信息

如何从netfilter截获的skb中获取mac头信息_百度知道
如何从netfilter截获的skb中获取mac头信息
提问者采纳
能看到0x0800说明mac-header还是在的,没有哪个模块闲的没事干把src-mac和dst-mac清零的顺便把skb-&dev打印出来,看到mac是0,多半是来自虚拟口的报文,比畅涪扳皇殖郝帮酮爆捆如lo或者ppp等。
来自团队:
其他类似问题
为您推荐:
netfilter的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁请教:sk_buff和ethhdr结构体中怎么获得源mac地址?并将类型转换?
[问题点数:40分,结帖人andy_ker]
请教:sk_buff和ethhdr结构体中怎么获得源mac地址?并将类型转换?
[问题点数:40分,结帖人andy_ker]
只显示楼主
取消只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。16:07 提问
netfilter钩子拦截数据包获取数据包源MAC地址
本人大学生,最近在研究arp防火墙,想实现主机拦截从本机出去发送的所有数据包,获取其源mac地址,以防止主机欺骗.在网上大量调研后采用了netfilter钩子来实现截获数据包,但是在加载内核模块时出现了问题.因为之前没有接触过网络和内核,只能在几天的时间里自学了一下.所以问题比较多.现在贴出我的程序和makefile文件请大神帮忙解答!!小弟感谢不尽,这次开发对我真的很重要哈,但毕竟本人能力有限,先谢谢大家了!
//static char *in_dev="eth0";
//MOUDLE_PARM(in_dev,"s");
static struct nf_hook_
//module_init(pack_init);
unsigned int hook_func(unsigned int hooknum,struct sk_buff **skb,const struct net_device *in,const struct net_device *out,int (*okfn)(struct sk_buff *))
struct sk_buff *//mac地址通过网上给的方法无法获取,所以直接执行DROP
struct ethhdr *
eth=(struct ethhdr*)(nskb-&mac.raw);
printk("src mac:");
printk("%02x",eth_hdr-&h_source);
printk("\n");
switch(mac)
return NF_DROP;
return NF_DROP;
int init_hook(void)
nfho.hook=hook_
nfho.hooknum=NF_INET_POST_ROUTING;
nfho.pf=PF_INET;
nfho.priority=NF_IP_PRI_FIRST;
nf_register_hook(&nfho);
void cleanup_module()
nf_unregister_hook(&nfho);
obj-m :=hook.o
KERNELDIR :=/lib/modules/uname -r/build
PWD :=$(shell pwd)
make -C ${KERNELDIR} M=${PWD} modules
rm -f .o *.ko *.mod.c *.mod.o modules.
现在有三个问题:
1、模块加载成功后没有实现DROP的效果,主机还是可以上网。
2、模块无法卸载。执行一次rmmod显示杀死成功,但是还是可以grep到。
3、网上的方法已经无法实现获取数据包源mac地址,因为后来内核中取消了ethhdr结构体。求解决办法。
按赞数排序
错误信息提示定义找不到,你的代码有问题,没有包含对应的头文件等
是程序的问题?还是应该连接到交换机或路由上抓包,或者是写驱动。
206关注|280收录
41关注|57收录
387关注|2234收录
其他相似问题
相关参考资料新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分143阅读权限10帖子精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
白手起家, 积分 143, 距离下一级还需 57 积分
帖子主题精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
论坛徽章:0
不想麻烦的话可以在 ip finish output函数里做处理,到了这里数据包就是发往网卡了,里面有最终要发送的信息 ...
maixl 发表于
& & 谢谢,明天试下
UID空间积分0 积分143阅读权限10帖子精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
白手起家, 积分 143, 距离下一级还需 57 积分
帖子主题精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
论坛徽章:0
UID空间积分0 积分193阅读权限10帖子精华可用积分193 信誉积分182 专家积分0 在线时间346 小时注册时间最后登录
白手起家, 积分 193, 距离下一级还需 7 积分
帖子主题精华可用积分193 信誉积分182 专家积分0 在线时间346 小时注册时间最后登录
论坛徽章:0
本帖最后由 beyond_touch 于
09:29 编辑
对于local out的包,在netfilter/iptables这部分想抓到以太网部分的头,没什么可能
只有通过neighbourhood subsystem的时候,才会被填充
抓取的部分只能是neighbour/TC
libpcap也是一解法
To be 千里马!
UID空间积分3 积分8285阅读权限100帖子精华可用积分8285 信誉积分3157 专家积分79 在线时间8347 小时注册时间最后登录
帖子主题精华可用积分8285 信誉积分3157 专家积分79 在线时间8347 小时注册时间最后登录
认证徽章论坛徽章:29
还是想知道netfilter到底能不能直接获取以太帧,iptables里面好像是有mac 匹配的,它是怎么实现的?
这个问题前面应该都说清楚了吧。我不明白你怎么还没明白:wink:
& & tc是什么?
Traffic Control,linux 流控方面的工具。
----------
欢迎光临Godbach的博客:
明犯我强汉天威者,穷搜天下,万里追杀,覆其巢,断其苗裔,戮其身,追其魂,屠其魄,虽远必诛!
UID空间积分0 积分143阅读权限10帖子精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
白手起家, 积分 143, 距离下一级还需 57 积分
帖子主题精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
论坛徽章:0
对于local out的包,在netfilter/iptables这部分想抓到以太网部分的头,没什么可能
只有通过neighbourhood ...
beyond_touch 发表于
& & 不是要抓取,是要截获,应该说是过滤
UID空间积分0 积分143阅读权限10帖子精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
白手起家, 积分 143, 距离下一级还需 57 积分
帖子主题精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
论坛徽章:0
[quote]这个问题前面应该都说清楚了吧。我不明白你怎么还没明白
汗,还真没明白哦
To be 千里马!
UID空间积分3 积分8285阅读权限100帖子精华可用积分8285 信誉积分3157 专家积分79 在线时间8347 小时注册时间最后登录
帖子主题精华可用积分8285 信誉积分3157 专家积分79 在线时间8347 小时注册时间最后登录
认证徽章论坛徽章:29
我记得我站内也给你说了。
流入系统的数据包,NF 是可以获取到MAC的。对于本机发出的,数据包经过 IP 层处理之后,才会提交的链路层,这个时候 skb 的 mac header 才会被填充。
----------
欢迎光临Godbach的博客:
明犯我强汉天威者,穷搜天下,万里追杀,覆其巢,断其苗裔,戮其身,追其魂,屠其魄,虽远必诛!
UID空间积分0 积分193阅读权限10帖子精华可用积分193 信誉积分182 专家积分0 在线时间346 小时注册时间最后登录
白手起家, 积分 193, 距离下一级还需 7 积分
帖子主题精华可用积分193 信誉积分182 专家积分0 在线时间346 小时注册时间最后登录
论坛徽章:0
他还不懂skb的处理过程
To be 千里马!
UID空间积分3 积分8285阅读权限100帖子精华可用积分8285 信誉积分3157 专家积分79 在线时间8347 小时注册时间最后登录
帖子主题精华可用积分8285 信誉积分3157 专家积分79 在线时间8347 小时注册时间最后登录
认证徽章论坛徽章:29
他还不懂skb的处理过程
beyond_touch 发表于
嗯。建议 LZ 对 skb 的数据结构做个深入了解。另外,研究一下数据包在网络层的收发过程。
----------
欢迎光临Godbach的博客:
明犯我强汉天威者,穷搜天下,万里追杀,覆其巢,断其苗裔,戮其身,追其魂,屠其魄,虽远必诛!
UID空间积分0 积分143阅读权限10帖子精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
白手起家, 积分 143, 距离下一级还需 57 积分
帖子主题精华可用积分143 信誉积分352 专家积分0 在线时间218 小时注册时间最后登录
论坛徽章:0
谢谢各位了{:3_186:}
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处

我要回帖

更多关于 netfilter 的文章

 

随机推荐