rdp
協議詳細解析
一
前言 二概述
三同絡層次 四
各連線模組說明 五
各功能模組說明
六rdpwin
結構、資料流說明 七
總結 一、前言
windows
從nt開始提供終端服務,它是微軟買來的網路協議技術(citrix)
,伺服器端要安裝、配置,客戶端要連線程式。終端服務使任何一台有許可權的終端機,用已知的賬號登入伺服器,可以使用賬號內的資源,包括軟體,硬體資源;同時,在協議公升級後,客戶端連線後可以使用本地的資源,包括本地印表機、聲音本地回放,本地磁碟資源和本地硬體介面。所有的計算都在伺服器端進行,客戶端只需要處理網路連線、接收資料、介面顯示和裝置資料輸出。
目前,關於rdp
服務的linux
客戶端程式有winconnect
,linrdp
,rdesktop
,前兩個沒有原始碼,但redsktop
已經由原來的個人開發後公開**演變成現在的專案組開發。由於專案的跨平台開發需要,我們在開始時進行過單獨的協議破解工作,破解後,我們的程式在原來的rdp4.0
基礎上擴充套件到5.1
,實現了16
位顏色,聲音本地回放,
對映本地印表機。對於當前的終端機,這些功能完全滿足需要,因此其他功能暫不便破解實現。為防患rdp
協議的公升級而影響我們破解而得的終端程式的功能性,需要對rdp
協議的變化進行跟蹤,對et-rdesktop
進行優化、完善。鑑於當前的工作安排,將跟蹤redsktop
專案的進展,以提**能為我所用和完善現有程式。
二、概述 1
版本功能說明:
rdp協議在終端服務推出後已有四個版本,4.0
、5.0
、5.1
、5.2
。一般來說,版本是根據windows
的版本確定的。
從客戶端的角度來說,5.x
版本間提供的功能差別不是很大,相對於4.0
版本,它提供了使用者帶密碼直接登入、客戶端驅動器資源對映、客戶端音訊回放、最高24
位色顯示和符合fips
加密級別連線。
另外,從4.0
協議開始變提供的客戶羰功能有:高、中、低三種資料加密級別,客戶端自定義初始登入環境,客戶端印表機對映,客戶端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
協議網路實現連線中,本層的資料格式是固定的。
內容 協議版本號 保留
此邏輯包長度
位元組數 1
12值
當前版本皆是3
0邏輯長度,從版本號開始到本包結束
2 iso
資料層:
在rdp
功能資料網路傳輸中,本層的資料格式是固定的。
內容 單層資料長度
iso包型別 標誌
位元組數 11
1值 2
,從下位元組開始計算
0xf0
,表示資料
0x80
3 虛擬通道層:
虛擬通道層用於在正常的網路連線資料之上,中個虛擬通道的功能資料。此層次的連線另見初始連線模組與通道申請模組,在此只說明正常資料連線時的層次結構。
1) 結構資訊:
內容 型別
虛擬通道個數
虛擬通道號 標誌
位元組數 1
221值
0x64/0x68
0x0001
0x03eb
至0x03ee
0x70/0xf0
2) 型別說明:
0x64
:客戶端傳送資料
0x68
:客戶端接收資料
3) 使用者號說明:
本次連線的使用者號,伺服器傳送的是0x0001
;客戶端所傳送的值是初始連線時請示通道後伺服器同意開通的虛擬個數。
4) 虛擬通道號說明:
虛擬通道號是本層次以上所傳送的功能資料所在的虛擬通道號,其由初始連線通道申請建立時確定。
5) 標誌說明:
客戶端傳送的標誌為0x70
;伺服器端傳送的標誌,當功能資料是影象是(
由通道號識別)
,其值為0x70
,當功能資料是其它資料時,其值為0xf0。
4 加密解密層:
加密解密層用於對網路連線中所傳送、接收的資料進行加密、解密。為保證資料和系統的安全性,對網路資料進行加密傳輸是比較常用且必然的,rdp
協議在此層對實際的功能資料進行加密。
1) 結構資訊:
內容 單層及層上資料總長度
加密標誌
未知標誌
數字簽名
位元組數1-222
8值從下位元組開始計算
0x0800
0x1000/0x0203
順序取得
2) 總長度說明:
若長度大於0x7f
,則長度以兩位元組表示,並按位與0x8000
。這是由於版本公升級贊成的格式不統一,長度不定,當前版本認為長度值不大於0x0fff(4095)
因此只用長度值並按位與0x8000
實現版本相容,在版本公升級後會以0x8x
表示長度值的位元組數,其中8
表示非1
位元組,x
表示具體的位元組個數。
3) 加密標誌說明:
rdp協議要求在正常的功能連線實現之前,首先licence
認證,其標誌為0x8***
,且其後資料不同於正常功能資料傳輸式的加密層格式,可以視licence
認證為加密解密層的建立連線過程。另外功能資料的加密、解密的金鑰是在初始連線時獲得的,而加密解密功能的實現由加密、解密模組闡述。
4) 未知標誌說明:
伺服器端傳送過來的未知資料有兩種,目前不知其意,客戶端在傳送資料時將其置為0x0000值。
5) 數字簽名說明:
對所有的加密資料在此放置8
位元組數字簽名。其值由rc4
會話鍵值和功能資料經過sha
運算和md5
運算得到。 5
功能資料層:
功能資料是客戶端與伺服器進行互動的真正資料。他們都有各自固定格式,連線、控制方式,具體情況見各功能模組的說明。
根據當前我們所掌握的資訊,rdp
協議將影象資訊、聲音資訊、裝置資訊、剪貼簿內容都各自以單一的虛擬通道進行傳送,而印表機對映,磁碟對映,埠對映都做為裝置資訊的內容進行處理。限於當前左上角工作和專案工作的限度,裝置資訊中只考慮了印表機對映的部分,對於印表機資訊與其他的裝置相關的資訊沒有進行有效隔離區分,而本協議說明中相關的連線資訊、資料傳送都只認為是印表機對映的內容。
此博文原位址為:
rdesktop架構解析 RDP協議分析)
出自 http blog.csdn.net songbohr 本文立足於rdesktop的架構層次進行解析,算是拋磚引玉,國內對rdp協議深入解析的資料到本文發布時為空白!呼叫層次 rdp sec mcs iso tcp 協議包編譯碼層次 rdp hdr sec hdr mcs hdr iso hd...
關於RDP協議的分析(一)
關於rdp協議的分析 一 關於rdp協議的分析和研究 leadgenius 寫這個一是便於學習,再就是與們共同討論,有一些我也不確定的,只是我的理解,希望看到這篇文章的人進行指正,並給我來信謝謝。再一就是這裡只有有關4.0版本的內容,希望有高手補充5.1 5.2的協議文件。rdp是微軟終端服務應用的...
FTP協議詳細解析
ftp file transfer protocol 協議,檔案傳輸協議。提供互動式的訪問,對傳輸檔案的格式和型別有分類,允許檔案具有訪問許可權。適合異構網路任意計算機的傳送。ftp有以下基本功能 1.提供不同種類主機系統 硬,軟體體系等都可以不同 之間的檔案傳輸能力。2.以使用者許可權管理的方式提...