MSN Messenger 协议分析二

来源:互联网 发布:恶意补足年龄原则 知乎 编辑:程序博客网 时间:2024/05/04 09:05
MSN Messenger 协议分析二
2007年11月22日 星期四 作者: 熊传波
<SCRIPT type=text/javascript><!--google_ad_client = "pub-4075792327756511";google_ad_width = 200;google_ad_height = 200;google_ad_format = "200x200_as";google_ad_type = "text_image";google_ad_channel = "";google_color_border = "F0EDED";google_color_bg = "F0EDED";google_color_link = "940F04";google_color_text = "000000";google_color_url = "008000";//--></SCRIPT>
第二部分 WIMMSN登陆过程
通过Ethereal软件抓包获取WIMMSN登陆所发送和接收的数据包,下面详细分析这些数据包。
约定:
客户端向服务器发送的数据包用蓝色标明,
服务器向客户端发送的数据包用红色标明。
MSN登陆模型为:
一.
客户端,DS服务器通过TCP三次握手建立连接,服务器IP65.54.239.210,端口:1863。然后客户端发送:
 
VER 1 MSNP12 MSNP11 MSNP10 MSNP9 MSNP8 CVR0 /r/n
 
命令功能:
向服务器表明客户端支持哪些协议版本。
参数解释:
11TrID (Transaction ID)号,用于匹配客户端的命令与服务端的响应。这是一个介于04294967295之间的整数,跟在每个命令与消息后面,服务端收到并做出处理后,要回复客户端,并协带这个ID,这样客户端就可以识别出服务器是对哪条命令的响应了。每次客户端向服务器发送一次命令或消息后,TrID自动加1
2MSNP12 MSNP11 MSNP10 MSNP9 MSNP8 是客户端支持的协议版本。
3CVR0是必须带的。
4/r/n表示
 
服务器返回:
 
VER 1 MSNP12 MSNP11 MSNP10 MSNP9 MSNP8 CVR0 /r/n
 
命令功能:
告诉客户端,对于客户端所提供的协议,服务器支持哪几个。
参数解释:
11TrID号,因为是服务器端对上面命令的回复,值与上面的TrID相等。
2MSNP12 MSNP11 MSNP10 MSNP9 MSNP8表明服务器完全支持客户端所提供的协议版本。
二.
客户端发送:
 
CVR 2 0×0804 win 5.1 x86 MSNMSGR 6.2.0205 MSMSGS xiongchuanbo1@hotmail.com
 
命令功能:
表明客户端的信息和操作系统类型。
参数解释:
12TrID号。
20×0804 表示客户端所使用的语言,0×0804表示简体中文,0×0409表示美国英语,0×0404表示台湾,0×0411表示日语,0×0412表示韩语。
3win 5.1表示操作系统类型,win 代表win9x系列,winnt代表NT系列。4.10windows 98,5.0windows 2000,5.1windows xp
4x86表示计算机体系结构,x86表示Intel X86机型。
5MSNMSGR表示MSN Messenger客户端。
66.2.0205表示客户端版本号。
7MSMSGS 未知,但官方版本里总是有这个。
8xiongchuanbo1@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版本。
参数解释:
17.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下载地址。
3http://messenger.msn.com/cn 是关于客户端信息的URL
三.
客户端发送:
 
USR 3 TWN I xiongchuanbo1@hotmail.com
 
命令功能:
此命令被用来请求到NS服务器去验证客户端。
参数解释:
1TWN表示验证系统的名字,它总是为TWN
2I表示初始化验证状态,身份验证开始。
3xiongchuanbo1@hotmail.com是要进行验证的帐号。
 
服务器端返回:
 
XFR 3 NS 207.46.109.60:1863 0 65.54.239.210:1863
 
命令功能:
NS服务器重定向命令。
参数解释:
1NS表示将转向NS服务器。
2207.46.109.60:1863为转向的NS服务器的IP和端口。
365.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服务器,继续进行验证过程。
参数解释:
1S表示继续进行验证的状态。
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验证的字符串。
 
TWNTweener)验证的详细介绍见:
http://msnpiki.msnfanatic.com/index.php/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
 
这部分包含了多个命令,这里分别解释。
1USR 4 OK xiongchuanbo1@hotmail.com 1 0
命令功能:
这是服务器对验证的最终回应。
参数解释:
1OK表示确认一个成功的登陆。
21表示此用户被证实。
2SBS 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
命令功能:
同步联系人列表。
参数解释:
15 Trid
20 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这两个参数值如果相同,即为相同的时间戳,组和联系人的个数就不发生变化。如果不等,就必须同步他们。
25 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>
 
命令功能:
上面三组相同格式的数据包是显示目前联系人列表中已在线的联系人的状态及信息。
下面以第二组命令数据包来详细说明:
1ILN命令
1NLN 是好友的初始状态码,为在线。这里状态码也可以为BSY, BRB, AWY, IDL, PHN, LUN, HDN
2liuchao0813@hotmail.com好友登陆名称。
3Charles 好友昵称
41985855532好友的客户端ID号,详细参考:
http://msnpiki.msnfanatic.com/index.php/Client_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详细参考:
http://msnpiki.msnfanatic.com/index.php/MSNC:MSNObject
这一段翻译过来为:
<msnobj Creator=”liuchao0813@hotmail.com”
Type=”3″
SHA1D=” eXGWmogZak9R61lyiAgAEW/U8=”
Size=”25072″
Location=”0″
Friendly=” d225j7qOBWkAAA==” />
2UBX命令
UBX命令由服务器发送给所有的好友通知所发生的改变。详细参考:
http://msnpiki.msnfanatic.com/index.php/Command:UBX
 
至此,完成登陆过程。
 
参考资料:
1MSNPiKi
http://msnpiki.msnfanatic.com/index.php/Reference:Commands
2.徐泳,《MSN登陆过程》(网上有下载)