MSNMesnger协议

更新时间:2023-06-18 02:46:29 阅读: 评论:0

MSNMesnger协议
原作:bhw98
前 ⾔
MSN Mesnger 是Microsoft开发的聊天⼯具,⽬前在国内拥有很⼤的⽤户群。使⽤MSN Mesnger可以与他⼈进⾏⽂字聊天,语⾳对话,视频会议等即时交流,还可以通过此软件来查看联系⼈是否联机等。该软件的最新版本是6.1。
1999年,Microsoft向IETF提交了⼀份"MSN Mesnger Service 1.0 Protocol"草案,这是最初版本的MSN Mesnger协议。在以后⼏年,该公司不再公开有关MSN Mesnger协议的升级、修改细节的官⽅⽂档。但⽆论是开发第三⽅的聊天客户端软件(如Gaim, MyIM等),还是做协议分析,必须对其通信协议有深⼊了解。正因为如此,有⼀些民间⼈⼠对这些协议开展了研究(见本⽂的""⼀节)。
当我们还在感叹"这世界,变化快"的时候,MSN Mesnger的协议已经到了第10版,简称MSNP10,对应于MSN Mesnger 6.1。MSN Mesnger 6.0则使⽤MSNP9。现在Microsoft强迫MSN Mesnger⽤户升级到6.0或6.1版,因为服务器对MSNP8以下的版本不再⽀持。本⽂及后续⽂章所描述的MSN Mesnger协议主要针对MSNP9/MSNP10。
1. 连 接
MSN Mesnger协议建⽴在TCP/IP之上。除了⽂件传输和语⾳聊天是直接的"点对点"通信之外,其它所有的情形全部通过服务器进⾏。
在逻辑上,⼀共有三种类型的服务器,各司其职:topik
派遣服务器(Dispatch Server, DS) - 客户端最初连接的服务器。负责给客户端分配合适的通知服务器。域名是,标准服派遣服务器(Dispatch Server, DS)
务端⼝是1863。完成派遣任务后,切断TCP连接。
通知服务器(Notification Server, NS) - 客户端需要⼀直保持连接的服务器。很多任务要在这个会话内完成,包括登录、改变状态、获取⽤户列通知服务器(Notification Server, NS)
表、修改⽤户信息、发起聊天、接受呼叫、邮件通知、退出等等。服务端⼝由派遣服务器指定,通常也是1863。
接线服务器(Switchboard Server, SS) - 客户端之间聊天使⽤的中转服务器。每开⼀个聊天窗⼝,客户端和服务器就建⽴⼀个TCP会话。当客户端接线服务器(Switchboard Server, SS)
之间需要进⾏⽂件传输或语⾳聊天时,发送系统消息,建⽴"点对点"会话通道(可能转为使⽤UDP)。服务端⼝通常也是1863。"点对点" 通信使⽤的端⼝由客户端⾃动协商决定,如⽂件传输通常使⽤6891端⼝。
2. 命 令
MSN Mesnger命令使⽤纯ASCII码。对⾮ASCII码字符使⽤URL编码。命令的语法是
XXX[<SP>TrID<SP>PARAM1<SP>PARAM2…]<CRLF>
mouth其中,<SP>是空⽩字符,<CRLF>是回车换⾏,XXX是⼀个3字符的命令串,TrID是⼀个流⽔号,PARAMx是参数,[ ]内是可选项。最简单的命令没有流⽔号和参数。为了⽅便起见,下⾯讨论时⽤" "代表<SP>,"/r/n"代表<CRLF>,"/x??"代表⼀个值为0x??字节。红⾊表⽰由客户端发出,蓝⾊表⽰由服务器发出。⼀个MSN Mesnger命令的例⼦如下:
USR 18 TWN I /r/n
3. 错 误
⽆论是由于客户端发出的命令⽆效,参数⽆效,还是其他什么原因,服务器可以返回⼀个错误。格式为
XXX[<SP>TrID]<CRLF>
其中,XXX是⼀个3位数字的串。如
ADD 21 AL non_ non_/r/n
205 21/r/n
上例中,non_是⼀个不存在的账号。
4. 消 息fucking hell
MSN Mesnger消息符合MIME 1.0标准,由消息头与消息体组成。通常使⽤UTF-8编码,消息头中也需要URL编码格式,消息体则直接⽤⼆进制数据。
⼀个MSN Mesnger消息的例⼦如下:
MIME-Version: 1.0/r/n
Content-Type: text/plain; chart=UTF-8/r/n
X-MMS-IM-Format: FN=%E5%AE%8B%E4%BD%93; EF=; CO=0; CS=86; PF=0/r/n
/r/n
bhw98/xE4/xBD/xA0/xE5/xA5/xBD/xEF/xBC/x81
经简单分析可知,"%E5%AE%8B%E4%BD%93"是"宋体"的UTF-8加URL编码,
⽽"bhw98/xE4/xBD/xA0/xE5/xA5/xBD/xEF/xBC/x81"是"bhw98你好!"的UTF-8编码。
命令⼀览
命令来源去向说明备注
ACK SS Client确认,做出肯定回答。acknowledgement
ADD Client NS发出添加新联系⼈到列表的请求。
add ur NS Client返回添加新联系⼈请求的应答。
ADG Client NS发出添加新联系⼈组请求。
add group NS Client返回添加新联系⼈组请求的应答。
ANS Client SS接受聊天连接请求。answer
BLP Client NS设置对尚未列⼊明确允许/禁⽌的联系⼈列表的保密策略。
block list privacy NS Client返回设置保密策略请求的应答。
BYE SS Client通知客户端结束会话。bye
CAL Client SS发出建⽴聊天连接的请求。
扇子的拼音call SS Client返回建⽴聊天连接请求的应答。
CHG Client NS发出改变状态的请求。
change state NS Client返回改变状态的应答。
CHL NS Client
服务器发出验证要求。challenge SS Client
CVR Client NS
发出客户端的OS、语⾔、MSN Mesnger版本等信息。
client version Client SS
NS Client
返回推荐的MSN Mesnger版本、升级软件需要的下载地址等信息。
SS Client
FLN NS Client通知有联系⼈列表中的⽤户下线。off-line
GTC Client NS设置当有联系⼈列表中的⽤户状态改变时给出的提⽰。
greeting to changes? NS Client返回设置请求的应答。
INF Client NS
accommodation意思询问服务器所⽀持的认证⽅式。
information? Client SS
NS Client
返回服务器所⽀持的认证⽅式。
SS Client
ILN NS Client当客户端登录或添加联系⼈到列表时,通知列表中的联系⼈的状态。initial online state
IRO SS Client当有新⽤户加⼊聊天连接时,通知客户端该连接中的⽤户名单。initial roster information JIO SS Client通知客户端已经同另外的⽤户建⽴了聊天连接。jion
LSG Client NS发出获取联系⼈组列表的请求。inception什么意思
list groups NS Client返回获取联系⼈组列表请求的应答。
LST Client NS发出获取联系⼈列表的请求。
list NS Client返回获取联系⼈列表请求的应答。
MSG Client SS发送消息到其他⽤户(聊天对象)。
message NS Client传递服务器(系统) 的消息到客户端。
SS Client传递其他⽤户(聊天对象)的消息到客户端。
NAK SS Client做出否定回答。negative acknowledgement NLN NS Client通知客户端联系⼈上线或改变状态。on-line
OUT All All结束客户端-服务器的连接。out
PNG Client NS
测试TCP连接状态。ping Client SS
PRP Client NS发出设置个⼈电话号码的请求。
personal phone number NS Client返回设置请求的应答
PNG Client NS
测试TCP连接状态。ping Client SS
QNG NS Client
返回测试TCP连接状态的应答。quiz ping? SS Client
QRY Client NS
客户端回答服务器的验证要求。quiz reply? Client SS
REA Client NS发出修改⽤户昵称的请求。
rename nickname NS Client返回修改⽤户昵称请求的应答。
REG Client NS发出修改联系⼈组的请求。
rename group NS Client返回修改联系⼈组请求的应答。
REM Client NS发出从联系⼈列表中删除⽤户的请求。
rename ur NS Client返回删除⽤户请求的应答。
RMG Client NS发出删除联系⼈组的请求。
remove group NS Client返回删除联系⼈组请求的应答。
长沙培训RNG NS Client通知客户端有⼈要建⽴聊天连接。ring海尔共享单车
SYN Client NS
客户端-服务器同步。synchronization NS Client
URL Client NS发出获取MSN服务URL的请求。
URL NS Client返回获取URL请求的应答。
USR All All声明、传递、鉴别⽤户⾝份。ur
VER Client DS
协商MSN Mesnger协议版本。version Client NS
DS Client
NS Client
XFR DS Client向客户端分配NS(通知客户端转向连接指定的NS)。
transfer Client NS发出分配SS的请求。
NS Client返回分配SS请求的应答。
MSN Mesnger协议--错误代码⼀览
代码含义可能的命令错误⽰例备注200⾮法命令ABC 18/r/n
200 18/r/n
201⾮法参数CHG 19 FLN 0/r/n
201 19/r/n
ADD 20 AL aaa@bbb@ccc aaa@bbb@ccc/r/n 201 20/r/n
205⽤户不存在ADD ADD 21 AL /r/n 205 21/r/n
206缺少域名
207已经登录USR USR 20 TWN I /r/n
207 20/r/n
USR 21 TWN S 8d30fc782aa25ec9e1293fdda13cab42/r/n 207 21/r/n
208⾮法⽤户名CAL CAL 2 @@/r/n 208 2/r/n
209⾮法⽤户昵称REA REA 18 kill%20microsoft/r/n 209 18/r/n
210⽤户太多ADD ADD 23 FL 0/r/n
210 23/r/n
最⼤150
215⽤户已在列表中ADD
ADD 36 FL 2/r/n
ADD 36 825 FL 2/r/n
ADD 37 FL 2/r/n
215 37/r/n
CAL
CAL 5 /r/n
CAL 5 RINGING 213697/r/n
CAL 6 /r/n
215 6/r/n
216⽤户不在列表中REM
REM 14 FL /r/n
216 14/r/n
REA
REA 48 three/r/n
216 48/r/n
CAL
CAL 2 /r/n
216 2/r/n
217⽤户不在线CAL CAL 2 /r/n 217 2/r/n
218已在指定模式BLP
BLP 17 BL/r/n
BLP 17 151 BL/r/n
BLP 18 BL/r/n
218 18/r/n
GTC
GTC 19 A/r/n
GTC 19 152 A/r/n
GTC 20 A/r/n
218 20/r/n
219⽤户已经在相反的列表中ADD ADD 15 AL /r/n ADD 15 AL 56 four/r/n
ADD 16 BL /r/n 219 16/r/n
223⽤户组太多ADG ADG 28 new%20group 0/r/n
223 28/r/n
最⼤30
224⾮法组号ADD
RMG 24 3/r/n
RMG 24 11506 3/r/n
ADD 25 FL 3/r/n
224 25/r/n
REM
RMG 24 3/r/n
RMG 24 11506 3/r/n中国英语教师网
REM 25 FL 3/r/n
224 25/r/n
RMG 24 3/r/n
RMG 24 11506 3/r/n
REG REG 25 3 New%20Name 0/r/n
224 25/r/n
RMG RMG 24 3/r/n
RMG 24 11506 3/r/n RMG 25 3/r/n
224 25/r/n
225⽤户不在组中REM REM 26 FL 3/r/n 225 26/r/n
229组名太长ADG ADG 27 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 0/r/n
229 27/r/n
最⼤60
230不能删除组0RMG RMG 28 0/r/n 230 28/r/n
300缺少必要的参数
302 尚未登录
500服务器内部错误
540验证应答错误
600服务器忙
707⽆法建⽴连接
910服务器忙
911⾝份验证失败
过去的MSN Mesnger版本(MSNP8以下),简单地使⽤MD5等Hash算法对⽤户⾝份进⾏认证。MSNP9/MSNP10使⽤⼀种TWN(Tweener)认证⽅式,通过SSL/TLS连接到和等服务器,借助于HTTP协议输⼊账号和密码,认证通过后,才能取
得“⼊场券”。
真正意义上的⾝份认证,发⽣在客户端与通知服务器(NS)之间。客户端登陆NS时,⾸先交换版本信息。双⽅均⽀持MSNP8以上版本时,才能进⾏认证过程。如果客户端版本较低,不⽀持TWN,咋办?服务器会将你⼀脚揣出去,信不信?
好了,废话少说,现在拿⼀个成功认证的例⼦看看。在下⾯的例⼦中,账号是“”,密码是“password”。
VER 4 MSNP10 MSNP9 CVR0 /r/n
VER 4 MSNP9 CVR0 /r/n
CVR 5 0x0804 winnt 5.0 i386 MSNMSGR 6.1.0203 MSMSGS /r/n
CVR 5 6.0.0602 6.0.0602 5.0.0527 /download/d/4/f/d4f560d5-6dc6-4901-b149-
a568415561d7/SETUPNT.EXE /cn /r/n
USR 6 TWN I /r/n
USR 6 TWN
Slc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmesnger%2Emsn%2Ecom,ct=1073355862,kpp=1,kv=5,ver=2.1.0173.1,
tpf=ed1c2f217a21c191c61251eb8b73bb60 /r/n
(此时通过SSL进⾏⾝份认证,获得“⼊场券”)
USR 7 TWN S
t=4m1wWfEupDgUNb53qys5gJdw8OTJEtT82fcuDbS3U672gTymOOs6cgKeafj7WjgZNcufAQggxqHRRXko02DoflZA$$
网上辅导哪家好&p=4QXNnX9rFDDgki9ZqvqPZGDGJa2Mrd5H13Zfl0NNjh4I78qPyfpzmkZPZEe0nxJTkzZSNDYtk!57cVqiYVfO86KgCRYWhi2kudS0M !7bdi82EDA1FYp3WboHD!sCQ17OZh7lPQI7fozrgsSMZwgSzRi2FNTPxf13oDNIfDCKCG!2guDvZKEpk78A$$ /r/n
USR 7 OK 1 0 /r/n
第⼀回合(TrID=4),双⽅协商MSN版本号。客户端说“我能⽀持MSNP9和MSNP10”,NS说“⾏,就MSNP9吧”。
第⼆回合(TrID=5),客户端报告本机信息:OS = Windows 2000 (NT 5.0), 语⾔ = 简体中⽂,MSN Mesnger版本 = 6.1.0203, 账号 = 。NS给出了推荐的版本号,能够使⽤的最⽼的版本号,新版本下载地址,官⽅⽹站地址等信息。
第三回合(TrID=6),客户端要求⾝份认证(I = Initial),NS则给出所需要的⼀长串信息(S = Subquent)。其中tpf相当于challenge,参与Hash运算,能保证每次认证返回的串是不同的。
第四回合(TrID=7),客户端出⽰从认证服务器得到的“⼊场券”,NS放⾏(OK)。
第三、四回合之间,通过SSL的认证过程如下:
⾸先在HTTPS端⼝443向发送⼀个GET请求,将账号、密码和NS给定的⼀长串信息送出

本文发布于:2023-06-18 02:46:29,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/148881.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:服务器   客户端   联系
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图