当前位置:文档之家› RDP协议详细解析.docx

RDP协议详细解析.docx

RDP 协议详细解析(一)

RDP 协议详细解析

一前言

二概述

三同络层次

四各连接模块说明

五各功能模块说明

六rdpwin 结构、数据流说明

七总结

一、前言

windows 从 NT 开始提供终端服务,它是微软买来的网络协议技术(Citrix),服务器端要安装、配置,客户端要连接程序。终端服务使任何一台有权限的终端机,用已知的账号登录服

务器,可以使用账号内的资源,包括软件,硬件资源;同时,在协议升级后,客户端连接后可

以使用本地的资源,包括本地打印机、声音本地回放,本地磁盘资源和本地硬件接口。

所有的计算都在服务器端进行,客户端只需要处理网络连接、接收数据、界面显示和设备数据输出。

目前,关于RDP服务的 linux 客户端程序有winconnect ,linrdp , rdesktop ,前两个没有源码,但 redsktop 已经由原来的个人开发后公开代码演变成现在的项目组开发。由于项目

的跨平台开发需要,我们在开始时进行过单独的协议破解工作,破解后,我们的程序在原来的基础上扩展到,实现了 16 位颜色,声音本地回放,映射本地打印机。对于当前的终端机,这些功能完全满足需要,因此其他功能暂不便破解实现。为防患RDP协议的升级而影响我们破解而得的终端程序的功能性,需要对RDP协议的变化进行跟踪,对et-rdesktop 进行优化、完善。鉴于当前的工作安排,将跟踪redsktop 项目的进展,以提炼功能为我所用和完

善现有程序。

二、概述

1 版本功能说明:

RDP协议在终端服务推出后已有四个版本,、、、。一般来说,版本是根据windows 的版本确定的。

从客户端的角度来说,版本间提供的功能差别不是很大,相对于版本,它提供了用户带密码直接登录、客户端驱动器资源映射、客户端音频回放、最高24 位色显示和符合FIPS加密级别连接。

另外,从协议开始变提供的客户羰功能有:高、中、低三种数据加密级别,客户端自定

义初始登录环境,客户端打印机映射,客户端LPT端口映射,客户端com 端口映射,剪贴

板映射,客户登录的个性化设置(包括键盘、显示界面大小等)。

2、协议层次说明:

通过破解研究,我们掌握了 RDP协议的基本层次结构。基本上, RDP协议的每一层次上都

标示出其层内的数据长度值。

对于层次划分,主要是指RDP协议网络功能数据传送时通常都包含的各层次,而对于

各层次内所实现的单层次连接等功能将做为单独的模块来进行阐述。

网络连接层:RDP协议建立在TCP/IP 协议之上,由于传输的数据量比较大,因此在协

议的底层首先定义一层网络连接层。它定义了一个完事的RDP数据逻辑包,以避免由于网

络包长度过长而被分割使数据丢失。

ISO 数据层:在网络连接层之上是ISO 数据层,它表示RDP数据的正常连接通信。

虚拟通道层:在ISO 数据层之上, RDP 协议定义一个虚拟通道层,用以拆分标示不同虚

拟通道的数据,加快客户端处理速度,节省占用网络接口的时间。

加密解密层:在虚拟通道层之上, RDP定义一个数据加密解密层。此层用于对所有的功能

数据进行加密、解密处理。

功能数据层:在加密解密层之上是功能数据,画面信息,本地资源转换,声音数据,

打印数据等所有的功能数据信息都在此层进行处理。另外,根据数据类型的不同,这些数据都有各自不同层次的分割,他们的内部层次结构将在各个功能模块中进行阐述。

3其它说明:

本协议解析中所提到的各层次结构都是指 RDP功能数据正常传送时的各底层结构,在功能

数据传送前的各层次的建立连接过程及其结构、实现都归于模块实现来进行说明。

对于服务器端的各种设置以及个版本间的内部实现差异请看 RDP帮助文档,以及 rdpwin 开发

文档。

4连接过程说明:

1) 客户端连接服务器

2) ISO 数据层建立连接

3) 发送初始协议相关信息,接收加密、解密密钥

4) 虚拟通道申请

5) 加密形式发送客户端系统信息,同时验证加密协议

6) 平台软件证书验证

7) 各功能建立连接,各功能数据传输,功能实现

三、网络层次:

1 网络连接层:

在 RDP协议网络实现连接中,本层的数据格式是固定的。

内容协议版本号保留此逻辑包长度

字节数112值当前版本皆是 30逻辑长度,从版本号开始到本包结束

2ISO 数据层:

在 RDP功能数据网络传输中,本层的数据格式是固定的。

内容单层数据长度ISO 包类型标志

字节数111值2,从下字节开始计算0xf0 ,表示数据0x80

3虚拟通道层:

虚拟通道层用于在正常的网络连接数据之上,中个虚拟通道的功能数据。此层次的连接

另见初始连接模块与通道申请模块,在此只说明正常数据连接时的层次结构。

1)结构信息:

内容类型虚拟通道个数虚拟通道号标志字节数1221值0x64/0x680x00010x03eb 至 0x03ee0x70/0xf0

2)类型说明:

0x64:客户端发送数据

0x68:客户端接收数据

3)用户号说明:

本次连接的用户号,服务器发送的是0x0001;客户端所发送的值是初始连接时请

示通道后服务器同意开通的虚拟个数。

4)虚拟通道号说明:

虚拟通道号是本层次以上所发送的功能数据所在的虚拟通道号,其由初始连接通

道申请建立时确定。

5)标志说明:

客户端发送的标志为0x70;服务器端发送的标志,当功能数据是图像是(由通道

号识别 ),其值为0x70,当功能数据是其它数据时,其值为0xf0。

4 加密解密层:

加密解密层用于对网络连接中所发送、接收的数据进行加密、解密。为保证数据和系统

的安全性,对网络数据进行加密传输是比较常用且必然的,RDP协议在此层对实际的功能数

据进行加密。

1)结构信息:

内容单层及层上数据总长度加密标志未知标志数字签名字节数1-2228值从下字节开始计算0x08000x1000/0x0203顺序取得

2) 总长度说明:

若长度大于0x7f,则长度以两字节表示,并按位与0x8000。这是由于版本升级赞

成的格式不统一,长度不定,当前版本认为长度值不大于0x0fff(4095) 因此只用长度值并按

位与 0x8000 实现版本兼容,在版本升级后会以0x8x 表示长度值的字节数,其中8 表示非 1

字节, x 表示具体的字节个数。

3) 加密标志说明:

RDP协议要求在正常的功能连接实现之前,首先licence认证,其标志为0x8xxx,

且其后数据不同于正常功能数据传输式的加密层格式,可以视licence 认证为加密解密层的

建立连接过程。另外功能数据的加密、解密的密钥是在初始连接时获得的,而加密解密功能

的实现由加密、解密模块阐述。

4)未知标志说明:

服务器端发送过来的未知数据有两种,目前不知其意,客户端在发送数据时将其

置为 0x0000 值。

5)数字签名说明:

相关主题