《互联网中即时消息业务的分析和识别毕业设计(论文).doc》由会员分享,可在线阅读,更多相关《互联网中即时消息业务的分析和识别毕业设计(论文).doc(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、互联网中即时消息业务的分析和识别摘 要随着互联网技术的飞速发展,我们的社会正在经历一场信息化的革命,这场革命改变了人们以往的通信方式,给我们的生活带来了新体验。而即时消息业务(IM)是这场革命的重要产物之一。即时消息业务作为一种用户之间进行实时信息传递的主要手段,除了能够提供最初的纯文本交流服务,随着宽带的普及,也开始为人们提供了视频、音频交流等融合宽带元素的服务。然而,由于IM 厂商各自为战,为了保证自身IM 软件的用户群数量,各种即时消息业务一直没有形成被广泛认可的规范。每种即时通的协议规范都各具特点,对各类即时消息业务的通信机制,数据传输格式等进行研究分析,比较它们的通信格式的不同之处,
2、有利于我们寻求一个更好的即时消息通信协议,同样有助于对互联网中不同即时消息业务的数据包进行识别。本文主要对在中国应用最广泛的三种即时消息业务QQ、MSN和飞信的协议特征进行了研究。由于他们使用的协议主要是基于UDP或者TCP协议的,因此,论文开始介绍了TCP/IP协议;另外,介绍了在互联中进行抓包解包的协议分析工具Wireshark。但最主要的内容是:介绍了QQ的协议,加密算法,数据包格式以及解析了QQ的登陆、发送接收消息流程等;介绍了 MSN和飞信,主要阐述了它们的通信架构,数据通信格式,描述了其从登陆,发起一个聊天到关闭聊天窗口的过程。关键字 即时消息 QQ MSN 飞信 协议分析The
3、analysis and recognition of IM on the InternetABSTRACTWith the rapid development of the internet technology, our society is undergoing an information revolution. This revolution has changed the way of the communication between people, and brought new experiences to our life .Instant Messaging (IM) h
4、as been one of the important products of this revolution. As a main approach of live information transmission between users, Instant Messaging (IM) is able to provide the initial service of text intercommunication, and as the wide use of broadband, it as well has started the services that comprise t
5、he broadband element like video, voice and so on.Nevertheless, as the IM manufacturers fight for themselves, and insure the number of its subscribers, all kinds of Instant Messaging has not formed a unified standard. The protocol standard of each IM has its own characteristics, the study of telecomm
6、unication mechanisms, data transmission format, etc of each kind of Instant Messaging, and the comparison of different kinds of telecommunication format will help us to find a better telecommunication protocol for Instant Messaging, as well as do a favor to the recognition of data packets of differe
7、nt kinds of IM on the internet.This paper mainly studies the protocol characteristics of QQ, MSN and Fetion, three kinds of the most widely used IMs in China. As the protocols they use are based on UDP or TCP protocol, the paper starts with the introduction of TCP/IP;In addition, it introduces the p
8、rotocol analyzing tool Wireshark which capture and unclose data packets on the internet. But the main components are: presenting the protocol, encryption algorithm and data format of QQ, and analyzing the flow of its login, sending and receiving messages; introducing MSN and Fetion, mainly describin
9、g their communication frames, data transmission formats and depicting the procedure of firstly logging in , then initiating a chat and closing the chatting window at last.KEY WORDS Instant Messaging QQ MSN Fetion protocol analysis目 录第一章 绪论11.1 研究背景11.2 论文组织结构1第二章 计算机网络体系概述22.1 TCP/IP协议架构22.2 TCP和UDP
10、协议3第三章 即时通信软件简介43.1即时通信软件分类43.2 QQ、MSN和飞信的特点43.3即时通信软件的通信架构4第四章 WIRESHARK介绍5第五章 QQ协议分析55.1 QQ通信协议概述55.1.1加密算法55.1.2 通信协议65.1.3 数据通信格式75.2 QQ数据包的采集与分析95.2.1 QQ2008登陆数据包的采集与分析95.2.2 QQ2009数据包的采集与分析14第六章 MSN协议分析216.1 MSN 协议概述216.2 MSN通信机制216.3 MSN常用命令236.4 MSN数据包采集与分析24第七章 飞信协议分析287.1飞信协议概述287.2 飞信通信机制
11、287.3 飞信数据包采集与分析33第八章 QQ、MSN及飞信通信的比较38第九章 QQ、MSN及飞信数据包的识别39第十章 编程识别QQ数据包40第十一章 总结与展望42第一章 绪论1.1 研究背景近年来,随着我们的社会步入信息时代,人们对信息交流的要求越来越高,即时消息业务(IM)应运而生并且不断发展,为人们日常交流提供了一个更加便利、高效、安全的平台。即时消息业务也称即时通讯(Instant Messaging , IM),是指能够利用网络即时发送和接收消息、文件、语音和视频的业务1,是通过Internet 即时和他人取得联系的一种通讯方式, 使用即时通讯软件的用户可以通过它查看其联系人
12、是否连接Intenet 上, 并能给在线或者离线的用户即时地发送简单的文字消息。随着宽带的普及和其他网络信息技术的提升,即时消息业务已经从最初只提供文字消息交流的服务演变成为能够融合视频、音频交流等宽带应用元素,集原有的消息传送、文件传输、语音聊天以及电子邮件、博客、游戏、搜索、音乐和电视等多种功能为一体的综合通信服务,得到越来越多人的青睐和使用, 并逐渐代替电子邮件成为最为普遍和流行的Internet服务模式。截至2009年底,我国即时通讯用户规模已突破2.77亿,同比增长23.7%。目前人们熟知的IM,既有腾讯QQ、微软MSN等综合类即时通信工具,也有网易泡泡、新浪UC、百度Hi、阿里旺旺
13、、淘宝旺旺、盛大圈圈等垂直即时通信工具,还包括中国移动飞信、中国电信天翼Live、Skype等跨平台、跨网络即时通信工具。然而,由于各个即时通厂商为了各自利益,保障各自的用户数量,其使用的协议都是私有的,未经过标准化,不同即时通软件的用户之间进行互通交流目前还未完全实现。因此,对不同的即时消息业务的协议进行分析,比较出它们所采用的通信机制之间的差别,得出各自的优缺点,有利于各个即时消息业务之间的互操作性的实现,为互联网中不同即时消息的数据包的识别奠定基础, 并且,还将对研究出一个更好的即时通信协议有着重要的作用,。本文将对腾讯QQ、MSN以及飞信进行详细地解析。腾讯QQ,原称腾讯OICQ,是腾
14、讯公司于1999年2月11日推出的一款免费的多平台即时通信软件,支持文字、语音和视频聊天,还附带有邮箱、游戏等服务。目前,腾讯QQ、手机QQ均为中国最多人使用的即时通信软件,均占据国内个人电脑和手机即时通信市场第一。MSN Messenger是由微软于1999年7月推出的网络即时信息客户程序,可以说是国外IM领域最为流行的IM客户端之一,也是4大顶级个人即时通讯工具之一,而其在中国的市场份额也一直处于前列,仅次于QQ。飞信Fetion,是中国移动推出的“综合通信服务”,即融合语音(IVR)、GPRS、短信等多种通信方式,覆盖三种不同形态(完全实时、准实时和非实时)的客户通信需求,实现互联网和移
15、动网间的无缝通信服务。根据中国互联网发展报告2009表明,截止2008 年12 月,国内即时通信软件有效使用时间排行榜前三位的依次是:腾讯QQ,MSN 和飞信,其中腾讯QQ 达到87.1%,占据绝对优势。1.2 论文组织结构 本文的第一章是绪论,主要介绍了研究背景以及给出了论文组织结构。第二章介绍了计算机网络方面的理论知识,主要从TCP/IP和TCP、UDP两方面展开。第三章简单给出了即时通信软件的分类,概括了本文主要研究的三类即时消息业务QQ、MSN、飞信的外部特点,最后给出了即时通信软件的通信架构。本文第四章对协议分析工具Wireshark作了简单的介绍。第五章的内容是对QQ的协议进行了分
16、析,首先对QQ的加密算法、通信协议、数据通信格式进行概括,然后具体对QQ2008以及QQ2009进行抓包分析。第六章给出了MSN的通信机制、常用命令,并对其数据包作展开分析。第七章同样介绍了飞信的协议、通信机制以及对其数据包作采集并分析。第八章根据上述分析的结果对QQ、MSN、信的通信作比较。第九章为初探QQ、MSN、飞信数据包的识别方法。第十章对本次研究作了总结,并提出对今后在即时消息业务方面的研究展望。第二章 计算机网络体系概述2.1 TCP/IP协议架构TCP/IP协议(Transfer ControlnProtocol/Internet Protocol)叫做传输控制/网际协议,又叫网
17、络通讯协议,是网络中使用的基本的通信协议,是Internet国际互联网络的基础。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(UserDatagramProtocol)协议、ICMP(InternetControlMessageProtocol)协议和其他一些协议的协议组。 传统的开放式系统互连参考模型,即OSI的七层参考模型是一种通信协议的7层抽象的参考模型, 这7层分别是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一
18、层所提供的网络来完成自己的需求。这4层分别为:应用层:应用层是所有用户面向的应用程序的统称,应用程序通过这一层访问网络,并通过这一层进行相互沟通,许多为我们所熟知的基于Internet的应用所使用的协议如进行万维网访问用到的HTTP协议,电子邮件传输用到的SMTP协议、文件传输协议FTP、域名解析协议DNS、网络远程访问协议Telnet等都是属于应用层的。传输层:此层的主要功能是提供应用程序间的通信,并提供了节点间的数据传送服务。传输协议的选择根据数据传输方式而定,如传输控制协议TCP、用户数据报协议UDP等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定
19、数据已被送达并接收。网际层:网际层是TCP/IP协议族中非常关键的一层,主要定义了IP地址格式,从而能够使得不同应用类型的数据在Internet上通畅地传输,其还负责将数据包封装成Internet数据包,并运行必要的路由算法,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),网际协议IP、地址解析协议ARP、网际控制消息ICMP以及互联组管理协议IGMP都是这一层的协议。网络接口层:网络接口层是TCP/IP协议模型的基层,对实际的网络媒体进行管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据,并负责数据帧的发送和接收,帧是独立的网络信息传输单元。网络
20、接口层将帧放在网上,或从网上将帧取下来,抽出IP数据包,交给IP层。图2-1 OSI模型与TCP/IP模型的对应关系及各层的协议数据单元2.2 TCP和UDP协议TCP和UDP是位于TCP/IP协议体系架构中传输层的协议,传输层为终端主机提供端到端的连接,以及流量控制(由窗口机制实现)、可靠性(有序列号和确认技术实现)、支持全双工传输等等。虽然TCP、UDP都使用相同的网际协议IP,但是它们却为应用层提供完全不同的服务。UDP在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP报文后,不需要给出任何确认。UDP报文没有可靠性保证和顺序保证字段,流量控制字段等。虽然UDP不提供可靠交付,
21、但在某些情况下,UDP却是一种最有效的工作方式正因为UDP协议较少的控制选项,在数据传输过程中,延迟较小,数据传输效率较高,适合于对可靠性要求并不高的应用程序,或者可以保障可靠性的应用程序;UDP协议也可以用于传输链路可靠的网络。TCP则是提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。它在传送数据时是分段进行的,主机交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。通过每个TCP传输的字段指定顺序号,以获得可靠性。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及
22、连接管理等。这不仅是协议数据单元的首部增大很多,还要占用许多的处理机资源。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet(网络远程访问协议)、FTP(文件传输协议)、SMTP(简单电子邮件传输协议)等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户
23、程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。TCP或UDP连接唯一地使用每个信息中的如下四项进行两个系统间的多重Telnet连接的确认和协调:源IP地址即发送包的IP地址;目的IP地址即接收包的IP地址;源端口即源系统上的连接的端口;目的端口即目的系统上的连接的端口。端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯2。第三章 即时通信软件简介3.1即时通信软件分类常规的即时通
24、讯软件分为两类,一类个人应用的个人即时通讯,QQ和MSN主要是个人应用;另一类是企业即时通讯,企业即时通讯,如通软联合GoCom、腾讯RTX、恒创ActiveMessenger等都是一种是以企业内部办公为主,建立员工交流平台。3.2 QQ、MSN和飞信的特点腾讯QQ拥有庞大的用户数量,它的功能完善而丰富,操作简单,娱乐性强,支持实时的音视频聊天,大文件传输,并且提供强大的群功能,以及多种增值功能如在线游戏。MSN基于Microsoft高级技术,可使用户之间更有效地利用 Web进行通信。和QQ不同,MSN的特色之处在于它的严肃和保守性,这使得它更受企业用户所青睐,同时这也使得它的用户群更集中在公
25、司的白领职员中,而这也是MSN的市场占有率始终停步不前无法超越QQ的主要原因。飞信,是中国移动开发的仅限中国移动手机用户使用的即时通讯软件,利用移动GSM网络,用户不但可以免费从PC给手机发短信,而且不受任何限制,能够随时随地与好友开始语聊,另外飞信还实现了无缝链接的多端信息接收。3.3即时通信软件的通信架构即时通信软件一般有两种模式:客户/服务器模式, 即发信端用户和收信端用户必须通过服务器来交流;客户/客户模式, 即服务器给每对客户端建立一个TCP通道, 他们的交流在这个之上进行, 无须通过服务器4。QQ、MSN、ICQ、AIM和Yahoo Messenger这些主流软件使用的是客户/服务
26、器模式, 一般由即时通信软件服务提供商提供一组服务器来完成用户登录、转发消息、显示其他用户的出席信息以及语音服务等功能,并且在此模式下,文本消息必须通过服务器才能从一个客户端传到另一个客户端,而且服务器的端口一般都是固定端口。服务器通过提供固定的服务端口被动式地与客户端进行通信, 起到消息中转的作用。 对于客户/服务器模式,目前有两种普遍的系统架构:对称型和非对称型架构。对称型架构指的的所有服务器提供服务所需的所有功能,而非对称架构则由不同服务器担任不同的角色,共同来完成所有功能5。对于对称型架构的IM 系统,客户端不需要区分服务器,只需连接到任一台服务器就可以完成所有需求。而对于非对称IM
27、系统而言,不同的服务器承担不同的角色,根据角色的不同分别完成诸如转发消息、用户登录、语言服务等各种功能。第四章 Wireshark介绍Wireshark是重要的网络分析工具之一,它可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识。下面是用Wireshark抓包的界面:图4-1Wireshark抓包示意第五章 QQ协议分析5.1 QQ通信协议概述5.1.1加密算法QQ基
28、本协议目前为止用了两种公开的加密算法:十六轮的TEA(Tiny Encryption Algorithm)和MD5。TEA是一种小型的可逆加密算法,但是腾讯使用了独特的填充反馈机制。如果整个明文不是8的倍数,还要在头部用16字节的随机数填充,然后在尾部补0,直到是8的倍数。QQ数据明文被分成N个8字节的明文单元,用TEA以16字节的密钥依次加密每个单元产生8字节的密文,密文再参与下一单元的加密。由于头部填充了随机字节,所以即使是同一明文的密文,也会因随机数的不同以及反馈机制而不同。推荐的TEA 算法应该是32 轮,但是QQ 目前就使用了16 轮,TEA 是通过增加加密算法的轮数来提高安全性的,
29、 不是使用复杂的算法。MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的散列算法之一(又译摘要算法、哈希算法)。QQ的包一般都是加密的(包头包尾除外),但是有个别包是不加密的,QQ使用TCP协议进行文件传送的时候大多没有加密。以后如果不做特别说明,则默认这个包是需要加密的。此外,用什么密钥加密也有不同,不过基本上都是用会话密钥加密。这里要注意一下,有时候你收到的包可能不是用会话密钥加密的,比如离线的消息。所以服务器在你下次登录的时候,会把你还没收到过的消息用密码密钥加密再传给你。这是一种特殊的情况。以下是对主要用到的各
30、种密钥的简单解释:表5-1 不同密钥名词解释名称描述临时密钥即可以在数据包中直接提取的加密密钥,一般是数据段的前16Bytes。密码密钥先把QQ密码的字符串用MD5加密得到一个16字节的Byte数组,再把此数组作为明文用MD5加密,之后得到的是一个16字节的Byte数组。会话密钥登录认证成功后,协商出的密钥(16Bytes),用于后续报文解密使用。5.1.2 通信协议QQ基本通信协议支持TCP以及UDP两种方式,而且两种方式基本数据结构大同小异,只是TCP多了一个数据包长度描述的头部信息。一般使用的是UDP协议。QQ基本协议采用应答机制,也就是说发送的每一个包服务器都会回应对应的包的执行结果,
31、服务器发送的每一个包你也要回应(登出包除外,它没回应。),请求和响应通过相同的序列号来进行配对(请求代码也应该相同)。而且每种请求的发起方都是相同的。这也许是因为UDP协议的不可靠性。由此,QQ支持 UDP 和 TCP 登录(如果使用 HTTP 代理,则相当于 TCP登录),默认是UDP登录。UDP登录端口服务器为8000,本地端口一般是从4000开始选择,如果该端口已经被占用,则加1再测试,一直测试到一个没有被占用的端口。TCP登录服务器一般是80或者443端口,本地端口选择方式和UDP一样。另外,手机QQ用户的登录默认为TCP14000端口。这些登录方式登录设置里面可以自由选择。无论哪种方
32、式登录,其登录流程和数据包格式都是一样。可以在登录设置中选择协议登陆。基于上述的TCP/UDP的基本通信协议,我们尝试把QQ的协议进行分类:文字聊天协议族(TCPF, Text Chatting Protocol Family):它主要支持与其它QQ客户端进行文字聊天。TCPF是建立在UDP协议之上。UDP数据包中的第一个字符02为这个协议族的标识。TCPF的服务器使用8000号端口,腾讯的QQ客户端软件一般从4000号端口开始尝试使用,试验发现如果一台PC上有两个QQ登录则一个使用4000端口号,另一个使用4001端口号。但实际上,对客户端使用的端口号并没有限制。目前的研究集中在TCPF上。
33、其它未知可能存在的协议族:我们观察到QQ除了与TCPF服务器通信以外,还有与其它的服务器使用UDP进行通信。目前我们观察到的服务器为 218.17.217.111 : 8000,客户端使用与TCPF不同的端口,观察到的从客户端发出的包以06开头,而服务器返回的包则以01开头,其具体作用未知。我们注意到的一个现象是,如果选择离线后重新上线,那么在发出登录包之前,这个通讯已经开始。我们暂时把它命名为数据传输协议族(DTPF,Data Transfer Protocol Family)。最新的研究发现,它传递的是QQ Show的图片数据。语音、视频聊天:目前还没有开始分析,尚未知道是使用UDP还是T
34、CP协议。聊天室:没有分析,应该是TCP协议随着对这些协议分析的开始,我们会给它们更精细的划分和恰当的命名6。5.1.3 数据通信格式 QQ使用的主要协议为TCPF,其工作模式为请求响应模式,就是客户端发出一个请求时,服务器会给出一个相应,而反过来,当服务器向客户端发送某种信息时,客户端也同样会给出一定的响应。注意,无论哪一方,根据不同的操作结果,响应可能不同。相对应的请求和响应是通过序列号和命令号来标识(其序列号一样,命令号也一样)。基于TCPF协议的QQ数据包其标志为包的头字节为0x02,包尾为0x03,以下分析均基于TCPF包。TCPF包格式如下:图5-1客户端报文格式图5-2服务器报文
35、格式第0字节:标识域也就是头字节,为0x02第1-2字节:版本域,表示了这个包从何处来,主要用来标识客户端版本,如果是0x0100,表明是由服务器发送;第3-4字节:命令域,指示当前的数据包的功用。如其值为0x0016,而版本号不是0x0100,表示这是一个由客户端发起的发送信息的数据包;而当其版本号为0x0100,则表示这是一个发送信息的服务器响应包。第5-6字节:序列号域,原则是保证短期内这个序号不要重复。客户端和服务器都有各自的当前的序列号。处理的时候都是每发送一个当前的数据包,使用当前的序列号,然后再将序列号加1,一般递增到最大再0xFFFF再归0。另外,如果是一对请求响应的数据包,则
36、它们的序列号相同。例如,例如客户向服务器发送命令0X0091,包序列号为0X0410,那么服务器返回命令为0X0091、包序列号为0X0410的包。下一次客户又发了一个命令为0X00BA、包序列号为0X0410+1,即0X0041的包,服务器返回命令为0X00BA、包序列号为0X0041的包的处理结果。如果这是服务器要向客户端发送0x0017命令,它使用它自己的当前序列号,比如说0x2220,客户端收到以后,也响应一个序列号为0x2220的0x0017命令应答。第7-10字节:用户名域,四字节,即客户端的QQ号,若请求方为客户端,则存在此字段,否则无。最后一字节:包尾标志,为0x03。在包头和
37、包尾之间的包数据根据不同类型的包而不同。QQ所使用的主要命令字段如下(随着QQ版本的升级,其所使用的命令字段也发生一定的改变):表5-2 QQ所使用的主要命令字段1)通用常量,操作成功0x002)对方已经是我的好友(byte)0x993)请求登录令牌成功0x004) 登录信息-重定向0x012) 登录信息-登录失败0x053) 改变在线状态成功0x304) 发送认证消息成功0x305) 申请中转服务器,重定向0x00016) 申请中转服务器成功0x00007) 命令常量 - 登出0x00018) 命令常量 - 保持在线状态0x00029) 命令常量 - 修改自己的信息0x000410) 命令常
38、量 - 查找用户0x000511) 命令常量 - 得到好友信息0x000612) 命令常量 - 添加一个好友0x000913) 命令常量 - 删除一个好友0x000A14) 命令常量 - 发送验证信息0x000B15) 命令常量 - 改变自己的在线状态0x000D16) 命令常量 - 确认收到了系统消息0x001217) 命令常量 - 发送消息0x001618) 命令常量 - 接收消息0x001719) 命令常量 - 把自己从对方好友名单中删除0x001C20) 命令常量 - 登陆0x002221) 命令常量 - 得到好友列表0x002622) 命令常量 - 得到在线好友列表0x002723)
39、 命令常量 - 发送短消息0x002D24) 命令常量 - 群相关命令0x003025) 命令常量 - 好友相关数据操作0x003E26) 命令常量 - 群数据操作命令0x005F27) 命令常量 - 请求登录令牌0x006228) 命令常量 - 用户属性操作0x006529) 命令常量 - 临时会话操作0x006630) 命令常量 - 个性签名的操作0x006731) 命令常量 - 接收到系统消息0x008032) 命令常量 - 好友改变状态0x008133) 命令常量 - 发送验证消息0X00A85.2 QQ数据包的采集与分析5.2.1 QQ2008登陆数据包的采集与分析QQ 通信的登录过
40、程是从用户输入QQ 号码和密码后点击“登录”按钮后开始的,按命令子域cmd从先到后可以分为以下几个过程:Touch (0x0091)过程、PreLoginToken(0x0062 )过程、LoginToken (0x00ba)过程、PreSessionKey (0x00dd)过程、SessionKey (0x0022)过程。每个过程又分为请求(由客户端发出)和响应(由服务器发出)两个子过程。以下内容解析QQ2008整个登陆过程,上述已提及对于客户端发起的数据包包头为首字节标志0x02,两字节的版本号,两字节的命令号,两字节的包序号,四字节的QQ号,以及包尾的一字节标志0x03。而服务器发起的数
41、据包除了包头中少了表示QQ号的字节数据,其包头内容和包尾是与对应的客户端数据包是一样的。因此在下面的解析过程中,只分析QQ数据包除包头包尾的部分,也就是数据部分,客户端数据包总第11字节开始,服务器数据包从第7字节开始。(1)0X0091命令(客户端发起)询问服务器本QQ号是否可以在这里登录,具体数据部分格式如下。l 发送:第11-26字节为随机产生的16字节的临时密钥,用于解密本包的密文。第27-58字节为加密的数据。密文用上述的本包临时密钥解密后为:要是初始客户端尝试连接,则其内容为 15 个0x00;其他情况下,此15字节内容不固定,但经抓到的数据包推测其形式为00 01 01 00 0
42、0 00 02(03) 00 00 00 00 xx xx xx xx。()表示或者,xx表示某十六进制数。l 返回1(成功找到接受连接的服务器): 数据内容为16字节密文,解密(用客户端发送的临时密钥)后为两字节:00 00表示服务器成功接受连接,不再重定向。注:可能会有多个服务器接受连接,客户端一般会选择第一个成功接受的服务器l 返回2(重定向服务器): 数据部分为用客户端发送的临时密钥加密的32字节密文,解密后的第0-10字节内容固定为00 01 01 00 00 00 01 00 00 00 00 ,由此可知,我们可以凭借第0和第1字节是否全是0来判断是否需要重定向新的服务器,全0时不
43、需要重定向,全1时需要重定向。第11-14字节为服务器分配的新服务器地址,以此提醒客户端重新去这个服务器试链接(再向新的服务器发送0X0091命令)。(2)0X0062命令(客户端发起)此过程不加密。具体格式如下。l 发送:数据为1字节的0x00l 返回: 第7-8字节固定为被称作预先登录令牌的长度:00 18 第9-32字节为预先登录令牌的内容。预先登陆令牌将会作为0x00BA发送数据包的内容。(3)0X00BA命令(客户端发起)这个是请求登录令牌命令,格式如下。l 发送:前16字节为本包临时密钥,之后的48字节数据部分为密文。用本包临时密钥解密后的明文为:第0字节为令牌长度 0x18,之后
44、的24字节为0x0062命令服务器返回的预先登录令牌内容 第25-28字节为子命令:03 00 05 00(如果由验证码获得,第一位是04)第29-34字节固定为6个00。 注:此数据包客户端会重复连续发3次。l 返回:服务器会返回3次响应。数据部分为48字节的密文。用客户端所使用的临时密钥解密后的内容有所不同,但其形式是一样的,统一为第0-3字节是固定的命令集(03 00 05 00),之后的两字节是令牌长度(00 20),第6-37字节为令牌内容。三次反馈内容的主要区别在于令牌内容的部分,第一次反馈的令牌内容在之后的0x00DD命令中会作为数据的一部分,其它两次的作用未知。(4)OX00D
45、D命令(客户端发起)这部分应该是2007B3(或B2)新增的命令,用于密码验证,比较重要。格式如下:l 发送:数据段为224 字节,前16字节为临时密钥,后208字节为密文内容。 用临时密钥解密后的内容中含有0x20字节的密码验证串,其构成思路为:先用密码密钥TEA算法解这0x20字节,解得到0x14字节。而这0x14字节中的前0x10字节,是密码进行一次MD5的结果;后0x04字节是随机数。由于在这里是登录过程中第一次使用到密码密钥,所以推论应该是在进行密码验证。解密后的整体内容为: 第0-7字节:命令集,固定的 第8字节:令牌长度0x20 第9-40字节:令牌内容,就是0x00BA命令第一
46、次服务器返回的响应内容。 第41字节:0x00 分隔符 第42字节:密码验证串长度 第43-74字节:密码验证串。第75字节:0x00 分隔符 第76字节:长度0x14 第77-96字节:未知,不固定 第97字节:0x00 分隔符 第98字节:剩余字符长度 从第99-174字节是0xBA客户端发起的密文。第175字节:0x00 分隔符 第176-201字节:是一段中文编码,大概意思是“上次登录方式为【初始登录方式】”,没显示全。l 返回:数据段长度为168字节,全部为密文。密钥使用密码密钥(如果密码错误则用客户端发送的临时密钥解)。 解密后内容为: 第0-7字节:子命令集 第8字节:0x20长
47、度 第9-40字节:内容未知; 第41字节:0x00 分隔符 第42字节:0x20长度 第43-74字节:内容未知; 第75字节:0x00 分隔符 第76字节:0x38 长度 第77-132字节:此段内容将在0x22客户端发送数据段以明文形式出现,作用不明 第133-148字节:这0x10很字节重要,将是0x22命令使用的临时密钥。 第149-154字节:6个0x00 ,应该是填充字节。 (3)0X0022命令(客户端发起)这个是请求登录的命令,里面有一些密码等数据。这部分根据版本的不同,数据段长度不同,解密后内容也不一样。l 发送:第0-1字节:0x0038 长度 第2-57字节:作用不明,即0x00DD服务器返回内容解密后的第77-132字节 第58字节到结束:为密文内容,其密文内容用0x00DD服务器返回的第133-148字节作为临时密钥进行解密 解密后内容为: 第0-2字节都为0x00 第3字节:长度0x20 第4-35字节:作用未知,不固定内容