免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: kimguobin
打印 上一主题 下一主题

关于netfilter中5个垂钓点的疑问! [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-04-19 21:16 |显示全部楼层
netfilter 是工作在 IP 层的
skb->data 指向 L3 结构
MAC 地址需要利用 skbuff 里的结构来指向,2.4、2.6 不同,2.6.23 之后也与之前不同
如果想看来包的 MAC,那么个人建议放在 NF_IP_PRE_ROUTING 上

论坛徽章:
0
2 [报告]
发表于 2008-04-20 00:07 |显示全部楼层
原帖由 kimguobin 于 2008-4-19 21:55 发表
恩。知道了!谢谢你的回答!
在2.6中取得MAC地址
struct ethhdr *ethh = eth_hdr(skb);
通过读取 ethh 结构中的 ethh->h_source 来得到! 是这样的吧!

你用的内核 >= 2.6.23 吧?
如果是,这样做是对的

论坛徽章:
0
3 [报告]
发表于 2008-04-28 11:14 |显示全部楼层
原帖由 kimguobin 于 2008-4-28 11:07 发表


谢谢提醒,我去试试!再次感谢!!!
有人能解释下为什么直接用tcp_hdr(sk)不能正确获取吗??

我没这么用过,一向都是从 iphdr 开始自己算得来的,iphdr 就是 skb->data,因为 netfilter 工作在网络层
我想是不是这样,如果数据包处理还没有到 L4,那么 tcp_hdr 应该是得不到数据的,但具体没试验过
你说得到的数据不正确,那么能否看一下得到的是什么,在数据包里是那部分内容
如果得到的内容在数据包中,证明层次处理上出现了问题,若得到的数据根本不在数据包里,那可能是其他低级错误了

论坛徽章:
0
4 [报告]
发表于 2008-04-28 15:51 |显示全部楼层
用 skb->data + ((struct iphdr *)skb->data)->ihl * 4 作为 tcp 头试试呢?

论坛徽章:
0
5 [报告]
发表于 2008-04-28 16:54 |显示全部楼层
打印 TCP 端口部分的代码没有看到,有没有利用 ntohs  宏做网络字节序调整?

论坛徽章:
0
6 [报告]
发表于 2008-04-28 18:43 |显示全部楼层
晕,用 FireFox 浏览器看不到你的东西,太长了,下面也没有进度条……

struct tcphdr *tcph = (struct tcphdr *)(sk->data+((struct iphdr *)sk->data)->ihl*4);
换成
struct tcphdr *tcph = (struct tcphdr *)((void *)sk->data+((struct iphdr *)sk->data)->ihl*4);
试试

论坛徽章:
0
7 [报告]
发表于 2008-04-28 21:09 |显示全部楼层
原帖由 kimguobin 于 2008-4-28 20:11 发表

额。。抓发出信息包的时候  源端口还是那样,5位数的。。
明天到别人的电脑上试试,是不是我的内核还是电脑的问题!!!
谢谢你的热心帮助!!

源端口 5 位数或其他乱七八糟的数字很正常啊,目的端口是服务器服务端口,源端口(去连接服务器的)是随机的
正确的验证方法,就是你在 client 端抓包,看和 server 端是否一致就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP