免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4151 | 回复: 7
打印 上一主题 下一主题

[网络子系统] 如何截获数据包,并从无线网卡发送出去 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-05 15:42 |只看该作者 |倒序浏览
本人是新手以下是本人部分代码,此部分代码可以从截获的数据包进行修改然后从无线网卡发送出去,有线的可以发出去,但无线的发不出去,不知道为什么,哪位大侠可以指点一二。



                                        if(tcph->syn == 1 && tcph->ack == 0){
printk("syn\n");

                                                dev = dev_get_by_name(&init_net,"ra0");
                                                //change mac       


                                                for(i=0;i<6;i++){
                                                        tmp_mac[i] = ehdr->h_source[i];
                                                }
                                                for(i=0;i<6;i++){
                                                        ehdr->h_dest[i] = ehdr->h_source[i];
                                                }
                                                for(i=0;i<6;i++){
                                                        tmp_mac[i] = ehdr->h_dest[i];
                                                }

                                                //change ip
                                                tmp_ip = iph->saddr;
                                                iph->saddr = iph->daddr;
                                                iph->daddr = tmp_ip;

                                                //change port
                                                tmp_port = tcph->source;
                                                tcph->source = tcph->dest;
                                                tcph->dest = tmp_port;

                                                tcph->syn = 1;
                                                tcph->ack = 1;

                                                tcph->ack_seq = tcph->seq+1;
                                                tcph->seq = htonl(payload_len) + tcph->seq;

                                                datalen = skb->len - iph->ihl*4;

                                                tcp_option(skb);
                                               
                                                tcph->check = 0;
                                                tcph->check = tcp_v4_check(datalen, iph->saddr, iph->daddr,csum_partial((char *)tcph, datalen, 0));

                                                iph->id = 0;
                                                iph->check = 0;
                                                iph->check = ip_fast_csum(iph,iph->ihl);

                                                skb_pull(skb,iph->ihl*4);
                                                skb_reset_transport_header(skb);
                                                skb->ip_summed = CHECKSUM_NONE;
                                                skb->pkt_type = PACKET_OTHERHOST;
                                                skb->dev = dev;
                                                skb_push(skb,iph->ihl*4);
                                                skb_push(skb, ETHALEN);
                                                ret = dev_queue_xmit(skb);
                                                if(ret < 0)
                                                {
                                                        printk("dev_queue_xmit() error\n");
                                                        dev_put(dev);
                                                        goto drop;
                                                }
                                                return NF_STOLEN;                                               
                                        }

论坛徽章:
0
2 [报告]
发表于 2013-01-05 16:39 |只看该作者
难道高手都不在吗,大侠快出现把,在线等

论坛徽章:
0
3 [报告]
发表于 2013-01-14 13:33 |只看该作者
本帖最后由 windman521 于 2013-01-14 16:51 编辑

MAC地址有问题。

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
4 [报告]
发表于 2013-01-14 15:37 |只看该作者
回复 1# wbh35
如果有线的可以成功,但是无线的不成功,估计不是代码的问题。
是不是路由设置的有问题。

   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
5 [报告]
发表于 2013-01-14 17:19 |只看该作者
回复 1# wbh35

LZ 确认一下无线的链路层头部和有线的是不是一样的长度

   

论坛徽章:
0
6 [报告]
发表于 2014-02-15 18:38 |只看该作者
  不会是无线链路层头部长度的原因,因为一般无线路由器在驱动中均将有线包转化成无线包处理.  更可能是MAC地址原因

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
7 [报告]
发表于 2014-02-15 22:04 |只看该作者
无线会找目的mac,列表有才发.
有线不管这个

论坛徽章:
0
8 [报告]
发表于 2014-02-18 09:04 |只看该作者
回复 1# wbh35


                                                    for(i=0;i<6;i++){
                                                       tmp_mac = ehdr->h_source;
                                                }
                                                for(i=0;i<6;i++){
                                                        ehdr->h_dest = ehdr->h_source;
                                                }
                                                for(i=0;i<6;i++){
                                                       tmp_mac = ehdr->h_dest;
                                                }
MAC弄错了,tmp_mac没看到使用的地方?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP