游子的博客
慈母手中线,游子身上衣, 临行密密缝,意恐迟迟归, 谁言寸草心,报得三春晖。 数据读取中,请稍候......
posts - 337,  comments - 546,  trackbacks - 0
MSN协议分析(1)— MSG消息分析

分析msn协议,我是用msn7.0,msn在登录完成后,与他人传送信息及控制命令全部是通过服务器中转。
我发送到服务器的命令格式为:
MSG 22 U 93                                 (我发送的控制命令)
MIME-Version: 1.0                          (版本)   
Content-Type: text/x-msmsgscontrol          (连接的类型)
TypingUser: [email]wsgtrsys@hotmail.com[/email]             (我的地址)

我收到的数据包格式为:
MSG [email]ldzhudandan@hotmail.com[/email] 书玉 96         (对方的地址)
MIME-Version: 1.0                            (版本)  
Content-Type: text/x-msmsgscontrol           (连接的类型)  
TypingUser: [email]ldzhudandan@hotmail.com[/email]           (对方的地址)

连接的类型主要有: 
conten-type:text/x-msmsgscontrol            消息传送控制
conten-type:symmetric-nat                   这个是用在视频连接
conent-type:text/x-msmsgsinvite             音频连接
conten-type:text/x-msnmsgrp2p                视频连接、游戏、及其它
Content-Type: text/plain                    文本连接


视频连接使用udp传送数据。
先使用udp stun穿越协议请求:
c -->  0001 0008
s -->  0101 0024


以上协商成功后,再向对方发送一个tcp包,告诉要建立的连接:
4d53 4720 31 38 31 20 44 20 31 33 34 38 0d 0a  (即:msg 181 d 1348)

udp:
我:  0660 ....... 3c 63 3a 70 3e.60 9a 12
对方:0660  ....... 3c 72 3a 70 3e
我反馈:  23 58 00 00 00 00 01 01 01 72 65 63 69 70 69 65 6e  (.x.......recipientid=...&sessionid=...)

再经tcp协协商后,
对方udp:
0e 58 00 00 00 00 00 02 01 01 63 6f 6e 6e 65 63 74 65 64 0d 0a 0d 0a 00  (.x.......connected....)
08 50 00 00 00 00 00 01 01 01 01 32 32
我反馈:
08 50 00 00 00 00 00 01 01 02 01
80 50 00 00 00 00 00 00 00 0a 00

现已经建立连接:
udp包好象有一个特征:
对方:f3 49 ... 04 d3 04 06 aa 95 9a 6a 7a
我    08 50 00 00 00 00 00 00 00 0a 01 00 00 36 c2 fd 04

msn game:
my-->server :4d 53 47 20 31 30 37 20 44 20 36 35 37 0d 0a (msg 107 d 657)
server-->my :4d 53 47 20 6a 61 63 6b 6c 79 32 30 30 38 40 68 6f 74 6d 61 69 (msg 对方的地址响应)
连接成功后,会在以下地址下载游戏程序:
get [url]http://messenger.zone.msn.com/en-us/[/url]


综合以上。msn的特征在于:
MSG 22 U 93                                 msg是固定不变的
MIME-Version: 1.0                           版本不变。暂时   
Content-Type: text/x-msmsgscontrol          连接的类型只有以上五种类型
TypingUser: [email]wsgtrsys@hotmail.com[/email]            地址可变

所以表达式为:
^msg.+\x0d\x0amime-version:1.0\x0d\x0acontent-type:(application/x-msnmsgrp2p|symmetric-nat|text/x-msmsgsinvite|text/x-msmsgscontrol)\x0d\x0a

udp video的表达式为:
^\x01?\x01[\x24\x08]
posted on 2006-12-19 14:47 游子 阅读(6594) 评论(3)  编辑 收藏 引用 所属分类: 软件

FeedBack:
# re: MSN协议分析--转载
2006-12-19 14:53 | 游子
ETHEREAL中MSN消息包的过滤表达式

大家知道,MSN消息的传输基本是明文传输的,在用ETHEREAL抓包时,只对聊天内容感兴趣,因此做了一个显示过滤,如下:

1)过滤MSN消息
  msnms
2)过滤发出的消息(格式:MSG 64 N 128,前面的那个数值是消息的序号,每次加1)
  frame[54:80] matches "^MSG [0-9]* N"
3)过滤收到的消息(格式:MSG abc@hotmail.com  妮称 642)
frame[54:80] matches "^MSG [a-z,0-9]*@[a-z,0-9]*" && !(msnms contains "TypingUser")

然后组合三个条件 : 1 && (2 || 3)

以下是经过实际验证的过滤表达式:
(msnms) && ((frame[54:80] matches "^MSG [0-9]* N") ||((frame[54:80] matches "^MSG [a-z,0-9]*@[a-z,0-9]*" ) && !(msnms contains "TypingUser")))

如果要对某个人的聊天记录进行sniffer,只需要增加一个 ip.addr==x.x.x.x就可以了
 
叹!Ethereal的过滤功能实在是强大,连正则表达式都支持,非常实用!!!  回复  更多评论
  
# MSN Messenger协议开发:认证阶段--转载
2006-12-19 15:04 | 游子
1.2 MSN Messenger协议开发:认证阶段

作者:汪俊杰
电子邮件:unicentre(at)gmail.com
QQ:10402488

MSN的认证阶段包括登录到MSN即时通讯服务器并且取得好友列表。

MSN即时通讯软件的协议是基于ASCII码的协议。第一个阶段包括连接到MSN即时通软件的服务器。在这个阶段我们应该连接到服务器“messenger.hotmail.com”的1863端口(MSN即时通讯软件通过1863端口进行工作)。一旦连接上以后,我们就可以一步步开始登录过程了。

步骤1: 验证MSN的版本。客户端(即我们的MSN软件)列出及向服务器发送它可以支持的版本,然后等待服务器的回应。

>>> VER 0 MSNP7 MSNP6 MSNP5 MSNP4 CVRO

在MSN协议中,伴随着每个命令都有一个 “ 试验ID ” 被发送。此实验ID从0开始,并且当每次服务器成功的对客户端的命令做回应时,都会增加。

服务器的回应如下

<<< VER 0 MSNP7 MSNP6 MSNP5 MSNP4

现在客户端(MSN)和服务器之间确定了它们之间将要进行通讯的版本。

步骤2: 客户端(MSN)向服务器发送一个请求,要求服务器提供它所支持的

认证时需要的安全包的名字。

>>> INF 1

MSN在发送密码时会将密码加密,保证如有人监控你的端口时,密码不会轻易的泄露。

服务器的回应如下

<<< INF 1 MD5

MD5在这里是服务器当前支持的安全包的名字。

步骤3: 客户端(MSN)将向服务器发送用户ID

>>> USR 2 MD5 I ideal_wang@hotmail.com

然后服务器将检验它是否包含有验证所需的此用户的所有相关信息。如没有的话,服务器将会发送如下回应:

<<< XFR 2 NS 64.4.13.55:1863 0

意思为客户端(MSN)应该连接到NOTIFICATION服务器,地址和端口分别为64.4.13.55:1863。

我们关闭当前的连接并且在连接到新的服务器64.4.13.55时重复以下步骤

>>> VER 3 MSNP7 MSNP6 MSNP5 MSNP4 CVRO
<<< VER 3 MSNP7 MSNP6 MSNP5 MSNP4
>>> INF 4
<<< INF 4 MD5
>>> USR 5 MD5 I ideal_wang@hotmail.com

步骤4: 如果现在我们连接上的服务器有了此登录的用户的信息,服务器回应如下:

<<< USR 5 MD5 S 989048851.185113730

服务器发送的此字符串是“MD5 杂乱信息 ” 。此杂乱信息由服务器创建并且在认证过程中使用。客户端然后向服务器发送使用MD5运算法加密后的密码。实际上客户端向服务器发送的是一个独一无二的MD5字符串,此字符串等价于此 “ MD5杂乱信息 ” (即989048851.185113730)+密码,本例中MD5字符串是3b7926d277068ec49576a0c40598ff21。

>>> USR 6 MD5 S 3b7926d277068ec49576a0c40598ff21

如果密码正确,服务器将做如下回应:

<<< USR 6 OK ideal_wang@hotmail.com Jun Jie

此处“Jun Jie ” 是用户的呢称.

MSN协议的最新版本中,服务器将发送一些附加的数据,像用户的信息和一个认证码(类似于一个cookie,可以用到许多其它的功能中):

<<< MSG Hotmail Hotmail 362
<<< MIME-Version:1.0
<<< Content-Type:text/x-msmsgspro file;charset=UT
<<< Login Time:1011252477
<<< EmailEnabled:1
<<< MemberIDHigh:84736
<<< MemberIDLow:-143472939
<<< Lang_preference:103
<<< PreferredEmail:ideal_wang@hotmail.com
<<< Country:IN
<<< PostalCode:
<<< Gender:M
<<< Kid
<<< Age:22
<<< Sid:517
<<< Kv:2
<<< MSPAuth:2AAAAAAAADU0p4uxxxJtDJozJS1UTS0i7YpwnCoPUHRv56YKxxxCTWmg$$

步骤5: 经过上述步骤我们登录上了服务器,但是我们的状态仍然是离线。为了能够发送和接受信息,我们需要把我们的状态改成在线。客户端通过如下命令完成这步:

>>> CHG 7 NLN

服务器则向客户端发送回在线的好友及其相应的状态:

<<< ILN 7 NLN btxxxe@hotmail.com nick
<<< ILN 7 AWY wmxxe@hotmail.com mike
<<< ILN 7 BSY tehpxxp@hotmail.com jerry
<<< MSG Hotmail Hotmail 223
<<< MIME-Version:1.0
<<< Content-Type:text/x-msmsgsinitialemailnotification;charset=UTF-8
<<< Inbox-Unread:293
<<< Folders-Unread
<<< Inbox-URL:/cgi-bin/HoTMaiL
<<< Folders-URL:/cgi-bin/folders
<<< Post-URL:http://www.hotmail.com

步骤6: 向服务器发送的下一个命令是和当前使用的客户端的版本相关的,客户端向服务器发送它的版本号和所在机器的信息像操作系统和其配置等:

>>> CVR 8 0x0409 win 4.10 i386 MSMSGS 4.5.0127 MSMSGS

0x0409 win4.10 i386 指出客户端当前的运行环境是win98,使用的是Intel的微处理器;MSMSGS 4.5.0127 MSMSGS 指出msmsgs.exe的版本号。

服务器回应提供下载最新版本及一些其它的信息的地址:

<<< CVR 8 4.5.0127 4.5.0127 1.0.0863
<<< http://download.microsoft.com/do ... /en-us/mmssetup.exe
<<< http://messenger.microsoft.com

这个CVR命令的发送并不是必须的,无论此命令是否发送,MSN协议都可以正确的工作.



为了获得我们的好友列表,我们可以发送如下命令

>>> LST 9 RL

服务器将相应发送回“反向列表”,此反向列表为当你在线时,可以看到你并能向你发送即时消息的用户列表。你也可以使用LST 9 FL命令向服务器请求 “ 正向列表 ” ,此正向列表包括你加入到好友列表中的所有好友。服务器所做的回应如下

<<< LST 9 RL 69 1 19 ideal_wang@hotmail.com venkat
<<< LST 9 RL 69 2 19 puxxxxx@hotmail.com puja
<<< LST 9 RL 69 3 19 vancxxxx@hotmail.com ramachandran
<<< LST 9 RL 69 4 19 moxxxxx@hotmail.com chandramouli
<<< LST 9 RL 69 6 19 v_n_xxxx@hotmail.com Narakatesh
<<< ........
<<< LST 9 RL 69 19 19 puneetagarxxx@hotmail.com puneet
  回复  更多评论
  
# re: MSN协议分析--转载
2006-12-19 15:12 | 游子
MSN Messenger 聊天传输协议研究站点(英文版)- -
网站地址: http://www.hypothetic.org/docs/msn/index.php
  回复  更多评论
  
只有注册用户登录后才能发表评论。

欢迎大家扔鸡蛋!送鲜花!

博客可以收入过千吗?

<2008年8月>
日一二三四五六272829303112345
678910111213141516171819202122232425262728293031123456

常用链接

留言簿(8)

随笔分类(314)

随笔档案(337)

文章分类(7)

文章档案(10)

相册

收藏夹(1)

其它

友情链接

数字电视

生活、旅游

自己的链接

计算机

搜索

  •  

积分与排名

  • 积分 - 403671
  • 排名 - 9

最新评论

阅读排行榜

评论排行榜