RDP协议详细解析_第1页
RDP协议详细解析_第2页
RDP协议详细解析_第3页
RDP协议详细解析_第4页
RDP协议详细解析_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、.RDP协议详细解析(一)RDP协议详细解析一 前言二 概述三 同络层次四 各连接模块说明五 各功能模块说明六 rdpwin结构、数据流说明七 总结一、前言windows从NT开始提供终端服务,它是微软买来的网络协议技术(Citrix),服务器端要安装、配置,客户端要连接程序。终端服务使任何一台有权限的终端机,用已知的账号登录服务器,可以使用账号内的资源,包括软件,硬件资源;同时,在协议升级后,客户端连接后可以使用本地的资源,包括本地打印机、声音本地回放,本地磁盘资源和本地硬件接口。所有的计算都在服务器端进行,客户端只需要处理网络连接、接收数据、界面显示和设备数据输出。目前,关于RDP服务的l

2、inux客户端程序有winconnect,linrdp,rdesktop,前两个没有源码,但redsktop已经由原来的个人开发后公开代码演变成现在的项目组开发。由于项目的跨平台开发需要,我们在开始时进行过单独的协议破解工作,破解后,我们的程序在原来的RDP4.0基础上扩展到5.1,实现了16位颜色,声音本地回放, 映射本地打印机。对于当前的终端机,这些功能完全满足需要,因此其他功能暂不便破解实现。为防患RDP协议的升级而影响我们破解而得的终端程序的功能性,需要对RDP协议的变化进行跟踪,对et-rdesktop进行优化、完善。鉴于当前的工作安排,将跟踪redsktop项目的进展,以提炼功能为

3、我所用和完善现有程序。二、概述1 版本功能说明:RDP协议在终端服务推出后已有四个版本,4.0、5.0、5.1、5.2。一般来说,版本是根据windows的版本确定的。从客户端的角度来说,5.X版本间提供的功能差别不是很大,相对于4.0版本,它提供了用户带密码直接登录、客户端驱动器资源映射、客户端音频回放、最高24位色显示和符合FIPS加密级别连接。另外,从4.0协议开始变提供的客户羰功能有:高、中、低三种数据加密级别,客户端自定义初始登录环境,客户端打印机映射,客户端LPT端口映射,客户端com端口映射,剪贴板映射,客户登录的个性化设置(包括键盘、显示界面大小等)。2、协议层次说明: 通过破

4、解研究,我们掌握了RDP协议的基本层次结构。基本上,RDP协议的每一层次上都标示出其层内的数据长度值。 对于层次划分,主要是指RDP协议网络功能数据传送时通常都包含的各层次,而对于各层次内所实现的单层次连接等功能将做为单独的模块来进行阐述。 网络连接层:RDP协议建立在TCP/IP协议之上,由于传输的数据量比较大,因此在协议的底层首先定义一层网络连接层。它定义了一个完事的RDP数据逻辑包,以避免由于网络包长度过长而被分割使数据丢失。 ISO数据层:在网络连接层之上是ISO数据层,它表示RDP数据的正常连接通信。 虚拟通道层:在ISO数据层之上,RDP协议定义一个虚拟通道层,用以拆分标示不同虚拟

5、通道的数据,加快客户端处理速度,节省占用网络接口的时间。 加密解密层:在虚拟通道层之上,RDP定义一个数据加密解密层。此层用于对所有的功能数据进行加密、解密处理。 功能数据层:在加密解密层之上是功能数据,画面信息,本地资源转换,声音数据,打印数据等所有的功能数据信息都在此层进行处理。另外,根据数据类型的不同,这些数据都有各自不同层次的分割,他们的内部层次结构将在各个功能模块中进行阐述。3 其它说明: 本协议解析中所提到的各层次结构都是指RDP功能数据正常传送时的各底层结构,在功能数据传送前的各层次的建立连接过程及其结构、实现都归于模块实现来进行说明。 对于服务器端的各种设置以及个版本间的内部实

6、现差异请看RDP帮助文档,以及rdpwin开发文档。4 连接过程说明: 1) 客户端连接服务器 2) ISO数据层建立连接 3) 发送初始协议相关信息,接收加密、解密密钥 4) 虚拟通道申请 5) 加密形式发送客户端系统信息,同时验证加密协议 6) 平台软件证书验证 7) 各功能建立连接,各功能数据传输,功能实现三、网络层次:1 网络连接层:在RDP协议网络实现连接中,本层的数据格式是固定的。内容协议版本号保留此逻辑包长度字节数112值当前版本皆是30逻辑长度,从版本号开始到本包结束2 ISO数据层:在RDP功能数据网络传输中,本层的数据格式是固定的。内容单层数据长度ISO包类型标志字节数11

7、1值2,从下字节开始计算0xf0,表示数据0x803 虚拟通道层: 虚拟通道层用于在正常的网络连接数据之上,中个虚拟通道的功能数据。此层次的连接另见初始连接模块与通道申请模块,在此只说明正常数据连接时的层次结构。 1) 结构信息:内容类型虚拟通道个数虚拟通道号标志字节数1221值0x64/0x680x00010x03eb至0x03ee0x70/0xf0 2) 类型说明: 0x64:客户端发送数据0x68:客户端接收数据 3) 用户号说明: 本次连接的用户号,服务器发送的是0x0001;客户端所发送的值是初始连接时请示通道后服务器同意开通的虚拟个数。 4) 虚拟通道号说明: 虚拟通道号是本层次以

8、上所发送的功能数据所在的虚拟通道号,其由初始连接通道申请建立时确定。 5) 标志说明: 客户端发送的标志为0x70;服务器端发送的标志,当功能数据是图像是(由通道号识别),其值为0x70,当功能数据是其它数据时,其值为0xf0。4 加密解密层:加密解密层用于对网络连接中所发送、接收的数据进行加密、解密。为保证数据和系统的安全性,对网络数据进行加密传输是比较常用且必然的,RDP协议在此层对实际的功能数据进行加密。1) 结构信息:内容单层及层上数据总长度加密标志未知标志数字签名字节数1-2228值从下字节开始计算0x08000x1000/0x0203顺序取得2) 总长度说明: 若长度大于0x7f,

9、则长度以两字节表示,并按位与0x8000。这是由于版本升级赞成的格式不统一,长度不定,当前版本认为长度值不大于0x0fff(4095)因此只用长度值并按位与0x8000实现版本兼容,在版本升级后会以0x8x表示长度值的字节数,其中8表示非1字节,x表示具体的字节个数。3) 加密标志说明: RDP协议要求在正常的功能连接实现之前,首先licence认证,其标志为0x8xxx,且其后数据不同于正常功能数据传输式的加密层格式,可以视licence认证为加密解密层的建立连接过程。另外功能数据的加密、解密的密钥是在初始连接时获得的,而加密解密功能的实现由加密、解密模块阐述。4) 未知标志说明: 服务器端

10、发送过来的未知数据有两种,目前不知其意,客户端在发送数据时将其置为0x0000值。5) 数字签名说明: 对所有的加密数据在此放置8字节数字签名。其值由RC4会话键值和功能数据经过SHA运算和MD5运算得到。5 功能数据层:功能数据是客户端与服务器进行交互的真正数据。他们都有各自固定格式,连接、控制方式,具体情况见各功能模块的说明。根据当前我们所掌握的信息,RDP协议将图像信息、声音信息、设备信息、剪贴板内容都各自以单一的虚拟通道进行传送,而打印机映射,磁盘映射,端口映射都做为设备信息的内容进行处理。限于当前左上角工作和项目工作的限度,设备信息中只考虑了打印机映射的部分,对于打印机信息与其他的设

11、备相关的信息没有进行有效隔离区分,而本协议说明中相关的连接信息、数据传送都只认为是打印机映射的内容。四、各连接模块说明:1 ISO连接模块:在客户端与服务器的网络套接口建立之后,需要首先建立RDP协议底层连接,得到连接确认后才能正常通信。具体实现如下:1) 连接过程说明:初始连接时,在网络套接口TCP连接建立之后中,客户端首先进行连接请求,当收到连接确认后表示网络连接层连接建立,随后开始传送RDP数据。2) 连接请求通信数据:内容层内数据长度RDP包类型未知1未知2标志其它字节数11221不定值从下一字节开始计算0xd0或0xe00x0000另见0x00另见3) RDP包类型说明:0xe0:客

12、户端连接请求0xd0:服务器确认连接 4) 未知数据2说明: 0x0000:客户端请求连接的值0x1234:服务器确认请求的值 5) 其它数据说明: win2003客户端在请求时附带了如下字符“Cookie: mstshash=Administrator0x0d0x0e”,目前不知其意。其中Administrator为自动登录名,当其长度超过12字节时,只保留前12字节,其它字符都固定不变。2 协议信息初始模块:当基本的RDP连接建立后,需要进行客户端与服务器的系统环境、RDP连接环境的信息交流与连接确认。2-1) 发送包结构:内容字节数值ISO数据层及以下XXXX协议信息初始发送标志20x7

13、f65其后数据长度30x82 0xlength第一部分未知数据704 00 04 00 01 01 ff第二部分未知数据XX三组协议参数第三部分未知数据XX四种连接参数2-1-1) 第一部分未知数据结构:内容字节数值Calling domain20x0400Called domain20x0400未知数据20x0101标志10xff2-1-2) 第二部分未知数据结构:内容字节数值协议适合参数2+4+7*(2+参数值占字节数)标志,长度,8个参数值协议最小参数2+4+7*(2+参数值占字节数)标志,长度,8个参数值协议最大参数2+4+7*(2+参数值占字节数)标志,长度,8个参数值说明:3组参数

14、标志都是0x30,8个参数值的标志都是0x20含义适合值最小值最大值虚拟通道数0x22=340x010xffff用户数0x020x010xfc17=64535Token值0x000x010xffff优先数(priorities)0x010x010x01遍及数(throughput)0x000x000x00顶点数(height)0x010x010x01网络逻辑数据包长度0xffff0x0420=10560xffff=65535版本号0x020x020x022-1-3) 第三部分未知数据结构:内容字节数值本部分标志、数据长度40x04 0x82 0xlength1未知数据1400 05 00 14

15、 7c 00 01余下的数据长度20x8000|length2未知数据2800 08 00 10 00 01 c0 00未知数据3444 75 63 61 “Duca”4组数据XX各功能模块连接信息2-1-3-1:基本信息内容字节数值(反字节存储)标志20xc001长度2这一组数据的长度Licence版本21,4,5;lincence标志升级未知数据120x0008窗口宽度、高度4宽度,高度未知数据240xca01,0xaa03Keylayout40x00000409客户端系统组件数4419,2195,2462客户端机器名322字节存储1个字符未知数据3120x04,0x00,0x0c各四个字

16、节未知数据464都是0未知数据5801 ca 01 00 00 00 00 00图形颜色位(最大值)224,16,15,8未知数据6(疑最小位)207 00未知数据7401 00 00 00基本信息返回值多少且固定,认为在具体连接时有更多返回信息。加密信息需要取回加密级别与密钥;通道信息则返回基本图形信息的通道号和其他虚拟通道号,需要另行申请。2-2-1-1) 基本信息内容字节数值(字节反存)标志20xc001本组信息长度20x0008(固定)未知数据120x0004未知数据220x00082-2-1-2) 通道信息内容字节数值(字节反存)标志20xc003本组信息长度2XX需要单独开辟的通道

17、数2若无需申请则不存在通道号组通道数*22个字节存放一个通道号空闲字节20x00002-2-1-3) 加密信息内容字节数值标志20xc002本组信息长度2XX加密位长度41-40位,2-128位加密级别41-低,2-中,3-高服务器随机数长度4目前都是32字节RSA信息长度4从随机数结束开始服务器端随机数32XXRSA信息XXXX密钥信息的类型41-RDP4或0x80000002-X.5092-2-1-3-1) RDP4类型密钥内容字节数值未知数据1801 00 00 00 01 00 00 00公钥标志20x0006长度2length公钥信息RSA1标志452 53 41 31 -“RSA1

18、”公钥模数+衬垫长度448 00 00 00- =64+8未知数据2800 02 00 00 3f 00 00 00公钥指数(exponent)401 00 01 00公钥模数值(modulu)64XX公钥衬垫值(pad)800 00 00 00 00 00 00 00 公钥签名标志,长度40x0008 length(=0x48)签名模数值 64XX签名衬垫值800 00 00 00 00 00 00 00 2-2-1-3-1-2) 公钥信息数字签名X509类型密钥内容字节数值证书个数4不少于2个无效证书XX若证书大于2个,都 被忽略,无效CA证书 XXXX服务器证书 XXXXPadding值

19、16全是0对于win2003操作系统,当授权组件被更改时,此处的密钥变为X509类型。对于客户端,只提取服务器证书部分的相关信息,以得到服务器随机数。由于对于密钥的处理是采用通用的加密算法与标准,因此在此不予深入的讨论。3 通道申请模块对于RDP连接,各种功能数据都是通过单独的虚拟通道传输的。初始连接后,在进一步的信息通信之前,需要开辟相应的通道。1) 过程说明客户端首先发送一个建立连接独立空间请求,再发送一个用户绑定请求,若服务器同意,将发送用户绑定确认,且含有需要申请的虚拟通道总数totalchannel。随后客户端申请虚拟通道。虚拟通道号从1001+2=1003开始到1001+total

20、channel结束,每次申请都应返回一个申请结果。2) 建立连接独立空间请求结构:内容ISO数据层以下请求标示高度值间距字节数XX122值XX0x040x00010x00013) 用户绑定请求结构:内容ISO数据层以下请求标示字节数XX1值XX0x284) 用户绑定确认结构:内容ISO数据层以下请求标志虚拟通道总数字节数XX22值XX0x2e00totalchannel5) 申请虚拟通道号结构内容ISO数据层以下申请标志虚拟通道总数虚拟通道号字节数XX122值XX0x38totalchannelNum,6) 通道申请确认结:内容ISO数据层以下确认标志通道总数申请通道申请通道字节数XX2222

21、值XX0x3e00totallnumnum4 系统初始连接模块:当通道申请各部分通过后,开始系统登录的初始连接。从此数据包开始,所以虚拟通道层以上的网络数据都需要加密,详细的加密功能实现请参见加密模块。登录的网络信息结构如下:内容字节数值(字节反存)加密层及以下XXXX空闲字节40x00000000自动登录标志4正常:0x33,自动:0x28域名长度2若空为0,有值则乘2用户名长度2若空为0,有值则乘2密码长度2若空为0,有值则乘2登录程序长度2若空为0,有值则乘2登录路径长度2若空为0,有值则乘2域名值域名长度+22字节反存1字符,最后为2字节为0x0000用户名值用户名长度+22字节反存1

22、字符,最后为2字节为0x0000密码字符值密码长度+22字节反存1字符,最后为2字节为0x0000登录程序名称登录程序长度+22字节反存1字符,最后为2字节为0x0000登录路径值登录路径长度+22字节反存1字符,最后为2字节为0x00005 图形连接模块:在图形数据发送之前,服务器需要对此功能模块验证,验证内容是所有与图形相关的信息,包括鼠标设置、键盘输入、字体类型、画图命令格式、图形显示的各种类型。根据已破解的信息显示,RDESKTOP原来并没有正确的赋值,因为它的返回值是没有固定的,对于服务器发送来的信息没有处理,而服务器在其关于图形方面的参数设置询问没有得到正确的回答时,则以固定的服务

23、器端的参数进行设置。5-1) 连接过程说明:服务器端首先发送关于图形方面的基本参数设置,客户端应该对这些设置进行反馈。此后rdesktop的处理是顺序发送同步信息,两个控制信息包,一个输入信息包,两个字体信息包;同时顺序接收一个同步信息包,两控制信息包,一个未知信息包;但redsktop并没有对接2收的信息包进行处理。5-2)基本参数设2置信息包结构:内容字节数值(字节反存)加密层及以下XXXX层后数据长度2XX数据类型标志211 00,表示是图形信息连接确认基本通道号2ea 03,固定基本通道号2ea 03,固定(share?)未知数据1201 00ASCII信息长度2XX基本参数长度2XX

24、ASCII信息长度值+152 44 50 00,r-“RDP”,s-“MSTSC”参数信息2r-0b 00,s-0d空位230或00详细各组参数组数内容XX5-3) 详细参数信息组类别:每个类型的数据前2字节为类型,然后是长度,数据。以接收到优先作例介绍。类型值说明01r通用类型(general)02r位图类型(bitmap)03r命令(order)04位图缓存(bitmap cache)05控制(control)07活动(active)08r指针(pointer)09r共享(share)0ar颜色缓存(color cache)0c未知0dr未知0e未知10未知12r未知14r未知16r未知4

25、0未知00r未知5-3-1) 通用类型(general-01)内容字节数值(字节反存)系统主类型201 00,OS major type系统次类型203 00,OS minor type协议版本号202 00,protocol version空数据1200 00压缩类型200 00不压缩空数据221d 04更新属性200 00共享属性200 00压缩级别200 00空数据3201 015-3-2) 位图类型(bitmap-02)内容字节数值(字节反存)最佳颜色深度2协商值1颜色深度201 00 2颜色深度201 003颜色深度201 00桌面宽度2width桌面高度2height空位1200

26、00允许调整大小201 00位图压缩201 00未知数据1200 00未知数据2201 00空位2200 005-3-3) 命令(order-03)内容字节数值(字节反存)Terminal desc1160值Terminal desc2410 42 0f 00缓存X间隔201 00缓存Y间隔214 00未知数据1200 00最大命令级别201 00字体数目200 00容量标志222 00命令支持格式32另见文本容量标志2a1 06未知数据2600 00 40 42 0f 00桌面缓存大小440 42 0f 00未知数据3401 00 00 00未知数据4400 00 00 00命令支持格式说明

27、:共32个标志,只对已知标志进行说明。字节位置,0-31值含义,1代表支持,0代表不支持0Dest blt1Pat blt2Screen blt3Required for memblt8Line19Line210Rect11Desktop save13Memblt14Triblt22Polyline27Text25-3-4) 位图缓存(bitmap cache-04)内容字节数值(字节反存)未使用数据1240值Entries258 02Max cell size200 01Entries22c 01Max cell size200 04Entries206 01Max cell size200

28、 105-3-5) 控制(control-05)内容字节数值(字节反存)Control capability200 00Remote detach200 00Control interest202 00Detach interest202 005-3-6) 活动(activer-07)内容字节数值(字节反存)Help key200 00Help index key200 00Extended help key200 00Window active200 005-3-7) 指针(pointer-08)内容字节数值(字节反存)Color pointer201 00Cache size219 00未

29、知数据1219 005-3-8) 共享(share-09)内容字节数值(字节反存)基本通道号2ea 03未知数据127d e15-3-9) 颜色缓存(color cache-0a)内容字节数值(字节反存)缓存大小206 00未知数据127d e15-3-10) 未知类型-d 收到:内容字节数值(字节反存)未知数据11235 00 00 00 a1 06 00 00 40 42 0f 00未知数据21240 42 0f 00 44 e6 0a ba 93 53 19 ba未知数据31208 60 03 e1 6a 05 1a ba 4c e6 0a ba未知数据4124c a4 7d e1 08

30、 a0 7d e1 01 00 00 00未知数据51208 a4 7d e1 00 00 00 00 44 e6 0a ba未知数据61254 f2 19 ba 08 a0 7d e1 38 e6 0a ba未知数据71200 00 00 00 08 00 0a 00 01 00 19 005-3-11) 未知类型-12 收到:内容字节数值(字节反存)未知数据1201 00未知数据2200 005-3-12) 未知类型-14 收到:内容字节数值(字节反存)未知数据1202 00未知数据2200 005-3-13) 未知类型-16 收到:内容字节数值(字节反存)未知数据11201 00 00

31、00 6e 01 00 00 01 00 00 00未知数据212d0 07 40 bf 01 b0 83 bf 00 00 00 00未知数据312a4 e6 0a ba 5c db 4f 80 e6 01 00 006打印机映射连接模块:RDP协议当前提供映射5个设备,在我们破解过程中并没有区分出他们的区别,在此视为单一处理。打印机的连接在系统登录前完成,以配置操作系统信息。6-1) 连接过程说明包序号接收发送字符含义1RInDr设备初始连接通知,说明可以连接申请2SCCDr客户端连接申请3SCNDr客户端名称注册4RSPDr服务器提供的设备接口说明5RCCDr服务器设备申请确认6SCPD

32、r客户端设备提供的接口说明7SDADr客户端打印机映射申请8RdrDr服务器打印机设备映射成功确认6-2) 设备初始连接通知:内容字节数值(字节反存)层内数据长度40x0000000c标志403 00 00 00,表示控制信息ASCII信息4InDr未知数据1201 00,可能是最少个数未知数据2205 00,可能是最多个数未知数据32ff ff未知数据4ff ff6-3) 客户端连接申请:内容字节数值(字节反存)层内数据长度40x0000000c标志400 00 03 00,表示控制信息ASCII信息4CCDr未知数据1200 01,申请最少个数未知数据2200 05,申请最多个数未知数据3

33、2ff ff6-4) 客户端名称注册:内容字节数值(字节反存)层内数据长度4XX标志400 00 03 00,表示控制信息ASCII信息4CNDr未知数据1441 02或 63 00未知数据22bf 00 或 72 00未知数据3400 00 00 00 主机名长度4XX,字符2字节存储主机名长度XX6-5) 服务器提供的设备接口说明:内容字节数值(字节反存)层内数据长度4XX标志403 00 00 00,表示控制信息ASCII信息4SPDr设备个数405 00 00 00设备1标识201 00设备1信息长度228 00,从标识开始计算设备1中未知数据4内容见下表4组设备信息8每组只有标识号变

34、化,1可能表示有效0x 00 08 00 01 00 00 00设备1中未知数据:01 00 00 0002 00 00 0000 00 00 0001 00 05 00ff ff 00 0000 00 00 0003 00 00 0000 00 00 0000 00 00 006-6) 服务器设备申请确认:除标志反位存储外,其他都与6-2)中所说相同。6-7) 客户端设备提供的接口说明:除标志反位存储、ASCII信息和设备1信息中第11字节值是5之外,其他都与6-2中所说相同。6-8) 客户端打印机映射申请:内容字节数值(字节反存)层内数据长度4XX标志403 00 00 00,表示控制信息

35、ASCII信息4DADr设备个数401 00 00 00设备1标识401 00设备1句柄4设备1 ASCII信息4空位4此后数据长度4未知数据1长度4未知数据10x0a驱动打印机名长度8空位4驱动名称XX打印机名称XX6-9) 服务器打印机设备映射成功确认:内容字节数值(字节反存)层内数据长度4XX标志403 00 00 00,表示控制信息ASCII信息4drDr设备句柄401 00 00 00空位400 00 00 007 声音处理连接模块:RDP协议需要单独的虚拟通道传递关于声音的数据。为了能够在本地播放声音,需要进行声音处理模块的连接,但只有要声音回放时才开始连接。连接的内容是:客户端对

36、这些信息进行反馈,以在客户端与服务器之间确定相应的参数。7-1) 连接过程说明:服务器首先发送一系列的关于声卡的设置参数,以及声音数据的网络格式信息,客户端对本地声卡进行测试并发回可支持的设置参数;服务器得到反馈后再发送测试数据,测试成功则反馈连接成功。7-2) 声卡设置参数询问结构:内容字节数值(字节反存)层内数据长4XX标志403 00 00 00,表示控制信息声音处理标志107 表示声卡设置参数询问未知数据1100此后数据长度2XX声音数据标志407 00 00 00,表示此后是声卡参数声音音量4f0 fa 8b 00声音平衡量4E8 20 f3 77UDP端口?25a ae声卡参数组数

37、2XX未知数据21ff状态值205 00未知数据3176XX组声卡参数XX*18XX声卡参数结构:内容字节数值(字节反存)声道数21或2频率4nAvgBttesPerSec4nBlockAlign2wBitsPerSample2cbSize27-3) 声卡设置参数反馈结构:内容字节数值(字节反存)层内数据长4XX标志403 00 00 00,表示控制信息声音处理标志107 表示声卡设置参数反馈未知数据1100此后数据长度2XX声音数据标志403 00 00 00,表示此后是声卡参数反馈声音音量480 4d 80 4d声音平衡量400 00 00 00UDP端口?204 0e?声卡参数级数2XX

38、未知数据2100状态值202 00未知数据3100XX组声卡参数XX*18XX7-2) 声卡测试结构:内容字节数值(字节反存)层内数据长4XX标志403 00 00 00,表示控制信息声音处理标志106 表示声卡设置参数测试未知数据1123此后数据长度2XX声音数据标志1216 d4声音数据标志2200 04测试数据XXXX7-2) 声卡测试反馈结构:内容字节数值(字节反存)层内数据长408 00 00 00标志403 00 00 00操作标志206 00 表示接收反馈其后数据长度1204 00声音数据标志1216 d4声音数据标志2200 04五、各功能模块说明:任务标志说明:适用于所有非图

39、形通道数据。00 00 00 0001 00 00 0002 00 00 0003 00 00 0000 00 03 00传输中传输开始传输结束传输控制传输反馈1 licence身份谁模块:在加密、解密验证通过以后,服务器发送licence信息进行系统的身份认证。身份证认证的加密、解密系统也是用RSA/RC4体系,但是与网络通信中的加密、解密系统分开的。licence认证中的密钥是临时的、单独的。1-1) 连接过程说明:服务器端首先发送demand包,内容是随机数和一些系统相关的字符信息;客户端需要回复requset包,内容是随机数、空闲值、主机名、用户名;服务器再发送authreq包,内容包

40、括token值和signature值;客户端需要回复authresq包,内容包括token值、hwid值和signature值。服务器通过后会发送result包,表明licence认证通过。1-2) demand包:r内容字节数值加密层480 02 86 00Licence标志101,表示demand,licence认证要求版本14.0-02,5.x-03本层长度286 00服务器随机数32XX未知数据1402 00 05 00公司信息长度42c 00 00 00公司信息0x2c“Microsoft Corporation 0”,2字节表示1字符未知2长度408 00 00 00未知数据284

41、1 00 30 00 32 00 00 00,“A02 0x0”未知数据380d 00 04 00 01 00 00 00未知数据485c f5 00 00 01 00 00 00未知数据540e 00 0e 00网址信息0x0e“M0”,1字节表示1字符1-3) request包:s内容字节数值加密层480 00 00 00Licence标志113,表示request,licence认证要求回复版本14.0-02,5.x-03本层长度28a 00未知数据1801 00 00 00 00 00 01 ff客户端随机数32全是0值(mod+pad)长度448 00 00

42、00Modulus值64全是0值Padding值8全是0值用户标志20f 00用户名长度2XX用户名长度值1字节表示1字符,例“YYY”主机标志210 00主机名长度2XX主机名长度值1字节表示1字符,例“YYY”1-4) authreq包:r内容字节数值加密层480 02 26 00Licence标志102,表示authreq,licence认证密钥版本14.0-02,5.x-03本层长度226 00未知数据1646 53 f9 65 f1 7bToken长度20a 00Token值0x0aXX,10字节Signature值0x10XX,16字节1-5) authreq包:s内容字节数值加密

43、层480 00 00 00Licence标志115,表示authreq,licence认证密钥版本14.0-02,5.x-03本层长度23a 00标志201 00Token长度20a 00Token值0x0aXX,10字节标志201 00Hwid长度214 00Hwid值0x14XX,20字节Signature值0x10XX,16字节1-6) result包:r 不处理内容字节数值加密层480 02 10 00Licence标志1ff,表示result,licence认证密钥版本14.0-02,5.x-03本层长度210 00未知数据1407 00 00 00未知数据2402 00 00 00

44、未知数据3404 00 00 002 加密解密模块:在初始模块中对网络通信连接中所设定的加密信息提交给服务器。而RDP协议实现的加密形式是RSA/RC4。当取得初始的加密、解密密钥(在发送初始连接信息后得到的),在初始连接结束后,客户端需要发送系统登录的初始信息,用以验证客户端加密、解密 的正确性。此后经过licence认证,通过认证后,所有的加密数据都经加密解密层处理。同时,密钥需要保存,因为加密数据包需要连续的正确加密或解密才能得到正确的数据。3 图形处理模块在图形处理中,客户端将所有的事件转换为固定格式的网络数据发送到服务器,服务器将处理的结果以图片形式发回服务器。在图形处理模块内部又分

45、了较多的层次,叙述下面:3-1) 第一级层次内容字节数值层内数据长度2XX第一级类型标记217 00 代表具体数据,0000时跳过后4字节基本通道号2ea 03,固定基本通道号2ea 03,固定(share?)未知数据1201 00网络包顺序号2XX此后数据长度2XX具体数据类型1见说明数据压缩类型100 不压缩数据压缩长度200具体数据类型说明:值含义说明2图形更新27鼠标指针操作34响铃38登录信息47断开重连提示3-2) 图形更新:前2字节是更新的类型值含义说明0 画图命令1位图2调色板3同步,锁定3-2-1) 画图命令:其后是若干组画图命令内容字节数值未知数据12XX画图命令组数2XX

46、未知数据22XX每组画图命令XX说明:对于每一组命令,他们都取相应的系统状态,根据具体的情况进行处理。特别说明的是,颜色值是固定的3字节,根据深度值取相应的就可以。3-2-2) 位图:前2字节是图片的数量。其后是图片数据,取出后画图片。每一张图片的结构:内容字节数值图片水平左坐标2XX图片垂直上坐标2XX图片水平右坐标2XX图片垂直下坐标2XX图片水平点数2XX图片垂直点数2XX图片点深度值2XX图片压缩标志200 表示不压缩压缩数据长度2XX压缩数据段内容段据2-1XXXX压缩数据段内容:compress & 0x400 为真时size=压缩数据长度,其后只有数据内容字节数值未知数据12XX

47、压缩数据长度2XX行长度2XXfinal_size2XX压缩数据内容XXXX3-2-3) 调色板:用服务器传过来调色板代替系统的调色板。当256色时才有内容字节数值未知数据12XX颜色组数2一般是256,即00 001未知数据22XX调色颜色值3倍每组值3字节,分别为红绿蓝色值3-3) 鼠标指针操作内容字节数值操作类型2见说明空位2XX鼠标指针操作类型说明:值含义说明1取初始值3移动6新状态7缓存3-3-1) 鼠标指针操作取初始值处理:当是00 00时设鼠标为不可见状态。内容字节数值取初始值类型200 003-3-2) 鼠标指针操作移动处理:将鼠标移动到指定位置内容字节数值鼠标移动目标水平位置

48、2X值鼠标移动目标垂直位置2Y值3-3-3) 鼠标指针操作新状态处理:创建新状态到鼠标状态缓存,并设置状态。内容字节数值鼠标缓存号2新的鼠标状态缓存号水平位置2X值垂直位置2Y值宽度2XX高度2XX掩码长度2XX数据长度2XX掩码值掩码长度XX数据值数据长度XX3-3-4) 鼠标指针操作缓存处理:设置鼠标为系统已存的状态号的状态。内容字节数值鼠标缓存号2已存在的鼠标状态缓存号3-4) 响铃:直接系统响铃发声处理3-5) 登录信息:忽略,跳过3-6) 断开重连提示:忽略,跳过4打印数据模块RDP协议提供本地打印机映射到服务器功能。在用户通过终端连接服务器并映射本地打印机后,可在远程主机上使用本地的打印机。客户端需要将本地打印机的型号

温馨提示

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

评论

0/150

提交评论