6打印机映射连接模块:
RDP协议当前提供映射5个设备,在我们破解过程中并没有区分出他们的区别,在此视为单一处理。打印机的连接在系统登录前完成,以配置操作系统信息。
6-1) 连接过程说明
包序号
|
接收发送
|
字符
|
含义
|
1
|
R
|
InDr
|
设备初始连接通知,说明可以连接申请
|
2
|
S
|
CCDr
|
客户端连接申请
|
3
|
S
|
CNDr
|
客户端名称注册
|
4
|
R
|
SPDr
|
服务器提供的设备接口说明
|
5
|
R
|
CCDr
|
服务器设备申请确认
|
6
|
S
|
CPDr
|
客户端设备提供的接口说明
|
7
|
S
|
DADr
|
客户端打印机映射申请
|
8
|
R
|
drDr
|
服务器打印机设备映射成功确认
|
6-2) 设备初始连接通知:
内容
|
字节数
|
值(字节反存)
|
层内数据长度
|
4
|
0x0000000c
|
标志
|
4
|
03 00 00 00,表示控制信息
|
ASCII信息
|
4
|
InDr
|
未知数据1
|
2
|
01 00,可能是最少个数
|
未知数据2
|
2
|
05 00,可能是最多个数
|
未知数据3
|
2
|
ff ff
|
未知数据4
|
|
ff ff
|
6-3) 客户端连接申请:
内容
|
字节数
|
值(字节反存)
|
层内数据长度
|
4
|
0x0000000c
|
标志
|
4
|
00 00 03 00,表示控制信息
|
ASCII信息
|
4
|
CCDr
|
未知数据1
|
2
|
00 01,申请最少个数
|
未知数据2
|
2
|
00 05,申请最多个数
|
未知数据3
|
2
|
ff ff
|
6-4) 客户端名称注册:
内容
|
字节数
|
值(字节反存)
|
层内数据长度
|
4
|
XX
|
标志
|
4
|
00 00 03 00,表示控制信息
|
ASCII信息
|
4
|
CNDr
|
未知数据1
|
4
|
41 02或 63 00
|
未知数据2
|
2
|
bf 00 或 72 00
|
未知数据3
|
4
|
00 00 00 00
|
主机名长度
|
4
|
XX,字符2字节存储
|
主机名
|
长度
|
XX
|
6-5) 服务器提供的设备接口说明:
内容
|
字节数
|
值(字节反存)
|
层内数据长度
|
4
|
XX
|
标志
|
4
|
03 00 00 00,表示控制信息
|
ASCII信息
|
4
|
SPDr
|
设备个数
|
4
|
05 00 00 00
|
设备1标识
|
2
|
01 00
|
设备1信息长度
|
2
|
28 00,从标识开始计算
|
设备1中未知数据
|
4
|
内容见下表
|
4组设备信息
|
8
|
每组只有标识号变化,1可能表示有效0x 00 08 00 01 00 00 00
|
设备1中未知数据:
01 00 00 00
|
02 00 00 00
|
00 00 00 00
|
01 00 05 00
|
ff ff 00 00
|
00 00 00 00
|
03 00 00 00
|
00 00 00 00
|
00 00 00 00
|
|
6-6) 服务器设备申请确认:除标志反位存储外,其他都与6-2)中所说相同。
6-7) 客户端设备提供的接口说明:除标志反位存储、ASCII信息和设备1信息中第11字节值是5之外,其他都与6-2中所说相同。
6-8) 客户端打印机映射申请:
内容
|
字节数
|
值(字节反存)
|
层内数据长度
|
4
|
XX
|
标志
|
4
|
03 00 00 00,表示控制信息
|
ASCII信息
|
4
|
DADr
|
设备个数
|
4
|
01 00 00 00
|
设备1标识
|
4
|
01 00
|
设备1句柄
|
4
|
|
设备1 ASCII信息
|
4
|
|
空位
|
4
|
|
此后数据长度
|
4
|
|
未知数据1长度
|
4
|
|
未知数据1
|
0x0a
|
|
驱动打印机名长度
|
8
|
|
空位
|
4
|
|
驱动名称
|
XX
|
|
打印机名称
|
XX
|
|
6-9) 服务器打印机设备映射成功确认:
内容
|
字节数
|
值(字节反存)
|
层内数据长度
|
4
|
XX
|
标志
|
4
|
03 00 00 00,表示控制信息
|
ASCII信息
|
4
|
drDr
|
设备句柄
|
4
|
01 00 00 00
|
空位
|
4
|
00 00 00 00
|
7 声音处理连接模块:
RDP协议需要单独的虚拟通道传递关于声音的数据。为了能够在本地播放声音,需要进行声音处理模块的连接,但只有要声音回放时才开始连接。连接的内容是:客户端对这些信息进行反馈,以在客户端与服务器之间确定相应的参数。
7-1) 连接过程说明:服务器首先发送一系列的关于声卡的设置参数,以及声音数据的网络格式信息,客户端对本地声卡进行测试并发回可支持的设置参数;服务器得到反馈后再发送测试数据,测试成功则反馈连接成功。
7-2) 声卡设置参数询问结构:
内容
|
字节数
|
值(字节反存)
|
层内数据长
|
4
|
XX
|
标志
|
4
|
03 00 00 00,表示控制信息
|
声音处理标志
|
1
|
07 表示声卡设置参数询问
|
未知数据1
|
1
|
00
|
此后数据长度
|
2
|
XX
|
声音数据标志
|
4
|
07 00 00 00,表示此后是声卡参数
|
声音音量
|
4
|
f0 fa 8b 00
|
声音平衡量
|
4
|
E8 20 f3 77
|
UDP端口?
|
2
|
5a ae
|
声卡参数组数
|
2
|
XX
|
未知数据2
|
1
|
ff
|
状态值
|
2
|
05 00
|
未知数据3
|
1
|
76
|
XX组声卡参数
|
XX*18
|
XX
|
声卡参数结构:
内容
|
字节数
|
值(字节反存)
|
声道数
|
2
|
1或2
|
频率
|
4
|
|
nAvgBttesPerSec
|
4
|
|
nBlockAlign
|
2
|
|
wBitsPerSample
|
2
|
|
cbSize
|
2
|
|
7-3) 声卡设置参数反馈结构:
内容
|
字节数
|
值(字节反存)
|
层内数据长
|
4
|
XX
|
标志
|
4
|
03 00 00 00,表示控制信息
|
声音处理标志
|
1
|
07 表示声卡设置参数反馈
|
未知数据1
|
1
|
00
|
此后数据长度
|
2
|
XX
|
声音数据标志
|
4
|
03 00 00 00,表示此后是声卡参数反馈
|
声音音量
|
4
|
80 4d 80 4d
|
声音平衡量
|
4
|
00 00 00 00
|
UDP端口?
|
2
|
04 0e?
|
声卡参数级数
|
2
|
XX
|
未知数据2
|
1
|
00
|
状态值
|
2
|
02 00
|
未知数据3
|
1
|
00
|
XX组声卡参数
|
XX*18
|
XX
|
7-2) 声卡测试结构:
内容
|
字节数
|
值(字节反存)
|
层内数据长
|
4
|
XX
|
标志
|
4
|
03 00 00 00,表示控制信息
|
声音处理标志
|
1
|
06 表示声卡设置参数测试
|
未知数据1
|
1
|
23
|
此后数据长度
|
2
|
XX
|
声音数据标志1
|
2
|
16 d4
|
声音数据标志2
|
2
|
00 04
|
测试数据
|
XX
|
XX
|
7-2) 声卡测试反馈结构:
内容
|
字节数
|
值(字节反存)
|
层内数据长
|
4
|
08 00 00 00
|
标志
|
4
|
03 00 00 00
|
操作标志
|
2
|
06 00 表示接收反馈
|
其后数据长度1
|
2
|
04 00
|
声音数据标志1
|
2
|
16 d4
|
声音数据标志2
|
2
|
00 04
|
此博文原地址为:http://blog.chinaunix.net/u/2244/showart_2154208.html
分享到:
相关推荐
### RDP协议详细解析 #### 一、前言 RDP(Remote Desktop Protocol)协议是微软为Windows系统设计的一种远程桌面通信协议,旨在提供一种安全的远程访问方式,让用户能够远程控制服务器或另一台计算机。从Windows ...
本文将详细解析文档中的关键知识点,包括RDP协议的背景介绍、更新内容以及这些变化的原因。 #### 二、RDP协议简介 RDP协议是一种面向连接的数据传输协议,旨在提供一种可靠的端到端数据传输服务。它通过一系列机制...
**二、RDP协议结构解析** #### 1. TPKT层(Transport Layer Protocol) RDP协议在其传输过程中采用了TPKT(Transport Layer Protocol)作为其传输层协议之一。TPKT是一种用于定义网络传输层协议的数据包格式,主要...
### RDP协议官方文档知识点解析 #### 一、概述 **RDP协议(Remote Desktop Protocol)** 是由微软开发的一种专用于远程桌面连接的技术标准。它允许用户通过网络连接到另一台计算机上,并以图形界面的方式操作这台...
### NC环境中的RDP协议解析 #### 一、NC环境基础介绍 ##### 1.1 基本概念与工作原理 网络计算机(Network Computer,简称NC),是一种依赖网络提供大部分资源来运行的终端计算机。它摒弃了传统PC中的硬盘、软盘...
开源项目FreeRDP是实现RDP协议的一个重要实现,它提供了一个跨平台的远程桌面客户端,支持多种操作系统,包括Windows、Linux、macOS等。 FreeRDP源码解析: 1. **项目结构**: FreeRDP的源码结构通常包含多个模块...
结合提供的文档,"RDP解析"可能详细讲解了上述各部分的工作原理和交互流程。通过阅读这些文档,你可以深入了解RDP如何处理数据包,如何进行安全通信,以及如何优化远程桌面体验。虽然RDP协议分析可能涉及的技术细节...
RDP协议支持多种可选通道,如剪贴板、音频、打印等。在FreeRDP中,这些通道由独立的模块实现,每个模块负责特定的功能。在连接过程中,客户端会根据配置决定哪些通道需要开启,并调用相应的初始化函数来建立这些...
1. RDP协议:FreeRDP实现了微软的远程桌面协议,这是一种用于远程桌面访问的标准,支持多种功能,如音频播放、打印、文件传输等。RDP协议在不断演进,FreeRDP需要跟进行业标准,确保与最新版本的服务器兼容。 2. ...
FreeRDP支持RDP协议的安全层,包括TLS和NLA(网络级身份验证)。这些安全措施确保了数据传输的隐私和完整性。 ### 8. 多平台支持 FreeRDP的跨平台特性使其成为移动设备和嵌入式系统的理想选择。例如,可以在...
RDP协议由多个子组件组成,如输入、输出、会话管理等,这些都可能在这个文件中找到。 4. **orders.c**:RDP订单(Orders)是RDP中用于描述图形操作的一种编码方式,比如绘制文本、线条、矩形等。这个文件应该实现了...
另一方面,没有安全的开源RDP协议实现。 最后,我想构建一个高度安全,跨平台和高度可定制的客户端。 安装 要将rdp-rs用作项目中的库,请将以下内容添加到Cargo.toml : [dependencies] rdp-rs = "0.1.0" 您可以...
1. **协议理解与解析**:深入理解RDP协议的工作原理是开发的基础。这包括但不限于如何建立连接、数据传输方式等。 2. **安全机制**:RDP框架的安全性至关重要。开发过程中需要考虑加密算法的选择、认证机制的设计等...
在C++和C#中实现RDP客户端功能涉及多个关键知识点,包括网络通信、协议解析和图形界面设计。 1. **网络通信基础**:RDP客户端首先需要与远程服务器建立TCP连接。这涉及到套接字编程,理解TCP/IP协议栈的工作原理,...
RDP(Remote Desktop Protocol)是微软提供的一种远程桌面连接协议,允许用户通过网络访问和控制远程计算机。在处理RDP文件时,有时我们需要在其中设置密码以便安全地进行远程访问。RDP文件实际上是一个文本文件,...
3. **协议解析**:RDP协议有自己的数据结构和报文格式,源码会展示如何解析和构建这些报文,以便正确地与远程桌面服务进行交互。 4. **事件驱动编程**:易语言支持事件驱动编程模型,源码中可能包含事件的定义和...
3. **RDP协议**:理解RDP的工作原理,包括连接流程、认证机制以及.RDP文件的结构和配置选项。 4. **文件操作**:在VC++中读写文件,特别是.RDP文件,需要知道如何解析和编辑这些文件的格式。 5. **安全性**:确保...
同时,它还处理用户的输入事件,如键盘、鼠标操作,将这些事件编码成RDP协议数据包,然后发送回远程服务器。 在源码中,开发者可以找到以下关键模块: 1. 连接管理:建立和维护RDP连接,包括身份验证、会话初始化...
对于非开发者的用户信息,如果是在寻找关于Remote Desktop连接的常见问题解答,可以参考微软提供的“Remote Desktop Connection: frequently asked questions”文档,这将提供更面向用户的指导。 总的来说,RDS和...
综上所述,基于Linux的RDP客户端设计是一个综合性的技术挑战,涉及到网络协议、系统编程、跨平台兼容性以及协议解析等多个领域的知识。这样的项目不仅有助于扩展Linux的功能,也为研究和改进RDP协议提供了实验平台。