如何分析msn数据包?

zangyong 2006-03-24 02:38:30

怎么样才能把网络中截获的msn数据跟聊天双方关联起来啊。

谢谢。
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
PiggyXP 2006-03-26
  • 打赏
  • 举报
回复
http://www.codeproject.com/index.asp?cat=2

来这里搜搜msn,看看有没有你需要的内容呢?
robin_yao 2006-03-25
  • 打赏
  • 举报
回复
太多了。把地址帖出来不就行了。
http://soft.yesky.com/security/485/2217985.shtml
robin_yao 2006-03-25
  • 打赏
  • 举报
回复
XXX [<SP> TrID <SP> PARAM1 <SP> PARAM2…] <CRLF>

其中,<SP>是空白字符,<CRLF>是回车换行,XXX是一个3字符的命令串,TrID是一个流水号,PARAMx是参数,[ ]内是可选项。关于这些命令的含义,可以参考下表(列举部分):


这样,当我们看到“CVR 146 0x0804 winnt 5.0 i386 MSNMSGR 7.0.0777 msmsgs cndes2005@hotmail.com”时,就可以知道,现在客户端正发出OS、语言、MSN Messenger版本等信息。现在,聪明的读者可能会思考:在这些表中,我们看到了DS、NS、SS等代表来源和去向的服务器,他们又有什么特殊的意义呢?简单介绍如下:

  派遣服务器(Dispatch Server,简称DS服务器)。这是客户端最初连接的服务器,负责给客户端分配合适的通知服务器。域名是messenger.hotmail.com,标准服务端口是1863。完成派遣任务后,切断TCP连接。

  通知服务器(Notification Server,简称NS服务器)。通知服务器的目的主要就是保留用户的在线信息,还有其他用户所关心的重要人员的信息。包括登录、改变状态、获取用户列表、修改用户信息、发起聊天、接受呼叫、邮件通知、退出等等。通知服务器同样也提供其他通知服务,如hotmail的新邮件提示和创建或者加入会话等。服务端口由派遣服务器指定,通常也是1863。

  接线服务器(Switchboard Server,简称SS服务器)。这里保存了各人员的即时会话信息,换句话说,每个MSN中的用户对应连接到一个共享交换板的会话中。因此,这里也可以看作客户端之间聊天使用的中转服务器。每开一个聊天窗口,客户端和服务器就建立一个TCP会话。当客户端之间需要进行文件传输或语音聊天时,发送系统消息,建立“点对点”会话通道(可能转为使用UDP),服务端口通常也是1863。“点对点”通信使用的端口由客户端自动协商决定,如文件传输通常使用6891端口。

  整个登录过程可以划分为四个阶段,基本过程如图2所示。

robin_yao 2006-03-25
  • 打赏
  • 举报
回复
一、来龙去脉:典型登录方式及原理分析

  1、典型剖析:MSN登录实例
一般来说,用户微机上的程序统称为MSN Messenger“客户端”,它通过Internet连接到一个MSN Messenger“服务器”。也就是说,客户端通过服务器与其他客户端交互信息。在大多数时间里,用户的客户端与服务器会话,然后由服务器来处理这些会话信息并通知其他人。了解之前,我们使用Sniffer NT来截获登录时的数据。如图1所示。

从截获的登录数据中,我们可以看到,在“数据”一栏中,有很多类似CVR、VER、USR等开头的数据,登录连接时还用到了TCP/1863和TCP/443这两个端口,它们记录了MSN Messenger登录的整个过程。在图中,我们看到了这样一条记录:“VER 145 MSNP11 MSNP10 CVR0”。

  要回答这个问题,我们首先就要谈到MSN Messenger协议了。1999年,Microsoft向IETF(Internet Engineering Steering Group,国际互联网工程任务组,是世界上做互联网方面技术标准的组织)提交了一份“MSN Messenger Service 1.0 Protocol”草案,这是最初版本的MSN Messenger协议,不同的协议经常被写为“MSNP9”、“MSNP10”、“MSNP11”等。近几年中,MSN已经历经数次修订,目前MSN Messenger的协议已经到了第12版,简称MSNP12。现在,我们使用比较广泛的MSN7.0支持的协议是MSNP10和MSNP11,出于规范的需要,MSN Messenger用户必须升级到较高的版本,因为服务器对MSNP8以下的版本已经不再支持。这就是我们在刚才截获的数据中,为什么可以看到“MSNP11 MSNP10”的缘故了。

那么,CVR、VER、USR这些数据是什么意思呢?客户端与服务器间信息都是以命令格式传递的。命令被描述为三个字符、所有字母大写的命令代号。所有一般命令都有一个事务ID并且以新行结束。客户端发送的命令一般会使服务器响应一个及以上的命令。这些数据是MSN Messenger命令,它们使用了纯ASCII码,同时对非ASCII码字符使用URL编码。命令的语法如下:



铁文 2006-03-24
  • 打赏
  • 举报
回复
用WPE截获看看就明白了
如果要搞MSN的相关开发,用Messenger API Type Library(MSN类型库)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧