QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3700|回复: 1

转载-Dr.com连网方式研究

[复制链接]
发表于 2005-11-28 17:26:30 | 显示全部楼层 |阅读模式
前面smilelucifer已做《Dr.com客户端认证研究》,这里将对Dr.com连网方式(主要是tcp的连接)做个讲解。首先回顾下登陆内容。
1)    client --->  server  发出登陆请求
01 00 00 04 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

2) Server --->  client  接到登陆请求后,给客户端发送一个salt
02 00 00 08 ab 33 00 00 00 00 00 00
salt 数据:ab 33 00 00
这个阶段的salt 主要是为了客户端加密认证数据之用。在实际认证过程中只使用其了前四个字节。

3    client --->  server  发出认证信息(根据salt数据发回认证消息,数据部分太长,略去了)

4    Server --->  client  认证通过信息(注意,下面要用到其中数据)
数据如下:
0020                            04 00 00 05 03 0d   .w.....L ........
0030  00 00 00 20 00 00 00 ff  ff ff ff ff 00 00 00 00   ... .... ........
0040  00 44 72 63 6f 3d 8e 72  4a a0 03 ac 13 08 77 00   .Drco=.r J.....w.
0050  00 b0 05 02 00 00 00 00  00 d2 26 e6 3d ff ff ff   ........ ..&.=...
0060  ff 01 00 00 00 00 00 00  00 00 00 00 00 00         ........ ......  

本来以为第四个数据部分只是Server对client发出的认证确认消息(认证成功),在用自己做的登陆器登陆上后发现上不了网,于是用原版dr.com登陆器登陆上网后用ethereal抓取了tcp连接的片断(firefox从www.163.com请求网页),如下:
1)    host->163(即数据包从我发往163),tcp第一次握手:
sequence num:        ef 57 1a d5
Flags:                ack,syn

2)    163->host ,tcp第二次握手:
sequence num:        10 10 36 ad
Acknowledgement num:    ef 57 1a d6
Flags:                ack,syn

3)    host->163,tcp第三次握手:
sequence num:        ef 57 1a d6
Acknowledgement num:    10 10 36 ae
Flags:                ack
内容:
0000  00 0e 38 e3 e6 00 00 a0  cc d5 0c 00 08 00 45 00   ..8..... ......E.
0010  00 28 01 ff 40 00 40 06  95 41 ac 13 08 77 ca 6c   .(..@.@. .A...w.l
0020  24 99 04 25 00 50 ef 57  1a d6 10 10 36 ae 50 10   $..%.P.W ....6.P.
0030  20 00 96 e3 00 00                                   .....         
可以看出前面都是正常的tcp握手过程

3)    host->163,注意,这里是关键,dr.com程序在这里插入了一个数据,其实是发给中间dr.com服务器网关做为tcp认证的,其ip头和tcp头基本和第三次握手的一样,不同点有Total Length,Identification,Header checksum(以上ip头的不同),Flags,checksum,tcp data(以上tcp的不同),就是说主要有两个不同点,一个是flags加了push(压入数据,立即发送),一个是数据部分。
sequence num:        ef 57 1a d6
Acknowledgement num:    10 10 36 ae(seq num和ack num都和第三次握手一样的)
Flags:                ack,push
Data:44 72 63 6f 3d 8e 72 4a a0 03 ac 13 08 77 00 00   .....Dr co=.rJ.....w..

0000  00 0e 38 e3 e6 00 00 a0  cc d5 0c 00 08 00 45 00   ..8..... ......E.
0010  00 38 02 00 40 00 40 06  95 30 ac 13 08 77 ca 6c   .8..@.@. .0...w.l
0020  24 99 04 25 00 50 ef 57  1a d6 10 10 36 ae 50 18   $..%.P.W ....6.P.
0030  20 00 ea 82 00 00 44 72  63 6f 3d 8e 72 4a a0 03    .....Dr co=.rJ..
0040  ac 13 08 77 00 00                                  ...w..         

5)163->host,对第4条的响应:
sequence num:        10 10 36 ae
Acknowledgement num:    ef 57 1a e6
Data:无数据

6)host->163,开始get网页
sequence num:        ef 57 1a e6
Acknowledgement num:    10 10 36 ae
再下去又是正常的数据传输部分。

从中可以看出dr.com在正常的tcp连接中插入了一个tcp认证数据包(暂且这么说了),
其中的16字节认证数据(44 72 63 6f 3d 8e 72 4a a0 03 ac 13 08 77 00 00)在登陆时的第四条server发给client的信息中。
44 72 63 6f:drom
3d 8e 72 4a:服务器ip
a0 03:可变,作为认证
ac 13 08 77 00 00:本地ip+0 0

tcp认证数据包发送后,dr.com服务器认证成功,本地继续发送get请求(注意seqnum+=10),以下是正常的tcp连接。

另外是udp的发送方式,这个很简单,dr.com在数据前面直接加了认证数据,例如:
0020                               44 72 63 6f 3d 8e                Drco=.
0030  72 4a a0 03 ac 13 08 77  00 00 00 0b 01 00 00 01   rJ.....w ........
0040  00 00 00 00 00 00 03 77  77 77 03 31 36 33 03 63   .......w ww.163.c
0050  6f 6d 00 00 01 00 01                               om.....         
可以看到前16个字节是加上去的认证数据,dr.com服务器会截取前16字节作为认证,然后把剩下的部分发出去。


--
之所以喜欢熬夜,是因为总希望深夜里,孤独时,能找到些不再让心灵空虚的东西。然而
每当昏昏沉沉睡去,迷迷糊糊醒来时却总是发现,依然
空空如也----
---- 一个不会浪漫的浪漫主义者
---- 一个失去理想的理想主义者
---- 一个爱看动漫的抗日fq......
※ 来源:.天大求实BBS http://bbs.tju.edu.cn [FROM: 202.113.13.188]
发表于 2006-4-14 23:44:31 | 显示全部楼层
你好厉害
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 12:25 , Processed in 0.035573 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表