MSNP15(MSN8.1)协议分析

本文详细介绍了MSN8.1所使用的MSNP15协议,包括服务器架构、命令、消息、错误处理和通信过程。服务器分为派遣、通知和接线服务器,分别负责不同功能。通信过程中涉及命令交互、消息格式,特别是UTF-8编码的处理。同时,文章探讨了协议分析的方法,如登录、登出和聊天内容的抓取。提供了参考资料,便于进一步研究。
摘要由CSDN通过智能技术生成

MSNP15MSN8.1)协议分析

第1章.     MSNP15概述

MSN是微软推出的一款聊天工具,它的通信协议是微软自己提出的MSNP(即MSN Protocol)。MSNP目前还不是因特网标准协议,但却发展迅速,被广泛地应用到各种聊天工具的开发中。MSNP更新很快,当前的最新版本为MSNP15(即版本15)。MSN8.1所使用的协议就是MSNP15

MSNP15支持即时消息、文件传输、语音通信、视频通信和远程协助等通信方式。其中文件传输、语音通信和视频通信等是直接的点对点通信,而即时消息等是经过服务器中转通信的。即时消息和文件传输是基于TCP的,而语音通信和视频通信是基于UDP的。

第2章.     MSNP15详解

2.1.  几个概念

MSNP15的通信很多是通过服务器中转的,所以它的服务器架构比较复杂。协议的客户端与服务端的交互有两种形式:命令和消息。当客户端发送的命令执行出错时,服务器用错误代码来通知对方。因此,下面将依次讲述服务器、命令、消息和错误。这是协议分析的基础。

2.1.1.  服务器

MSNP15的服务器有三种。

派遣服务器(Dispatch Server, DS)——客户端最先连接的服务器。派遣服务器与客户端连接后,首先根据从客户端处得出的的信息,给客户端分配合适的通知服务器,然后断开与客户端的连接。派遣服务器的端口号是1863

通知服务器(Notification Server, NS)——客户端需要一直连接的服务器。通知服务器负责大部分非中转的交互,包括登陆,改变状态(隐身、在线等),获取用户列表,修改用户列表,发起聊天等。通知服务器的服务端口号由派遣服务器指定,一般为1863

接线服务器(Switchboar Server, SB)——客户端间通信所使用的中转服务器。每开一个聊天窗口,客户端就与服务器建立一个TCP会话。文件传输和语音聊天等,为发起点对点的会话,也需要从接线服务器上得到对方的IP地址等信息。接线服务器的服务端口由通知服务器指定,一般为1863

2.1.2.  命令

命令是服务器与客户交互的一种方式。MSNP15的命令使用纯ASCII码,对非ASCII码使用URL编码。命令的一般格式是:

XXX[<SP>TrID<SP>PARAM1<SP>PARAM2…]<CRLF>

其中,<SP>是空白字符,<CRLF>是回车换行,XXX是一个3字符的命令串,TrID是一个流水号,PARAMx是参数,[ ]内是可选项。最简单的命令没有流水号和参数。为了方便起见,下面讨论时用" "代表<SP>"/r/n"代表<CRLF>"/x??"代表一个值为0x??字节。红色表示由客户端发出,蓝色表示由服务器发出。一个比较常见的命令如下。“USR 14 OK bripengandre@hotmail.com 1 0 就是一个比较常见的命令。

2.1.3.  消息

MSN Messenger消息符合MIME 1.0标准,由消息头与消息体组成,通常使用UTF-8编码。一个MSN Messenger消息的例子如下:

MIME-Version: 1.0/r/nContent-Type: text/plain; charset=UTF-8/r/nX-MMS-IM-Format: FN=%E5%AE%8B%E4%BD%93; EF=; CO=0; CS=86; PF=0/r/n/r/nbhw98/xE4/xBD/xA0/xE5/xA5/xBD/xEF/xBC/x81

经简单分析可知,"%E5%AE%8B%E4%BD%93""宋体"UTF-8URL编码,而"bhw98/xE4/xBD/xA0/xE5/xA5/xBD/xEF/xBC/x81""bhw98你好!"UTF-8编码。

2.1.4.  错误

无论是由于客户端发出的命令无效,参数无效,还是其他什么原因,服务器可以返回一个错误。错误的格式为

XXX[<SP>TrID]<CRLF>

其中,XXX是一个3位数字的串。如ADD 21 AL non_existent@hotmail.com non_existent@hotmail.com/r/n205 21/r/n。其中,non_existent@hotmail.com是一个不存在的账号。

2.1.5.  常用命令

为了理解后文中给出的例子,这里给出一些常用命令,如 1 常用命令所示。需要注意的是, 1 常用命令中的命令是针对MSNP10的,所以这些命令仅供参考。

命令

来源

去向

说明

备注

ACK

SS

Client

确认,做出肯定回答。

acknowledgement

ADD

Client

NS

发出添加新联系人到列表的请求。

add user

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值