网络即时通信软件协议分析.doc_第1页
网络即时通信软件协议分析.doc_第2页
网络即时通信软件协议分析.doc_第3页
网络即时通信软件协议分析.doc_第4页
网络即时通信软件协议分析.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络即时通信软件协议分析摘要:随着人们对即时通信软件的依赖越来越大,而对于这些即时通信软件的协议分析也显得越来越重要,本文主要即时通信软件的发展现状,比较了几款即时通信软件的特点,着重介绍了QQ协议的分析方法和对于登陆过程的简要分析,为QQ的其他功能的协议分析提供了参考。关键词:即时通信;协议分析;抓包一、引言随着Internet在世界的迅速发展,宽带业务的普及率也越来越高,几乎每个人的家庭中,工作中都有连接Internet的个人电脑,同时应人们对Internet即时通信(文字,语音,视频,文件传输)的要求,网络上的即时通信软件应运而生,目前网络上流行的即时通信软件有:QQ,Fetion,MSN,ICQ,在国外ICQ,MSN占主流地位,国内则是QQ,Fetion占主流地位,中国移动开发的Fetion依靠它在移动通信方面的优势大有超越腾讯QQ的趋势,同时对于不同职业的人群,即时通信软件的选择也不尽相同,公司职员和商务人事主要选择MSN,而学生则主要选择QQ和Fetion。由于这些即时通信软件的功能越来越多同时也越来越完善,所以人们对它的依赖程度也越来越大,这些即时通信软件的协议格式都不相同,各个软件公司都想要自己的产品在网络上能提供一些与其他软件不同的服务,所以这些软件的协议都是不公开的,避免有人编写插件用以逃过付费,从而享受软件提供的有偿服务。但是这也严重的束缚了即时通信软件的发展。因此对这些主流的即时通信软件进行协议分析是十分必要的。本文对现在国内主流的QQ和MSN进行初步的协议分析,对分析方法进行了介绍。2、 对协议分析前的准备采集QQ数据是我们对QQ协议进行分析的基础。PC上:QQ2OO8,windumpOS X上:showUDP,calcMD5,qqDecrypt把QQ密码更改为123456。这主要是为了方便分析。关闭其它不必要的网络程序,避免产生干扰数据。如果有必要的话,重新启动计算机。三、数据包收集过程1、打开命令行窗口,输人命令,开始收集:windumpwpcdump-s 0 udp。2、运行QQ,且登录。3、登录成功以后,等待4到5秒。其主要目的是把登录的命令和后面要收集的命令区分开来。4、执行需要收集的操作,其间注意把操作细节给以记录。包括操作顺序,系统的反馈提示,输人过的信息。如果某一操作反馈时间比较长,记录大约的时间间隔,且记录下我们可能需要的信息。信息越详细,越有助于进行猜测。5、完成需要记录的信息后,等4到5秒,选择离线。目的是把后面的操作和中间的操作区分开来。6、回到命令行窗口,应用Ctrl+C键结束收集。把当前目录下生成的pcdump文件传送到Mac上准备做进一步分析。四、QQ文本传输协议数据包分析在sample目录下已经有一个这样的pcdump文件。在开始分析前,需要对数据进行一些预处理,以便以后的分析。1、要把这个文件转化为方便阅读的文本文件格式,使用showUDP pcdumppcascii。这时能够生成一个名为pcascii的文件。这个文件是一个文本文件,你可以用textEdit等编辑器来打开它。里面是分为一个包一个包的UDP数据的内容。进行简单地判断,把一些与QQ无关的数据删除。然后保存这个文件。在sample目录里面,也能够看到此文件。进一步删除这个文件中一些我们暂时不感兴趣的内容。例如,只留下以02开头的数据包。这些数据包是我们称为TCPF协议族的通信。它构成了QQ文字聊天功能的主体。把此文件保存为tepfascii。这是我们下一阶段的分析重点。2、准备一些解密的密钥。首先,在tcpfascii文件中,第一个包应该是以02 0a 1d o0 22开头的登录数据包。把它的随机密码部分(应该是16个01拷贝到一个空白的纯文本文件中,并把它保存为loginKeyhex文件。其次把后面的登录包数据部分(不包括包尾的03),保存为loginDatahex。最后我们执行:qqDeerypt loginDatahexloginKeyhex。这个程序的作用是使用loginKeyhex文件的内容作为密钥去解密loginDatahex文件中的数据。如果解密成功的话,程序输出的最后一块数据就是解密后的结果。把这块数据保存为loginDatadeerypt。这时我们就有了QQ登录数据包的真实数据。3、制作一个文件,它里面是QQ密码的ascii数值。对123456的密码,应该为31 32 33 34 35 36。第一,在sample里面有这个文件,文件名为pwdhex。第二,制作密码的MD5 digest,运行:ealeMD5 pwdhex。这个命令能够计算pwdhex文件里面数值的MD5 digest,且把输出结果中的MDd5 digest保存到pwdmd5hex中。第三,计算MD5 digest的MD5 digest,运行ealeMD5 pwdMD5hex,把计算的结果部分保存到pwdmd5md5hex文件中。且使用其来作为密钥解密登录请求的应答数据包:在tcpfascii文件中找到以o2 01 00 0o 22开头的数据包,把它的数据部分拷贝到loginReplyDatahex中,然后运行:qqDeerypt loginReplyDatahex pwdmd5md5hex。输出的结果就是登录响应数据包的真实数据。第一个数字应该是0,后面的16个数值就是以后通讯所使用的密钥。我们把它保存到名为sessionKeyhex文件中。4、用sessionKeyhex逐个解开这些以后的数据包,凭借着想象力和不断的尝试,我们可以越来越了解QQ协议的细节。五、QQ其他功能协议对于从客户端发出的数据包,前7个字节是包头,紧跟的4个字节是你的QQ号码。其后到包尾(不包括包尾o3)是解密的包数据。把数据包拷贝到一个文件。例如,找个0x0016命令的数据包,把它的数据放到了 ndM ghex中。然后运行:qqDeerypt sendMsghex sessionKeyhex,输出的结果就是它的真实数据,把它保存到sendMsgdeerypt中。其数据为:01 F8 3D 65 04 FA 73 BA0A 1D 01 82 5D 90 0E C937 04 9D DD F7 1A F2 BO96 CF 57 73 5A 56 3B 2CD6 ED 00 OB 3B FO 3F 5124 0E oo CC O0 00 00 0100 O0 00 O0 O1 74 72 7969 6E 67 20 O0 09 O0 O000 o0 86 O2 CB CE CC E5OD由以上的数据,可以发现其中有这样的一些魔术般的数字:01 F8 3D 65,转换成十进制就是33045861。我的QQ号码。o4 FA 73 BA, 转换成十进制就是83522490,feifei的QQ号码。74 72 79 69 6E 67,转换成ascii字符就是trying。根据前面的操作记录,我曾经试着向feifei发送了一个trying的消息,很明显这个数据包就是这个发送消息的数据包。由此说明Ox0016是发送消息的命令。而且了解了其中包含的一些内容。CB CE CC E5是GB18030的“宋体”。显然,它表示的是所使用的字体。前面的一些,则分别代表字号,字型等,通过试验不断的进行了解。这样就能够逐步了解这些数据包内容的含义。)六、MSN通信软件文本消息传输协议分析1、(1)AIM与ICQ同是AOL公司的产品,因此协议格式基本相同。有两点不同之处:一是AIM支持聊天室消息发送和接收服务,分别如表1所示的SNAC(0xoe,0x05)和SNAC(0xoe,0x06)服;二是AIM采用HTML格式组织消息体数据。 (2)MSN文本消息传输协议格式简单,应用层数据以命令为首标,采用命令行的方式组织数据,命令使用ASCll码表示,统一采用三个字母组成,如“MSG”为消息传送命令,后面跟随零个或者更多个参数,参数之问被一个或者多个空格字符分开,命令结束通过回车换行符(CRLF)表示。例如MSN客户端给消息服务器发送一个即时文本消息的应用层协议格式为:MSG TrID N Lengthrn Message。该消息中MSG是一个发送消息命令,命令之后是用空格隔开三个数;TrlD是客户端与服务器交互的标志N是服务器响应的特征码,表示只要求服务器不能转发消息给接收客户端时才响应;I朋gth是消息长度;rn是回车换行符,表示命令结束Message是指定长度的消息体。MSN的Message消息体消息是一个MIME格式编码流,使用标准的MIME头,可以参考RFC-1521和RFC-822来了解更多的关于MIME格式的信息。(3)雅虎通的协议格式 YMSG为应用层首标,由ASCII表示;其后的四个字节为客户端的协议版本号;数据长度指出教据部分的字节长度;服务是两字节的操作码,指明客户端发送的是哪一种服务请求或者说明服务器对哪一个服务的响应。雅虎通至少提供了45种以上的服务,发送一般消息的服务是0x0006,聊天室消息的服务是0x00a8 t状态在服务器响应的情况下,表示对请求的响应状态(成功,失败等)。会话ID是客户端与服务器端通信的标志,一旦服务器指定它们之间的一个会话ID以后,它们之间的所有数据包都使用这个ID进行通信。 2、MSN即时通信软件系统架构分析 即时通信系统一般有两种模式:客户/服务器模式,即发信端用户和收信端用户必须通过服务器来交流;客户/客户模式,即服务器给每对客户端建立一个TCP通道,他们的交流在这个TCP之上进行,无须通过服务器。QQ、MSN、ICQ、AIM和Yahoo Messenger这些主流软件使用的是客户/服务器模式,文本消息必须通过服务器才能从一个客户端传到另一个客户端。对于文本消息的传送,除了通信架构均是基于客户/服务器务器模式之外,消息传输均是建立在TCP协议基础之上的,而且服务器的端口一般都是固定端口。服务器通过提供固定的服务端口被动式地与客户端进行通信,起到消息中转的作用。需要特殊说明雅虎通对同一个局域网内的客户端通信采用客户/客户的通信架构。下面以MSN的通信机制为例进行阐述: MSN是一个基于MSNP协议的IM通信系统,它提供了包括登录、认证、授权、重定向在内的全面服务框架。从网络拓扑的角度来说,MSN Messenger分为服务层、连接层和客户层三层。客户层的主要功能是接收用户指令,如发出登录请求、改变用户名状态、发送文本消息请求和发送文件请求等,并提交给相应的服务器集群。连接层提供了一个客户层到服务层的网络通路。 MSN使用TCP传输协议,除了文件传输和语音聊天是直接的点对点通信之外,其他所有的情形全部通过服务器进行。服务层有三种类型的服务器: (1)派遣服务器(DS)。它足客户与服务器建立连接的初始服务器。域名是messengerhotmailcon,标准服务端口是1863。其主要功能是协商协议版本和向客户发送可用的通知服务器IP及端口。在客户收到NS的IP及端口并发回确认后,DS切断与用户的连接。 (2)通知服务器叫(NS)。在MSN会话期间,客户需要一直保持与它的连接,很多任务要在这个会话内完成,包括登录、改变状态、获取用户列表、修改用户信息、发起聊天、邮件通知、退出等。服务端口通常也是1863。(3)中转服务器(SS)。客户之间聊天时负责内容的中转。每开一个聊天窗口,客户与服务器就建立一个TCP会话。服务端口通常也是1863。当客户之间需要进行文件传输或语音聊天时,发送系统消息,建屯点对点会话通道(可能转为使用UDP)。点对点通信使用的端口由客户端自动协商决定,如文件传输通常使用6891端口。3、数据采集及存储系统采用基于网络嗅探技术的数据采集方法,以WinPcap 4.0.1作为开发工具,Windows平台下使用WinPcap从网络适配器嗅探数据十分方便,图3是使用WinPeap捕获网络数据包的基本流程。使用WinPcap开发应用程序除可以捕获数据包外,最大的优点在于WinPcap可以对数据包进行过滤。WinPeap从网络适配器上嗅探到的是最原始的数据帧,这包括了所有流经的数据。如果不对数据包进行相应的过滤,将会捕获到许多无关的数据,这会增加系统的负担,使系统工作效率降低。在数据采集之后,采用什么样的存储策略来存储数据,以最大限度地保证采集到的网络数据包(Pack.et)不丢失,是系统设计中必须面对的一个重要问题。网络丢包的原因可能有很多,包括内存缓冲技术、磁盘I/O能力、包过滤及处理技术、数据流量大小、网络接口性能、CPU处理能力等诸多方面。网络丢包的指标一般采用丢包率(Rate of PacketLoss,RPL)。计算公式为:L=(发送的数据包数一接收到的数据包数)/发送的数据包数)100%。众所周知。频繁的磁盘I/O显然会影响到系统的性能和效率,这在大的数据流量下尤为明显。为了避免频繁的磁盘I/O,需要在数据存储时引入内存缓冲处理技术。在基于WinPcap的网络数据采集中,系统使用了多级内存缓冲,内核缓冲器和用户缓冲器的大小分别设置为6MB和1MB,并设置内核缓冲器和用户缓冲器之间一次传送的最小数据块的大小为512kB。七、结论从上面的研究我们可以看出,通过现代科技,用三维激光扫描技术和数码相机前期采集数据,然后通过电脑软件photoshop和CAD的后期处理的测绘方法与传统的测绘方法相比,有传统技术无法比拟的优势。1、它可以在较短的时间内,将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论