五、各功能模块说明:
任务标志说明:适用于所有非图形通道数据。
00 00 00 00
01 00 00 00
02 00 00 00
03 00 00 00
00 00 03 00
传输中
传输开始
传输结束
传输控制
传输反馈
1 licence身份谁模块:
在加密、解密验证通过以后,服务器发送licence信息进行系统的身份认证。身份证认证的加密、解密系统也是用RSA/RC4体系,但是与网络通信中的加密、解密系统分开的。licence认证中的密钥是临时的、单独的。
1-1) 连接过程说明:服务器端首先发送demand包,内容是随机数和一些系统相关的字符信息;客户端需要回复requset包,内容是随机数、空闲值、主机名、用户名;服务器再发送authreq包,内容包括token值和signature值;客户端需要回复authresq包,内容包括token值、hwid值和signature值。服务器通过后会发送result包,表明licence认证通过。
1-2) demand包:r
内容
字节数
加密层
4
80 02 86 00
Licence标志
1
01,表示demand,licence认证要求
版本
1
4.0->02,5.x->03
本层长度
2
86 00
服务器随机数
32
XX
未知数据1
4
02 00 05 00
公司信息长度
4
2c 00 00 00
公司信息
0x2c
“Microsoft Corporation 0”,2字节表示1字符
未知2长度
4
08 00 00 00
未知数据2
8
41 00 30 00 32 00 00 00,“A02 0x0”
未知数据3
8
0d 00 04 00 01 00 00 00
未知数据4
8
5c f5 00 00  01 00 00 00
未知数据5
4
0e 00 0e 00
网址信息
0x0e
“Microsoft.com0”,1字节表示1字符
1-3) request包:s
内容
字节数
加密层
4
80 00 00 00
Licence标志
1
13,表示request,licence认证要求回复
版本
1
4.0->02,5.x->03
本层长度
2
8a 00
未知数据1
8
01 00 00 00  00 00 01 ff
客户端随机数
32
全是0值
(mod+pad)长度
4
48 00 00 00
Modulus值
64
全是0值
Padding值
8
全是0值
用户标志
2
0f 00
用户名长度
2
XX
用户名
长度值
1字节表示1字符,例“YYY”
主机标志
2
10 00
主机名长度
2
XX
主机名
长度值
1字节表示1字符,例“YYY”
1-4) authreq包:r
内容
字节数
加密层
4
80 02 26 00
Licence标志
1
02,表示authreq,licence认证密钥
版本
1
4.0->02,5.x->03
本层长度
2
26 00
未知数据1
6
46 53 f9 65 f1 7b
Token长度
2
0a 00
Token值
0x0a
XX,10字节
Signature值
0x10
XX,16字节
1-5) authreq包:s
内容
字节数
加密层
4
80 00 00 00
Licence标志
1
15,表示authreq,licence认证密钥
版本
1
4.0->02,5.x->03
本层长度
2
3a 00
标志
2
01 00
Token长度
2
0a 00
Token值
0x0a
XX,10字节
标志
2
01 00
Hwid长度
2
14 00
Hwid值
0x14
XX,20字节
Signature值
0x10
XX,16字节
1-6) result包:r 不处理
内容
字节数
加密层
4
80 02 10 00
Licence标志
1
ff,表示result,licence认证密钥
版本
1
4.0->02,5.x->03
本层长度
2
10 00
未知数据1
4
07 00 00 00
未知数据2
4
02 00 00 00
未知数据3
4
04 00 00 00
2 加密解密模块:
在初始模块中对网络通信连接中所设定的加密信息提交给服务器。而RDP协议实现的加密形式是RSA/RC4。
当取得初始的加密、解密密钥(在发送初始连接信息后得到的),在初始连接结束后,客户端需要发送系统登录的初始信息,用以验证客户端加密、解密 的正确性。此后经过licence认证,通过认证后,所有的加密数据都经加密解密层处理。同时,密钥需要保存,因为加密数据包需要连续的正确加密或解密才能得到正确的数据。
3 图形处理模块
在图形处理中,客户端将所有的事件转换为固定格式的网络数据发送到服务器,服务器将处理的结果以图片形式发回服务器。在图形处理模块内部又分了较多的层次,叙述下面:
3-1) 第一级层次
内容
字节数
层内数据长度
2
XX
第一级类型标记
2
17 00 代表具体数据,0000时跳过后4字节
基本通道号
2
ea 03,固定
基本通道号
2
ea 03,固定(share?)
未知数据1
2
01 00
网络包顺序号
2
XX
此后数据长度
2
XX
具体数据类型
1
见说明
数据压缩类型
1
00 不压缩
数据压缩长度
2
00
具体数据类型说明:
含义说明
2
图形更新
27
鼠标指针操作
34
响铃
38
登录信息
47
断开重连提示
3-2) 图形更新:前2字节是更新的类型
含义说明
0
画图命令
1
位图
2
调色板
3
同步,锁定
3-2-1) 画图命令:其后是若干组画图命令
内容
字节数
未知数据1
2
XX
画图命令组数
2
XX
未知数据2
2
XX
每组画图命令
XX
说明:对于每一组命令,他们都取相应的系统状态,根据具体的情况进行处理。特别说明的是,颜色值是固定的3字节,根据深度值取相应的就可以。
3-2-2) 位图:前2字节是图片的数量。其后是图片数据,取出后画图片。
每一张图片的结构:
内容
字节数
图片水平左坐标
2
XX
图片垂直上坐标
2
XX
图片水平右坐标
2
XX
图片垂直下坐标
2
XX
图片水平点数
2
XX
图片垂直点数
2
XX
图片点深度值
2
XX
图片压缩标志
2
00 表示不压缩
压缩数据长度
2
XX
压缩数据段内容段据2-1
XX
XX
压缩数据段内容:compress & 0x400 为真时size=压缩数据长度,其后只有数据
内容
字节数
未知数据1
2
XX
压缩数据长度
2
XX
行长度
2
XX
final_size
2
XX
压缩数据内容
XX
XX
3-2-3) 调色板:用服务器传过来调色板代替系统的调色板。当256色时才有
内容
字节数
未知数据1
2
XX
颜色组数
2
一般是256,即00 001
未知数据2
2
XX
调色颜色值
3倍
每组值3字节,分别为红绿蓝色值
3-3) 鼠标指针操作
内容
字节数
操作类型
2
见说明
空位
2
XX
鼠标指针操作类型说明:
含义说明
1
取初始值
3
移动
6
新状态
7
缓存
3-3-1) 鼠标指针操作取初始值处理:当是00 00时设鼠标为不可见状态。
内容
字节数
取初始值类型
2
00 00
3-3-2) 鼠标指针操作移动处理:将鼠标移动到指定位置
内容
字节数
鼠标移动目标水平位置
2
X值
鼠标移动目标垂直位置
2
Y值
3-3-3) 鼠标指针操作新状态处理:创建新状态到鼠标状态缓存,并设置状态。
内容
字节数
鼠标缓存号
2
新的鼠标状态缓存号
水平位置
2
X值
垂直位置
2
Y值
宽度
2
XX
高度
2
XX
掩码长度
2
XX
数据长度
2
XX
掩码值
掩码长度
XX
数据值
数据长度
XX
3-3-4) 鼠标指针操作缓存处理:设置鼠标为系统已存的状态号的状态。
内容
字节数
鼠标缓存号
2
已存在的鼠标状态缓存号
3-4) 响铃:直接系统响铃发声处理
3-5) 登录信息:忽略,跳过
3-6) 断开重连提示:忽略,跳过
4打印数据模块
RDP协议提供本地打印机映射到服务器功能。在用户通过终端连接服务器并映射本地打印机后,可在远程主机上使用本地的打印机。客户端需要将本地打印机的型号传送给服务器,只有当前的服务器含有此打印机型号驱动时,打印机才会映射成功,在通道建立之后,对于打印机映射还需要信息交互确认。
服务器把需要打印的数据发送到打印机所在的网络连接终端,通过单独的虚拟通道传送到客户端,由客户端负责打印数据的处理。在终端连接初始建立时,需要发送映射本地打印机的请求,服务器接受映射后,客户端应申请相应的虚拟通道以进行打印数据的相关操作。将要打印的数据在网络传输中,是以PRN格式存放的。在用本地映射的打印机进行打印工作时,需要对打印机进行相应的连接,打印数据以PRN的形式从服务器发送到客户端,客户端只要把他们直接输出到打印机端口即可打印。对于打印的数据及其网络协议本身的控制信息需要客户端能够正确的分离、操作。
4-1) 本地设备操作说明:设备的每一个任务操作,服务器都会发送请求,当任务操作结束时,需要客户端正确回复确认。对于设备的每一次具体任务,都需要首先创建任务,当得到确定的答复以后才可能继续任务。任务创建后执行具体的内容。设备的功能操作又分读、写和控制;对于每一种功能操作,任务数据分开始、传输中和结束三种。需要顺序传送。每一小段数据传输结束后需要回复确认。当任务结束后,需要回复确认。
4-2) 任务请求通用结构:
内容
字节数
层内数据长和标志
8
XX
任务标志
4
见说明
ASCII信息
4
IRDr
设备标识
4
01 00 00 00 ---打印机设备
设备号
4
00 00 00 00 ---创建时为空值
赋予的ID号
4
01 00 00 00
设备操作主类型
4
见说明
设备操作次类型
4
00 00 00 00 ---打印机为空值
输出操作数据长度
4
XX
输入操作数据长度
4
00 00 00 00 ---打印机为空值
请求标志
4
00 00 00 00
未知数据1
20
XX
具体操作数据
XX
XX
设备操作主类型说明:
00 00 00 00
02 00 00 00
03 00 00 00
04 00 00 00
0e 00 00 00
创建操作
结束操作
读操作
写操作
控制操作
4-3) 各请求说明:对于“传输中”任务和“传输结束”任务,在任务标志后直接是“具体操作数据”,无其他数据;对于“传输控制”任务,无“具体操作数据”。
4-4) 任务确认通用结构
内容
字节数
层内数据长和标志
8
15 00 00 00
任务标志
4
00 00 03 00
ASCII信息
4
ICDr
设备标识
4
01 00 00 00 ---打印机设备
赋予的ID号
4
01 00 00 00
操作结果
4
见说明
接收操作数据长度
4
打印机是“输出操作数据长度”
回复数据
4
00,打印机为空值
操作结果说明:
00 00 00 00
0d 00 00 00
10 00 00 c0
22 00 00 c0
操作成功
无效参数
无效设备请求
存取拒绝
5 声音回放模块
RDP协议是提供声音回放功能。声音数据通过单独的虚拟通道传送,在初始连接时需要申请声音回放模式,当服务器接受声音回放模式后,应申请相应的虚拟通道以传送声音。
为在本地播放声音,服务器会对本地的声卡设置情况和状态进行询问,当得到合适的答复后,服务器才确认声音数据能够正常回放。关于声卡的确认在终端登录前完成。
声音数据是以wave格式传送过来的,当终端在使用过程中有声音回放请求时,服务器便将声音数据以wave格式映射到网络连接中,在客户端通过声音虚拟通道正确分离声音数据后,将其直接输出到声卡,即可实现声音回放。对声卡的设置,声音数据的属性调整等都通过网络映射到本地,需要终端程序能够正确的分离、响应。
5-1) 网络实现说明:服务器将声音数据分段发送处理。当有一段声音数据需要传送时,服务器首先发送接收通知,然后是具体的声音数据,数据包中有顺序传送标志:开始,进行,结束。数据接收通知中包含声音数据的格式,标签,索引等信息。在一段数据结束时,需要接收数据处理完毕的反馈信息。
5-2) 数据接收通知结构:
内容
字节数
层内数据长
4
10 00 00 00
标志
4
03 00 00 00
操作标志
1
02 表示准备接收
声音数据网络标志
1
20
数据长度
2
本段声音数据的长度
声音数据片标记
2
XX
声音数据格式
2
09 00
声音数据段索引
1
00到ff间循环
未知数据1
1
Fe
未知数据2
2
8b 00
未知数据3
4
各不相同
5-3) 声音数据接收反馈结构:
内容
字节数
层内数据长
4
08 00 00 00
标志
4
03 00 00 00
操作标志
2
05 00 表示接收反馈
其后数据长度
2
04 00
空位
2
00 00

RDP协议详细解析(五)相关推荐

  1. RDP协议详细解析(一)

    RDP协议详细解析   一 前言 二 概述 三 同络层次 四 各连接模块说明 五 各功能模块说明 六 rdpwin结构.数据流说明 七 总结 一.前言 windows从NT开始提供终端服务,它是微软买 ...

  2. 3389 远程桌面 Mstsc RDP协议详细解析 (下)

    转载:https://lcx.cc/post/937/ 由于太长了,所以分成了两部分,这是下半部分,上半部分在这里 6-1) 连接过程说明 包序号 接收发送 字符 含义 1 R InDr 设备初始连接 ...

  3. 3389 远程桌面 Mstsc RDP协议详细解析 (上)

    转载:https://lcx.cc/post/936/ 下半部分在这里 这是前一段时间想模拟(3389 远程桌面 Mstsc.exe RDP 协议)做一个蜜罐系统,用来记录各种各样的攻击资料,甚至自己 ...

  4. RDP协议详细解析(四)

    6打印机映射连接模块: RDP协议当前提供映射5个设备,在我们破解过程中并没有区分出他们的区别,在此视为单一处理.打印机的连接在系统登录前完成,以配置操作系统信息. 6-1) 连接过程说明 包序号 接 ...

  5. RDP协议详细解析(二)

    四.各连接模块说明: 1 ISO连接模块: 在客户端与服务器的网络套接口建立之后,需要首先建立RDP协议底层连接,得到连接确认后才能正常通信.具体实现如下: 1) 连接过程说明: 初始连接时,在网络套 ...

  6. RDP协议详细解析(三)

    4 系统初始连接模块: 当通道申请各部分通过后,开始系统登录的初始连接.从此数据包开始,所以虚拟通道层以上的网络数据都需要加密,详细的加密功能实现请参见加密模块.登录的网络信息结构如下: 内容 字节数 ...

  7. 蓝牙IBEACON协议详细解析

    蓝牙IBEACON协议详细解析 先看一个不太清楚的图片,这个是nordic官方提供的解析的文档. 先看顶上的三个字节,flags length type,这三个是固定的,因为ibeacon长度是固定, ...

  8. FCoE协议详细解析

    详细解析FCoE协议 FCoE标准是博科首先提出来的.FCoE是由包括Brocade.IBM, HP,EMC, NetApp, Cisco, Emulex, Broadcom, Intel, Nuov ...

  9. DHCP协议详细解析

    一.DHCP定义 DHCP(动态主机配置协议):是一个应用层的网络协议.指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码.当我们将客户主机ip地址设置 ...

最新文章

  1. 2020年度中国生命科学十大进展公布 | 中国科协生命科学学会联合体
  2. 开发日记-20190711 关键词 Perl的后续学习
  3. MutationObserver 监听DOM树变化
  4. docker container DNS配置介绍和源码分析
  5. I.MX6 dhcpcd 需要指定网卡
  6. 2019 年 DevOps 实践中最有价值的8大技能
  7. ubuntu20.04下开发海康威视网络摄像头sdk(一)运行示例程序
  8. 小学生 计算机编程 教程,小学生C++创意编程(视频教学版)
  9. 软件工程师的核心竞争力是什么
  10. 未来中国最热门的十大职业
  11. 计算机内存不足 c盘快满了怎么办,电脑C盘内存快满了怎么清理垃圾
  12. RocketChip
  13. 不安分的程序员!阿里90后员工做了个随时FreeStyle的人工智能
  14. ai人工智能_对人工智能的追求
  15. 教你如何下载在线视频
  16. 判断两个无环单向链表/有环单向链表是否相交,并返回相交节点
  17. 贝叶斯估计、最大似然估计、最大后验概率估计的区别
  18. macos系统里面,蓝牙鼠标偶尔卡顿,飘的问题
  19. axiom OMElement.setText()转义问题
  20. 【TypeScript】TS类型守卫(六)

热门文章

  1. Gym 102091L Largest Allowed Area 【二分+二维前缀和】
  2. [USACO17FEB] Why Did the Cow Cross the Road I P (树状数组求逆序对 易错题)
  3. 51nod--1212 最小生成树
  4. jsonArray:JavaBean,List,Map转成json格式(轉+整理)
  5. 像msn那样的message提示
  6. 【python】python程序的输入输出以及标识符详细解读
  7. [hbase]Hbase 在HDFS上的目录树结构
  8. 软件测试系统学习流程和常见面试题
  9. 靠谱测试人员需具备业务分析能力
  10. nmon Analyser分析仪