不要追求绝对的公平,红尘之中没有公平而言,人活一世,难得糊涂。                                           it is no use doing what you like, you have got to like what you do.

MSN协议消息传输过程分析

上一篇 / 下一篇  2007-04-18 09:28:24 / 个人分类:软件测试技术

MSN协议消息传输过程分析51Testing软件测试网4Bv y(T9D3U)sW

                                  
1bd0t5vwIF(Nf0

/F'{K-Z;E0

接着上一篇,分析了MSN认证过程的加密后再来看看MSN会话传输过程,其实MSN的会话传输一直都是明文的,只不过是用UTF-8编码过的,当然E文的消息是直接可以看到的。这次分析采用的工具是Omnipeek,觉得比snifferpro要人性化一些,可以很清楚的看到MSN协议的包。

'y&xx+P@0a%~vV0

开始分析之前先要知道MSN进行任务传输的几个连接过程:51Testing软件测试网l:Zo$Kvf-k

1conten-type:text/x-msmsgscontrol            51Testing软件测试网GY/v\_#V.y`

2conten-type:symmetric-nat                  51Testing软件测试网 ZX;T$^9A] J5z-O

3conent-type:text/x-msmsgsinvite            51Testing软件测试网$jk)h4jp'f#N,e

4conten-type:text/x-msnmsgrp2p                51Testing软件测试网1Hb2l9p%z.w*i:MaXZ

5Content-Type: text/plain    51Testing软件测试网W8T9So RL%f

解释一下,1是消息传输控制,2是视频连接,3是音频连接,4是视频,游戏,5是文本传输。本文分析的就是文本的传输过程,总是听人说前段时间某某员工MSN聊天记录被监听到,我孤陋寡闻没听说过,不过MSN一直是明文传输被监听是很正常的事情。其实查看MSN聊天原文是很简单的事情,不至于用工具那么复杂。

"]EI:^U!p0

为了方便分析,我只抓取了发送文本的数据包,如下图:51Testing软件测试网:]W2I-Pt/uI N+uE

t9L6d$D(Z(jH0

可以看到协议的类型很清楚的显示出来了,因为MSN协议是建立在TCP协议之上的,所以我们嗅的时候只需要把Filters定义为TCP协议就可以了。下面我们就来分析这些数据包。在MSN上向一个朋友发送一段消息:“这是我的方案11111111111111111111111”加上一段“1”是为了在编码中更好的看出我们的原始消息。 看一下抓到的包如下:51Testing软件测试网 w@"wTR'Y9V?

MSG 27 N 16851Testing软件测试网r9J+X [&O7E-L

MIME-Version: 1.0

n:Uqg C gy)Gt0

Content-Type: text/plain; charset=UTF-851Testing软件测试网+L}$r&Dm

X-MMS-IM-Format: FN=MS%20Shell%20Dlg%202; EF=; CO=0; CS=1; PF=051Testing软件测试网9Rv-k ]I

杩欐槸鎴戠殑鏂规11111111111111111111111 

gl9Y$p&d0

从上面的数据我们可以看出MSN消息的组成,MSN消息符合标准的MIME10协议,可以很清楚的看到消息头和消息体,看到这个大家想到了什么?这个一会再说,开始的MSG是消息的命令,后面是MIME的版本号,接着是连接类型Content-Type: text/plain,这里看到了charset=UTF-8,说明消息体是经过UTF-8编码过的,FN=MS%20Shell%20Dlg%202消息头也需要经过URL编码。然后到了消息体:杩欐槸鎴戠殑鏂规11111111111111111111111。这段信息就是我刚才发送的MSN消息,看到那一串“1”了吧,前面的那些字符是不是“这是我的方案”呢?看一下数据包16进制的编码内容:

ys+x*ns,hN:k0

58 2D 4D 4D 53 2D 49 4D 2D 46 6F 72 6D 61 74 3A 20 46 4E 3D 4D 53 25 32 30 53 68 65 6C 6C 25 32 30 44 6C 67 25 32 30 32 3B 20 45 46 3D 3B 20 43 4F 3D 30 3B 20 43 53 3D 31 3B 20 50 46 3D 30 0D 0A 0D 0A E8 BF 99 E6 98 AF E6 88 91 E7 9A 84 E6 96 B9 E6 A1 88 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31

,vTj\.x0

最后的一串“31”就是“1”的16进制了再往前看“E8 BF 99 E6 98 AF E6 88 91 E7 9A 84 E6 96 B9 E6 A1 88就是“杩欐槸鎴戠殑鏂规”的16进制编码,为什么这么说呢?往前看4个字节“0D 0A 0D 0A”,在MSN中每行命令都需要以“0D 0A”作为结束符,转换过来就是“\r\n”在数据包没有decode格式中的表现形式就是“..”。MIME-Version: 1.0 \r\n16进制格式就是4D 49 4D 45 2D 56 65 72 73 69 6F 6E 3A 20 31 2E 30 0D 0A ,感兴趣的朋友可以相应的对照下 。下面就来看下如何解码MSN的中文消息,大家也可以自己编程实现,无非是一个UTF-8的字符转换游戏而已了。

{I.J+`K,g0

这里有一个小工具实现了这个功能,打开那个包,选中消息部分的16进制编码,如图:51Testing软件测试网|E N3f"P GtF P

   51Testing软件测试网X&NtVn)b0R.e;H~(`

后面的一串“1”就不用解码了,然后打开这个小工具,把16进制代码复制进去,如图:51Testing软件测试网f+V6J w5ga

51Testing软件测试网[1d7E u*\0f+N&U

从下面的回显中我们已经看到了被UTF-8编码后的中文消息,这个Raw功能就实现了16进制消息还原的功能,接下来要做的就是UTF-8解码,点下旁边的UTF8Decode按扭,可以看到原始消息已经被还原了,如图:

8\qFrjG9bd+`0

51Testing软件测试网U1pvSyU|

可以看到MSN协议的消息传输其实就是一个字符编码游戏而已,根本没有经过加密。这里再提供一个方法,看下MSN的消息体:51Testing软件测试网aT ~&EU"A#w do

MSG 27 N 16851Testing软件测试网q^|;t3f

MIME-Version: 1.051Testing软件测试网(X"BE8K4r`L"[3G

Content-Type: text/plain; charset=UTF-851Testing软件测试网!n pyMy:Y/B#U@

X-MMS-IM-Format: FN=MS%20Shell%20Dlg%202; EF=; CO=0; CS=1; PF=0

7c&C^ h0_/S a(m2y0

杩欐槸鎴戠殑鏂规1111111111111111111111151Testing软件测试网Cx\Kg1D)B

符合MIME标准,我们知道所有的邮件都是符合MIME标准的,也就是说一条MSN消息可以被当作一封邮件来处理,我们来实验下,把以上内容保存为.eml格式,用outlook打开会是什么样呢?结果如图所示:

7D?/~ L5CYK&t0

._FA-T H"L0

消息被还原成功了。其实还原MSN消息的方法还是有很多的,记住这只是一个编码游戏,那么用一些字符处理工具试试?比如winhex之类的,这里我就不演示了,感兴趣的可以自己去实验下。

7v:s+^7Stc}E\0

live messageer中,MS为了保持MSN协议的开放性和扩展性,而又想增加一些隐私性给用户,所以消息还是明文传输的,只不过增加了一个“悄悄话”功能,在这里对用户的消息传输进行加密,有时间我会分析一下这个功能的加密形式,这篇文章就到这里结束了,有问题或者对协议分析感兴趣的朋友可以来BCT或手册和我讨论,互相学习。

c:qh%c@U0

相关阅读:

TAG: 软件测试技术

 

评分:0

我来说两句

Open Toolbar