免费注册 查看新帖 |

Chinaunix

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

多谢 Godbach指点。 还有点小问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-18 14:46 |显示全部楼层 |倒序浏览
首先感谢一下Godbach版主。真是拨开云雾见晴天啊
修正Godbach的一处错误

1          iph->check=ip_fast_csum((unsigned char *)iph, iph->ihl*4);      
           这里的iph->ihl不需要乘以4了 如果乘以4,接收端会认为校验和错误


现在的问题是client受到了返回的http包.但是浏览器没有显示返回包的内容,还依旧不停的给真正的服务器发get包
通过抓包发现数据是发过来了


附件是我抓包的结果,

用Wireshark 打开, 并加上 tcp.port==80的过滤过则。

[ 本帖最后由 故哈 于 2009-8-18 14:48 编辑 ]

tcp.port==80.zip

16.6 KB, 下载次数: 41

论坛徽章:
0
2 [报告]
发表于 2009-08-18 15:21 |显示全部楼层
原帖由 platinum 于 2009-8-18 15:06 发表

你做了什么吗?TCP 序号全是错的



序列号都是重新赋值的  

tmp=tcph->ack;
printk("tmp=%02X\n", tmp);
tcph->ack=htons(ntohs((tcph->seq)+ tcp_datalen));
printk("tcp->ack=%02X\n", tcph->ack);
tcph->seq= tmp;

论坛徽章:
0
3 [报告]
发表于 2009-08-18 15:22 |显示全部楼层
原帖由 Godbach 于 2009-8-18 15:14 发表


其实构造回探包的实现,我是从白金兄那里学来的。

如果要感谢,还是要感谢白金兄啊。

都感谢  

论坛徽章:
0
4 [报告]
发表于 2009-08-18 15:27 |显示全部楼层
原帖由 Godbach 于 2009-8-18 15:22 发表
把tmp变量改成unsigned long型的吧

还是不行 。  应该不是类型的问题。  抓包报的是ack和seq是错的 ,可是看代码看不出什么问题,是和你昨天说那种方法一样的

论坛徽章:
0
5 [报告]
发表于 2009-08-18 15:43 |显示全部楼层
原帖由 Godbach 于 2009-8-18 15:35 发表
成员变量用的不对啊,改成这样:

ack不赋值了?

论坛徽章:
0
6 [报告]
发表于 2009-08-18 16:07 |显示全部楼层
原帖由 Godbach 于 2009-8-18 15:35 发表
成员变量用的不对啊,改成这样:

赋值赋不上了

printk("old tcph->ack_seq=%u\n", ntohl(tcph->ack_seq));
        printk("old tcph->seq=%u\n", ntohl(tcph->seq));

        tmp=tcph->ack_seq;
        tcph->ack_seq=htonl(ntohl(tcph->seq)+ tcp_datalen);
        tcph->seq=tmp;

        printk("tcph->ack_seq=%u\n", ntohl(tcph->ack_seq));
        printk("tcph->seq=%u\n", tmp);


old tcph->ack_seq=2847419816
old tcph->seq=2484901326
tcph->ack_seq=2484904361
tcph->seq=2821568681


疯了

论坛徽章:
0
7 [报告]
发表于 2009-08-18 16:11 |显示全部楼层
原帖由 platinum 于 2009-8-18 16:10 发表

惭愧啊,我现在连构造 TCP 的 RST 还没实现呢
小伟之前做的那个是什么来着?我都忘记了

我这有个rst函数。 一直在用

论坛徽章:
0
8 [报告]
发表于 2009-08-18 16:14 |显示全部楼层
原帖由 platinum 于 2009-8-18 16:13 发表

那之后的数据也要维护这个序号差值才行

没有之后的了 就是类似防盗链一样的东西 发现非法的了 就给客户端返回一个错误页面

论坛徽章:
0
9 [报告]
发表于 2009-08-18 16:23 |显示全部楼层
tcph头会不会取错了?  应该不会啊  为什么取出来的seq值和seq_ack值 和抓到的不一样呢?

论坛徽章:
0
10 [报告]
发表于 2009-08-18 16:25 |显示全部楼层
原帖由 Godbach 于 2009-8-18 16:23 发表
就是你调用的那个send_reply函数吗。这个函数发回的就是RESET报文?

确定肯定能用的那个函数。  用了1年多了 。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP