第二部分
WIM
中
MSN
登陆过程
通过
Ethereal
软件抓包获取
WIM
中
MSN
登陆所发送和接收的数据包,下面详细分析这些数据包。
约定:
客户端向服务器发送的数据包用蓝色标明,
服务器向客户端发送的数据包用红色标明。
MSN登陆模型为:

一.
客户端,
DS
服务器通过
TCP
三次握手建立连接,服务器
IP
:
65.54.239.210
,端口:
1863
。然后客户端发送:
VER 1 MSNP12 MSNP11 MSNP10 MSNP9 MSNP8 CVR0 /r/n
命令功能:
向服务器表明客户端支持哪些协议版本。
参数解释:
1
)
1
是
TrID (
Transaction ID
)
号,
用于匹配客户端的命令与服务端的响应。这是一个介于
0
到
4294967295
之间的整数,跟在每个命令与消息后面,服务端收到并做出处理后,要回复客户端,并协带这个
ID
,这样客户端就可以识别出服务器是对哪条命令的响应了。每次客户端向服务器发送一次命令或消息后,
TrID
自动加
1
。
2
)
MSNP12 MSNP11 MSNP10 MSNP9 MSNP8
是客户端支持的协议版本。
3
)
CVR0
是必须带的。
4
)
/r/n
表示
服务器返回:
VER 1 MSNP12 MSNP11 MSNP10 MSNP9 MSNP8 CVR0 /r/n
命令功能:
告诉客户端,对于客户端所提供的协议,服务器支持哪几个。
参数解释:
1
)
1
是
TrID
号,因为是服务器端对上面命令的回复,值与上面的
TrID
相等。
2
)
MSNP12 MSNP11 MSNP10 MSNP9 MSNP8
表明服务器完全支持客户端所提供的协议版本。
二.
客户端发送:
CVR 2 0×0804 win 5.1 x86 MSNMSGR 6.2.0205 MSMSGS xiongchuanbo1@hotmail.com
命令功能:
表明客户端的信息和操作系统类型。
参数解释:
1
)
2
是
TrID
号。
2
)
0×0804
表示客户端所使用的语言,
0×0804
表示简体中文,
0×0409
表示美国英语,
0×0404
表示台湾,
0×0411
表示日语,
0×0412
表示韩语。
3
)
win 5.1
表示操作系统类型,
win
代表
win9x
系列,
winnt
代表
NT
系列。
4.10
表
windows 98,5.0
表
windows 2000,5.1
表
windows xp
。
4
)
x86
表示计算机体系结构,
x86
表示
Intel X86
机型。
5
)
MSNMSGR
表示
MSN Messenger
客户端。
6
)
6.2.0205
表示客户端版本号。
7
)
MSMSGS
未知,但官方版本里总是有这个。
8
)
xiongchuanbo1@hotmail.com
是要登陆的用户名。
服务器返回:
CVR 2 7.0.0820 7.0.0820 7.0.0820
http://msgruser.dlservice.microsoft.com/download/B/3/1/B316A751-0B87-44F7-9EF7-4B22EBFAA1EE/Install_MSN_Messenger_DL.EXE http://messenger.msn.com/cn
命令功能:
推荐客户端使用的
MSN
版本。
参数解释:
1
)
7.0.0820 7.0.0820 7.0.0820
这里有三个
7.0.0820
,第一个是服务器推荐客户端使用的
MSN
版本号,第二个总是与第一个一样,第三个是最小安全版本号。
2
)
http://msgruser.dlservice.microsoft.com/download/B/3/1/B316A751-0B87-44F7-9EF7-4B22EBFAA1EE/Install_MSN_Messenger_DL.EXE
是最新的
MSN
下载地址。
3
)
http://messenger.msn.com/cn
是关于客户端信息的
URL
。
三.
客户端发送:
USR 3 TWN I xiongchuanbo1@hotmail.com
命令功能:
此命令被用来请求到
NS
服务器去验证客户端。
参数解释:
1
)
TWN
表示验证系统的名字,它总是为
TWN
,
2
)
I
表示初始化验证状态,身份验证开始。
3
)
xiongchuanbo1@hotmail.com
是要进行验证的帐号。
服务器端返回:
XFR 3 NS 207.46.109.60:1863 0 65.54.239.210:1863
命令功能:
NS
服务器重定向命令。
参数解释:
1
)
NS
表示将转向
NS
服务器。
2
)
207.46.109.60:1863
为转向的
NS
服务器的
IP
和端口。
3
)
65.54.239.210:1863
为当前连接的
DS
服务器的
IP
和端口。
四.
接下来,断开与
DS
服务器的连接,三次握手连接到
NS
服务器。
客户端和
NS
服务器之间重复发送如下数据包:
VER 1 MSNP12 MSNP11 MSNP10 MSNP9 MSNP8 CVR0 /r/n
VER 1 MSNP12 MSNP11 MSNP10 MSNP9 MSNP8 CVR0 /r/n
CVR 2 0×0804 win 5.1 x86 MSNMSGR 6.2.0205 MSMSGS xiongchuanbo1@hotmail.com /r/n
CVR 2 7.0.0820 7.0.0820 7.0.0820
http://msgruser.dlservice.microsoft.com/download/B/3/1/B316A751-0B87-44F7-9EF7-4B22EBFAA1EE/Install_MSN_Messenger_DL.EXE http://messenger.msn.com/cn /r/n
USR 3 TWN I xiongchuanbo1@hotmail.com /r/n
接着,服务器端返回:
USR 3 TWN S
ct=1195633914,rver=4.5.2135.0,wp=FS_40SEC_0_COMPACT,lc=1033,id=507,ru=http:%2F%2Fmessenger.msn.com,tw=0,kpp=1,kv=4,ver=2.1.6000.1,rn=1lgjBfIL,tpf=b0735e3a873dfb5e75054465196398e0 /r/n
命令功能:
接
DS
服务器,继续进行验证过程。
参数解释:
1
)
S
表示继续进行验证的状态。
2
)
ct=1195633914,rver=4.5.2135.0,wp=FS_40SEC_0_COMPACT,lc=1033,id=507,ru=http:%2F%2Fmessenger.msn.com,tw=0,kpp=1,kv=4,ver=2.1.6000.1,rn=1lgjBfIL,tpf=b0735e3a873dfb5e75054465196398e0
是用于进行
TWN
验证的字符串。
TWN
(
Tweener
)验证的详细介绍见:
五.
客户端发送:
USR 4 TWN S
t=9V!5JYSVhA7qEDOAL!INM3mr*Gawoy8NNtu0uD6NXdHxzhFWuWc!49xprqWuQopD3CCxctLVJS6kuA9wnnRPyvHcxqGgVweZCCcC4Pey6YoiNDbYi3FaurhoeqAcDlSfMU&p=9VU**h7ZuBr18GUvVqTQwaUoyeQtO8ug4!DaHY3HoFDdSj7WiKZ!t5BQFHUwGcxvJfheMgSMP2i6GZm*v560qr1XUHPAZBs8*u96TJLBnMme0u8a7Sv3DpiRNK7ZrxJIDFe*qKLLru60vDYP*ND1QeYz3YO3wM*vxgT9AeR*OgcZmq6NZub0!yroNmfSBJVVPs /r/n
命令功能:
是客户端对上一个命令向服务器的回应,继续进行验证过程。
参数解释:
1
)
t=9V!5JYSVhA7qEDOAL!INM3mr*Gawoy8NNtu0uD6NXdHxzhFWuWc!49xprqWuQopD3CCxctLVJS6kuA9wnnRPyvHcxqGgVweZCCcC4Pey6YoiNDbYi3FaurhoeqAcDlSfMU&p=9VU**h7ZuBr18GUvVqTQwaUoyeQtO8ug4!DaHY3HoFDdSj7WiKZ!t5BQFHUwGcxvJfheMgSMP2i6GZm*v560qr1XUHPAZBs8*u96TJLBnMme0u8a7Sv3DpiRNK7ZrxJIDFe*qKLLru60vDYP*ND1QeYz3YO3wM*vxgT9AeR*OgcZmq6NZub0!yroNmfSBJVVPs
是
TWN
验证后的检索标签。
服务器返回:
USR 4 OK xiongchuanbo1@hotmail.com 1 0
SBS 0 null
MSG Hotmail Hotmail 535
MIME-Version: 1.0
Content-Type: text/x-msmsgsprofile; charset=UTF-8
LoginTime: 1195633920
EmailEnabled: 1
MemberIdHigh: 409600
MemberIdLow: -1726189009
lang_preference: 2052
preferredEmail:
country: CN
PostalCode:
Gender:
Kid: 0
Age:
BDayPre:
Birthday:
Wallet:
Flags: 1073742915
sid: 507
MSPAuth: 9V!5JYSVhA7qEDOAL!INM3mr*Gawoy8NNtu0uD6NXdHxzhFWuWc!49xprqWuQopD3CCxctLVJS6kuA9wnnRPyvHcxqGgVweZCCcC4Pey6YoiNDbYi3FaurhoeqAcDlSfMU
ClientIP: 221.215.124.142
ClientPort: 40127
ABCHMigrated: 1
MPOPEnabled: 0
/r/n
这部分包含了多个命令,这里分别解释。
1
.
USR 4 OK xiongchuanbo1@hotmail.com 1 0
命令功能:
这是服务器对验证的最终回应。
参数解释:
1
)
OK
表示确认一个成功的登陆。
2
)
1
表示此用户被证实。
2
.
SBS 0 null
命令功能:
此命令的具体意思还不清楚,但它好像与
MSN Mobile
有关,如果没有
MSN Mobile
,服务器就会发送
SBS 0 null
命令,如果有就会发送下面这种格式的命令:
SBS 0 SC=Some-ID-here;SI=Another-ID;SS=2;PS=2/r/n
参数解释:
略
3
.
MSG Hotmail Hotmail 535
MIME-Version: 1.0
Content-Type: text/x-msmsgsprofile; charset=UTF-8
LoginTime: 1195633920
//
登陆时间,
UNIX
时间戳
EmailEnabled: 1
//
当前帐号是否有新邮件通知
MemberIdHigh: 409600
//
联系人
ID
最大值
MemberIdLow: -1726189009
//
联系人
ID
最小值
lang_preference: 2052
//
首选语言代号
preferredEmail:
//
用户的主要邮件地址,一般为空
country: CN
PostalCode:
Gender:
//
用户性别
Kid: 0
//
用户的帐号是否是未成年人帐号
Age:
BDayPre:
//
距离用户生日的天数
Birthday:
Wallet:
//
是否有微软的
Wallet
服务
Flags: 1073742915
sid: 507
//Hotmail
登陆的一个数字。一般为
507
。
MSPAuth: 9V!5JYSVhA7qEDOAL!INM3mr*Gawoy8NNtu0uD6NXdHxzhFWuWc!49xprqWuQopD3CCxctLVJS6kuA9wnnRPyvHcxqGgVweZCCcC4Pey6YoiNDbYi3FaurhoeqAcDlSfMU
ClientIP: 221.215.124.142
//
告诉客户端实际连接到服务器的
IP
ClientPort: 40127
ABCHMigrated: 1
MPOPEnabled: 0
命令功能:
发送客户端的配置文件信息。
参数解释:
见注释。
六.
客户端发送:
SYN 5 0 0
命令功能:
同步联系人列表。
参数解释:
1
)
5
是
Trid
2
)
0 0
表示检索全部联系人。
服务器返回:
SYN 5 2007-11-16T03:25:18.063-08:00 2007-11-16T04:37:22.317-08:00 5 0
命令功能:
回应客户端发送的
SYN
命令,返回联系人个数,组个数。
参数解释:
1) 2007-11-16T03:25:18.063-08:00 2007-11-16T04:37:22.317-08:00
这两个参数值如果相同,即为相同的时间戳,组和联系人的个数就不发生变化。如果不等,就必须同步他们。
2
)
5 0
为联系人和组的个数。我这里联系人个数为
5
,还没有建组。
七.
服务器返回:
GTC A
BLP BL
PRP MFN cb //
PRP
允许你编辑你自己的属性,如电话号码,昵称。
PRP MBE N
PRP WWE 0
LST N=liuchao0813@hotmail.com F=Charles C=ed96b5d2-36e1-4cc9-b0e4-16ce65177225 11 1
//
下载联系人
BPR HSB 1 //
同步联系人列表
LST N=wim.msn@hotmail.com F=wim.msn C=f5e797dc-6d19-40a0-9544-6a17e4b7de93 11 1
LST N=aarone@yahoo.cn F=aarone@yahoo.cn C=0b2e4f6b-d06a-4da7-a3e8-6a5a1c909afd 11 1
LST N=justin5_go@hotmail.com F=justin5_go@hotmail.com C=e989121e-deb9-4af0-bac7-d5dbe04e9f03 11 1
BPR HSB 1
LST N=ckf513728912@163.com F=ckf513728912@163.com C=a4bcbd8a-7c49-4347-873d-e9cafec04647 11 1
八.
客户端发送:
CHG 6 NLN 1342472236
命令功能:
请求请求取得再现人员名单
。
参数解释:
1)
NLN
表示取得再现人员名单,并通知他们客户上线了,状态码可以为:
NLN, BSY, BRB, AWY, IDL, PHN,LUN, HDN
。
2)
1342472236
为对象描述符,必须为
URL
编码。
服务器返回:
CHG 6 NLN 1342472236
九.
客户端发送一个保持连接的命令:
PNG /r/n
命令功能:
客户端
ping,
确保仍然与服务器保持连接
。
服务器回应:
QNG 42 /r/n
命令功能:
回应客户端发送下一个
PNG
的相隔秒数为
42
。
十.
服务器接着
CHG
命令继续回应如下内容:
ILN 6 NLN justin5_go@hotmail.com justin5_go@hotmail.com 1985859644
%3Cmsnobj%20Creator%3D%22justin5_go%40hotmail.com%22%20Type%3D%223%22%20SHA1D%3D%22HJ91G1×9tb5bvC0z1Ow58Ho80nk%3D%22%20Size%3D%222669%22%20Location%3D%220%22%20Friendly%3D%22aAB0AHQAcABfAGkAbQBnAGwAbwBhAGQAQwBBAFAATQBSADAAMwBLAAAA%22%2F%3E /r/n
UBX justin5_go@hotmail.com 160
<Data>
<PSM>http://mentor100.com</PSM>
<CurrentMedia>Music0</CurrentMedia>
<MachineGuid>{DC6D5E3B-7BAC-4978-9650-ED25130E940F}</MachineGuid>
</Data>
ILN 6 NLN liuchao0813@hotmail.com Charles 1985859644
%3Cmsnobj%20Creator%3D%22liuchao0813%40hotmail.com%22%20Type%3D%223%22%20SHA1D%3D%22eXGWmogZak9R61lyiAgAEW%2Fr2U4%3D%22%20Size%3D%2225072%22%20Location%3D%220%22%20Friendly%3D%22d225j7qOBWkAAA%3D%3D%22%2F%3E /r/n
UBX liuchao0813@hotmail.com 176
<Data>
<PSM>
看四方
kan4fang.cn-
开通免费个人家庭监控服务
</PSM>
<CurrentMedia></CurrentMedia>
<MachineGuid>{48F8B0DB-0789-4542-9A44-DE67BC3A6D02}</MachineGuid>
</Data>
ILN 6 NLN ckf513728912@163.com
ckf513728912@163.com%20(E-mail%20Address%20Not%20Verified) 1985855532
%3Cmsnobj%20Creator%3D%22ckf513728912%40163.com%22%20Type%3D%223%22%20SHA1D%3D%22dW0VZfrFH4igpqB%2Baknu%2BYLVPQc%3D%22%20Size%3D%2225288%22%20Location%3D%220%22%20Friendly%3D%22%2FVZFlmGMy2gAAA%3D%3D%22%2F%3E /r/n
UBX ckf513728912@163.com 140
<Data>
<PSM></PSM>
<CurrentMedia>Music0</CurrentMedia>
<MachineGuid>{0AD8D245-B872-4DBA-A9AC-57588CF578B9}</MachineGuid>
</Data>
命令功能:
上面三组相同格式的数据包是显示目前联系人列表中已在线的联系人的状态及信息。
下面以第二组命令数据包来详细说明:
1
.
ILN
命令
1
)
NLN
是好友的初始状态码,为在线。这里状态码也可以为
BSY, BRB, AWY, IDL, PHN, LUN, HDN
。
2
)
liuchao0813@hotmail.com
好友登陆名称。
3
)
Charles
好友昵称
4
)
1985855532
好友的客户端
ID
号,详细参考:
5
)
%3Cmsnobj%20Creator%3D%22liuchao0813%40hotmail.com%22%20Type%3D%223%22%20SHA1D%3D%22eXGWmogZak9R61lyiAgAEW%2Fr2U4%3D%22%20Size%3D%2225072%22%20Location%3D%220%22%20Friendly%3D%22d225j7qOBWkAAA%3D%3D%22%2F%3E
这是一个
MSNObject
对象。关于
MSNObject
详细参考:
这一段翻译过来为:
<msnobj Creator=”liuchao0813@hotmail.com”
Type=”3″
SHA1D=” eXGWmogZak9R61lyiAgAEW/U8=”
Size=”25072″
Location=”0″
Friendly=” d225j7qOBWkAAA==” />
2
.
UBX
命令
UBX
命令由服务器发送给所有的好友通知所发生的改变。详细参考:
至此,完成登陆过程。
参考资料:
1
.
MSNPiKi
2
.徐泳,《
MSN
登陆过程》(网上有下载)