本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及數(shù)據(jù)采集審計(jì)領(lǐng)域。
背景技術(shù):
遠(yuǎn)程桌面協(xié)議(The Remote Desktop Protocol,簡稱RDP)是一個(gè)多通道(multi-channel)協(xié)議,可以讓用戶PC機(jī)連接控制另一臺Windows操作系統(tǒng)的電腦。RDP支持虛擬通道來連續(xù)傳送客戶端與服務(wù)器之間數(shù)據(jù)交流,例如來自服務(wù)器的顯示數(shù)據(jù),以及加密了的客戶端的鼠標(biāo)、鍵盤數(shù)據(jù)。以RDP協(xié)議為基礎(chǔ)的遠(yuǎn)程桌面可以讓用戶可靠地使用遠(yuǎn)程計(jì)算機(jī)上的所有應(yīng)用程序、文件和網(wǎng)絡(luò)資源,而無需執(zhí)行本地程序。
目前對于RDP協(xié)議的研究只能基于RDP協(xié)議前身相關(guān)的技術(shù)文檔或是分析已有的rdesktop源代碼得到初步的資料,再使用反向工程的分析方法,通過獲取Windows終端啟動(dòng)和正常工作時(shí)的通訊數(shù)據(jù)包的明文來分析。該協(xié)議于2009年3月正式提供文檔說明,為RDP協(xié)議分析提供了方便。
隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)安全問題也越來越多,而完備的審計(jì)系統(tǒng)是解決當(dāng)前網(wǎng)絡(luò)安全問題的重要因素。審計(jì)系統(tǒng)可以通過分析日志,及時(shí)發(fā)現(xiàn)網(wǎng)絡(luò)系統(tǒng)、應(yīng)用系統(tǒng)中的非法用戶、非法訪問、異常操作、異常狀態(tài)等安全信息,及時(shí)發(fā)現(xiàn)敏感信息的泄密軌跡,還原信息泄密的歷史過程,追責(zé)定位,提高各種管理系統(tǒng)的安全水平。
現(xiàn)有技術(shù)是對接收到的所有RDP數(shù)據(jù)都進(jìn)行分析,而RDP數(shù)據(jù)在一次傳輸過程中可能會(huì)傳輸多個(gè)數(shù)據(jù)報(bào)文或者僅傳輸數(shù)據(jù)報(bào)文的一部分,這樣直接地對接收到的數(shù)據(jù)報(bào)文進(jìn)行分析將會(huì)導(dǎo)致提取錯(cuò)誤信息。同時(shí),對大量數(shù)據(jù)進(jìn)行分析所需時(shí)間過長,生成日志時(shí)間過慢。由此導(dǎo)致審計(jì)系統(tǒng)在對生成的 日志進(jìn)行數(shù)據(jù)分析時(shí),無法快速準(zhǔn)確地獲取到用戶登陸及操作信息,進(jìn)而無法快速準(zhǔn)確地幫助審計(jì)部門完成數(shù)據(jù)分析和定位。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種解決以上問題的RDP明文數(shù)據(jù)解析方法及裝置。
在第一方面,本發(fā)明提供了一種RDP明文數(shù)據(jù)解析方法。該方法首先獲取一條完整的RDP明文數(shù)據(jù)報(bào)文。然后判定該完整RDP明文數(shù)據(jù)報(bào)文的類型。最后對不同類型的RDP明文數(shù)據(jù)報(bào)文進(jìn)行差異化處理,提取客戶端與服務(wù)端之間的交互信息。
優(yōu)選地,本發(fā)明還包括將上述交互信息封裝到固定格式日志中的步驟。
優(yōu)選地,本發(fā)明通過對接收到的RDP明文數(shù)據(jù)進(jìn)行拆分和/或拼接的方式來獲取一條完整的RDP明文數(shù)據(jù)報(bào)文。
優(yōu)選地,上述獲取一條完整的RDP明文數(shù)據(jù)報(bào)文的步驟包括:接收RDP明文數(shù)據(jù)信息,并與緩存數(shù)據(jù)形成新數(shù)據(jù)報(bào)文;其中,該RDP明文數(shù)據(jù)信息包括RDP明文數(shù)據(jù)長度、傳輸方向、RDP數(shù)據(jù)內(nèi)容;判定該新數(shù)據(jù)報(bào)文的封裝類型;其中,該封裝類型包括未知封裝、RDP4封裝、RDP5封裝;對不同封裝類型的數(shù)據(jù)報(bào)文采用不同處理方式,得到相應(yīng)的完整RDP數(shù)據(jù)報(bào)文長度;判斷所述RDP明文數(shù)據(jù)報(bào)文長度是否大于等于所述完整RDP數(shù)據(jù)報(bào)文長度,若大于等于,則通過該新數(shù)據(jù)報(bào)文中得到一條完整RDP明文數(shù)據(jù)報(bào)文。
優(yōu)選地,根據(jù)上述新數(shù)據(jù)報(bào)文的首字節(jié),來判定該新數(shù)據(jù)報(bào)文是否為RDP4封裝或RPD5封裝。若所述新數(shù)據(jù)報(bào)文的首字節(jié)為03,則該新數(shù)據(jù)報(bào)文封裝為RDP4封裝。若所述新數(shù)據(jù)報(bào)文首字節(jié)的最后兩位為00,則該新數(shù)據(jù)報(bào)文封裝為RDP5封裝。
優(yōu)選地,上述判定完整RDP明文數(shù)據(jù)報(bào)文類型的步驟包括:判定該完整RDP明文數(shù)據(jù)報(bào)文為RDP4數(shù)據(jù)報(bào)文;判斷該RDP4明文數(shù)據(jù)報(bào)文是否為連接認(rèn)證階段數(shù)據(jù)報(bào)文;如果是連接認(rèn)證階段數(shù)據(jù)報(bào)文,則提取該連接認(rèn)證階段數(shù) 據(jù)報(bào)文的MCS層初始化連接數(shù)據(jù)單元以及MCS層連接確認(rèn)數(shù)據(jù)單元的通道號與通道名稱之間的對應(yīng)關(guān)系;如果不是連接認(rèn)證階段數(shù)據(jù)報(bào)文,則判斷該RDP數(shù)據(jù)報(bào)文的MCS層通道號是否為虛擬通道對應(yīng)的通道號;如果該MCS層通道號是虛擬通道對應(yīng)的通道號,則該RDP明文數(shù)據(jù)類型為通道格式類型數(shù)據(jù)報(bào)文,將該通道格式數(shù)據(jù)報(bào)文去頭部再封裝,進(jìn)行信息提?。蝗绻揗CS層通道號不是虛擬通道對應(yīng)的通道號,則提取客戶端登陸注冊數(shù)據(jù)單元以及字段為功能數(shù)據(jù)單元的數(shù)據(jù)單元類型中的信息。
優(yōu)選地,上述判定完整RDP明文數(shù)據(jù)報(bào)文類型的步驟包括:判斷上述完整RDP明文數(shù)據(jù)報(bào)文是否為RDP5報(bào)文;若確認(rèn)該RDP明文數(shù)據(jù)報(bào)文為RDP5報(bào)文,則將該RDP5報(bào)文去除頭部再封裝,進(jìn)行信息提取。
在第二方面,本發(fā)明提供了一種RDP明文數(shù)據(jù)解析裝置。該裝置包括RDP完整數(shù)據(jù)獲取模塊、RDP數(shù)據(jù)類型判定模塊、交互數(shù)據(jù)提取模塊。該RDP完整數(shù)據(jù)獲取模塊用于獲取一條完整的RDP明文數(shù)據(jù)報(bào)文。該RDP數(shù)據(jù)類型判定模塊用于判定該完整RDP明文數(shù)據(jù)報(bào)文的類型。該交互數(shù)據(jù)提取模塊用于對不同類型的RDP明文數(shù)據(jù)報(bào)文進(jìn)行差異化處理,以提取客戶端與服務(wù)端之間交互信息。
本發(fā)明通過對RDP數(shù)據(jù)進(jìn)行拆分與拼接的操作,保證了每次處理一條完整的RDP數(shù)據(jù)報(bào)文,進(jìn)而使審計(jì)系統(tǒng)獲取到準(zhǔn)確的日志信息。同時(shí),由于本發(fā)明在RDP解析過程中,過濾掉了一些不需要進(jìn)行信息提取的數(shù)據(jù)包,節(jié)省了RDP解析時(shí)間,更快地生成日志,提高了用戶體驗(yàn)。
附圖說明
圖1為本發(fā)明一個(gè)實(shí)施例的解析RDP明文數(shù)據(jù)及日志封裝方法流程圖;
圖2為本發(fā)明一個(gè)實(shí)施例的獲取完整RDP明文數(shù)據(jù)報(bào)文流程圖;
圖3為本發(fā)明一個(gè)實(shí)施例的判斷RDP明文數(shù)據(jù)報(bào)文格式類型的流程圖;
圖4為本發(fā)明一個(gè)實(shí)施例的解析RDP明文數(shù)據(jù)及日志封裝系統(tǒng)框圖。
具體實(shí)施方式
下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
圖1為本發(fā)明一個(gè)實(shí)施例的解析RDP明文數(shù)據(jù)及日志封裝方法流程圖。
在步驟S101,對輸入的RDP明文數(shù)據(jù)進(jìn)行處理,以獲取一條完整的RDP明文數(shù)據(jù)報(bào)文。
一個(gè)例子中,對輸入的RDP明文數(shù)據(jù)進(jìn)行拆分和/或拼接,以獲取一條完整的RDP明文數(shù)據(jù)報(bào)文,便于解析。
在步驟S102,判定該完整RDP明文數(shù)據(jù)報(bào)文的類型,依據(jù)該類型過濾不需要進(jìn)行信息提取的RDP明文數(shù)據(jù)報(bào)文。
具體地,RDP明文數(shù)據(jù)報(bào)文類型包括RDP5格式數(shù)據(jù)報(bào)文類型、RDP4格式數(shù)據(jù)報(bào)文類型;其中,RDP4格式數(shù)據(jù)報(bào)文包括連接認(rèn)證階段數(shù)據(jù)報(bào)文及非連接認(rèn)證階段的RDP4數(shù)據(jù)報(bào)文,而該非連接認(rèn)證階段的RDP4數(shù)據(jù)報(bào)文包括Channel格式數(shù)據(jù)報(bào)文(通道格式數(shù)據(jù)報(bào)文)、非Channel格式的RDP4數(shù)據(jù)報(bào)文(非通道格式的RDP4數(shù)據(jù)報(bào)文)。
需要提取信息的RDP數(shù)據(jù)報(bào)文包括:RDP5數(shù)據(jù)報(bào)文、連接認(rèn)證階段數(shù)據(jù)報(bào)文中的MCS Connect Init ial PDU(MCS層初始化連接數(shù)據(jù)單元)和MCS Connect Response PDU(MCS層連接確認(rèn)數(shù)據(jù)單元)、Channel格式數(shù)據(jù)報(bào)文、非Channel格式RDP4數(shù)據(jù)報(bào)文中的Cl ient Info PDU(客戶端登陸注冊數(shù)據(jù)單元)和字段為DATA PDU(功能數(shù)據(jù)單元)的PDU type(數(shù)據(jù)單元類型)。
在步驟S103,對不同類型的RDP明文數(shù)據(jù)報(bào)文進(jìn)行差異化處理,以提取客戶端與服務(wù)端之間交互的功能數(shù)據(jù)。
具體地,上述需要提取的功能數(shù)據(jù)包括:登錄信息、鼠標(biāo)鍵盤等操作的輸入數(shù)據(jù)、圖形界面等輸出數(shù)據(jù)、虛擬通道傳輸?shù)拇蛴C(jī)數(shù)據(jù)、剪貼板內(nèi)容數(shù)據(jù)、聲音數(shù)據(jù)等。
在本發(fā)明的一個(gè)優(yōu)選實(shí)施例中,包括步驟S104,即將上述步驟S103提取到的功能數(shù)據(jù)封裝到固定格式的日志中。
在本發(fā)明的一個(gè)實(shí)施例中,上述固定格式的日志內(nèi)容包括:單字節(jié)(即1字節(jié))的日志標(biāo)識起始位,多字節(jié)(如4字節(jié))的日志長度,多字節(jié)(n字節(jié))的數(shù)據(jù),單字節(jié)(即1字節(jié))的日志標(biāo)識結(jié)束位。較佳地,上述n字節(jié)的數(shù)據(jù)包括:30字節(jié)的登陸時(shí)間、2字節(jié)的源端口、2字節(jié)的目的端口、4字節(jié)的源IP、變量數(shù)據(jù)ID、變量會(huì)話ID、8字節(jié)的數(shù)據(jù)詳細(xì)類型、變量域名、變量登陸名、變量登陸密碼、變量提取的數(shù)據(jù)類型、變量提取的數(shù)據(jù),如下表1所示:
表1
較佳地,上述一條日志所包含的信息包括一次或多次客戶端的請求以及該請求所對應(yīng)的服務(wù)端響應(yīng);其中,該請求與響應(yīng)之間的對應(yīng)是根據(jù)本次請求開始到下次請求之前的所有請求與響應(yīng)之間的對應(yīng)。
圖2是本發(fā)明一個(gè)實(shí)施例的獲取完整RDP明文數(shù)據(jù)報(bào)文流程圖。
在步驟S201,判斷是否有RDP明文數(shù)據(jù)信息輸入,若有則轉(zhuǎn)到步驟S202,否則流程結(jié)束。
具體地,上述輸入的RDP明文數(shù)據(jù)信息包括RDP明文數(shù)據(jù)長度、傳輸方向(是客戶端到服務(wù)端還是服務(wù)端到客戶端)以及RDP明文數(shù)據(jù)內(nèi)容。
在步驟S202,接收上述RDP明文數(shù)據(jù)信息,并與緩存數(shù)據(jù)形成新的數(shù)據(jù)報(bào)文。
在步驟S203,判定上述新數(shù)據(jù)報(bào)文(即當(dāng)前數(shù)據(jù)報(bào)文)的封裝類型,若未知該當(dāng)前數(shù)據(jù)的封裝類型,則轉(zhuǎn)到步驟S204;若已知該當(dāng)前數(shù)據(jù)的封裝類型,且其封裝類型為RDP4封裝,則轉(zhuǎn)到步驟S205;若已知該當(dāng)前數(shù)據(jù)的封裝 類型,且其封裝類型為RDP5封裝,則轉(zhuǎn)到步驟S210。
需要說明的是,初始數(shù)據(jù)報(bào)文封裝類型為未知封裝類型。
具體地,設(shè)置一個(gè)變量flag,flag表示當(dāng)前數(shù)據(jù)報(bào)文封裝類型標(biāo)志;若flag=0,表示未知當(dāng)前數(shù)據(jù)報(bào)文封裝類型;若flag=1,表示當(dāng)前數(shù)據(jù)報(bào)文封裝類型為RDP4封裝;若flag=2,表示當(dāng)前數(shù)據(jù)報(bào)文封裝類型為RDP5封裝;flag初始值為0。
在步驟S204,根據(jù)當(dāng)前數(shù)據(jù)的首字節(jié),判斷其是RDP4封裝或是RDP5封裝,然后轉(zhuǎn)到步驟S203。
具體地,若當(dāng)前數(shù)據(jù)的首字節(jié)為03,則該當(dāng)前數(shù)據(jù)封裝為RDP4封裝,且其封裝格式為TCP層、ISO層、MCS層、SEC層、RDP層;若當(dāng)前數(shù)據(jù)首字節(jié)的最后兩位為00,則該當(dāng)前數(shù)據(jù)封裝為RDP5封裝,且其封裝格式為TCP層、SEC層和RDP5層。
在步驟S205,判斷該當(dāng)前數(shù)據(jù)(封裝類型為RDP4封裝)長度是否大于等于4字節(jié),若大于等于4字節(jié)則轉(zhuǎn)到步驟S206,否則轉(zhuǎn)到步驟S201;其中,該當(dāng)前數(shù)據(jù)長度信息由步驟S202得到。
需要說明的是,在RDP4格式封裝中,數(shù)據(jù)的前4個(gè)字節(jié)是TCP層數(shù)據(jù),且該4個(gè)字節(jié)的最后兩個(gè)字節(jié)表示一條RDP完整數(shù)據(jù)報(bào)文的長度。
在步驟S206,從該當(dāng)前數(shù)據(jù)的起始4字節(jié)中,獲取到一條完整的RDP數(shù)據(jù)報(bào)文的長度信息。
在步驟S207,判斷該當(dāng)前數(shù)據(jù)長度是否大于等于完整RDP數(shù)據(jù)報(bào)文長度,若滿足條件則轉(zhuǎn)到步驟S208,否則轉(zhuǎn)到步驟S201;其中,當(dāng)前數(shù)據(jù)長度由步驟S202得到,RDP完整數(shù)據(jù)報(bào)文長度由步驟S206得到。
在步驟S208,依據(jù)上述完整RDP數(shù)據(jù)報(bào)文長度,從該當(dāng)前數(shù)據(jù)報(bào)文中獲取到一條完整RDP數(shù)據(jù)報(bào)文,并設(shè)置f lag=0。
在步驟S209,判斷剩余數(shù)據(jù)報(bào)文長度是否大于0,若大于0,則轉(zhuǎn)到步驟S204,否則轉(zhuǎn)到步驟S201。
在步驟S210,判斷上述當(dāng)前數(shù)據(jù)長度是否大于等于3字節(jié),若大于等于3字節(jié)則轉(zhuǎn)到步驟S211,否則轉(zhuǎn)到步驟S201;其中,該當(dāng)前數(shù)據(jù)長度信息由步驟S202得到。
需要說明的是,在RDP5格式封裝中,數(shù)據(jù)的前兩個(gè)或三個(gè)字節(jié)為TCP層數(shù)據(jù);若該TCP層數(shù)據(jù)第二個(gè)字節(jié)的首位為1,則表示該RDP完整數(shù)據(jù)報(bào)文長度信息在該當(dāng)前數(shù)據(jù)的第二、第三字節(jié)中,否則表示該長度信息在該當(dāng)前數(shù)據(jù)的第二個(gè)字節(jié)中。
在步驟S211,從該當(dāng)前數(shù)據(jù)的起始3字節(jié)中,獲取到一條完整的RDP數(shù)據(jù)報(bào)文的長度信息,然后轉(zhuǎn)到步驟S207。
圖3是本發(fā)明一個(gè)實(shí)施例的判斷RDP明文數(shù)據(jù)報(bào)文格式類型的流程圖。
在步驟S301,判斷是否有完整的RDP明文數(shù)據(jù)報(bào)文輸入,若有則轉(zhuǎn)到步驟S302,否則流程結(jié)束。
較佳地,上述是否有完整RDP明文數(shù)據(jù)報(bào)文輸入的判定方法可通過步驟S201至步驟S211獲得,具體參見流程圖2。
在步驟S302,判斷該完整RDP明文數(shù)據(jù)報(bào)文是否為RDP4報(bào)文,若是則轉(zhuǎn)到步驟S303,否則轉(zhuǎn)到步驟S308。
具體地,通過判斷該完整RDP明文數(shù)據(jù)報(bào)文的首字節(jié)是否為03來判斷該數(shù)據(jù)報(bào)文是否為RDP4數(shù)據(jù)報(bào)文;若該完整RDP明文數(shù)據(jù)報(bào)文首字節(jié)為03則該數(shù)據(jù)報(bào)文為RDP4數(shù)據(jù)報(bào)文,否則不是RDP4數(shù)據(jù)報(bào)文。
在步驟S303,判斷該完整RDP明文數(shù)據(jù)報(bào)文是否包含ISO層、MCS層、SEC層頭部的全部;若包含ISO層、MCS層、SEC層頭部的全部則轉(zhuǎn)到步驟S305,若僅包含ISO層、MCS層、SEC層頭部的一個(gè)或者兩個(gè)或者均不包含,則轉(zhuǎn)到步驟S304。
具體地,上述判斷完整RDP明文數(shù)據(jù)報(bào)文是否包含ISO層、MCS層、SEC層頭部的方法是,將該完整RDP數(shù)據(jù)報(bào)文與現(xiàn)有技術(shù)的RDP格式文檔進(jìn)行比較,若該完整RDP數(shù)據(jù)報(bào)文滿足現(xiàn)有RDP格式文檔中ISO層、MCS層、SEC層 頭部格式,則說明包含ISO層、MCS層、SEC層頭部的全部。
在步驟S304,確認(rèn)該完整RDP明文數(shù)據(jù)報(bào)文類型為連接認(rèn)證階段數(shù)據(jù)報(bào)文,提取該連接認(rèn)證階段數(shù)據(jù)報(bào)文中MCS Connect Initial PDU(MCS層初始化連接數(shù)據(jù)單元)的通道號和通道名稱之間的對應(yīng)關(guān)系信息,以及提取該連接認(rèn)證階段數(shù)據(jù)報(bào)文中MCS Connect Response PDU(MCS層連接確認(rèn)數(shù)據(jù)單元)的通道號和通道名稱之間的對應(yīng)關(guān)系信息,然后轉(zhuǎn)到步驟S301。
需要說明的是,MCS通道號主要有虛擬通道對應(yīng)的通道號、RDP4通道號(即I/O通道號);其中,RDP4通道號包括用戶通道號及其他RDP4通道號,且I/O通道號、用戶通道號表示的是通道為傳輸RDP4數(shù)據(jù)報(bào)文的通道。
具體地,將上述連接認(rèn)證數(shù)據(jù)報(bào)文與現(xiàn)有的RDP格式文檔進(jìn)行比較,并從該連接認(rèn)證數(shù)據(jù)報(bào)文中得到其MCS Connect Initial PDU通道號和通道名稱之間的對應(yīng)關(guān)系,以及MCS Connect Response PDU通道號和通道名稱之間的對應(yīng)關(guān)系。
在步驟S305,判定該RDP數(shù)據(jù)報(bào)文的MCS層通道號是否為虛擬通道對應(yīng)的通道號;若該MCS層通道號為虛擬通道對應(yīng)的通道號,則轉(zhuǎn)到步驟S307;若該MCS層通道號為RDP4通道號(即I/O通道號,且該RDP4通道號包括用戶通道號及其他RDP4通道號),則轉(zhuǎn)到步驟S306。
具體地,在該完整RDP數(shù)據(jù)報(bào)文中,首先跳過4字節(jié)的TCP層數(shù)據(jù)和3字節(jié)的ISO層數(shù)據(jù),然后就是MCS層數(shù)據(jù),而該MCS層數(shù)據(jù)的第四、第五字節(jié)即為MCS層通道號。
此外,將該RDP數(shù)據(jù)報(bào)文與現(xiàn)有的RDP格式文檔進(jìn)行比較,并根據(jù)該RDP數(shù)據(jù)報(bào)文的MCS層通道號,即可判定該MCS層通道號是否為虛擬通道對應(yīng)的通道號。
在步驟S306,確認(rèn)該RDP數(shù)據(jù)報(bào)文類型為非Channel格式的RDP4數(shù)據(jù)報(bào)文;其中,Client Info PDU(客戶端登陸注冊數(shù)據(jù)單元)和字段為DATA PDU(功能數(shù)據(jù)單元)的PDU type(數(shù)據(jù)單元類型)數(shù)據(jù)報(bào)文需要進(jìn)行信息提取, 然后轉(zhuǎn)到步驟S301。
具體地,對照現(xiàn)有RDP格式文檔,并根據(jù)該RDP4數(shù)據(jù)報(bào)文的SEC層數(shù)據(jù)中加密標(biāo)志字段,來判定該RDP數(shù)據(jù)報(bào)文是否為Client Info PDU(客戶端登陸注冊數(shù)據(jù)單元)。
此外,RDP4數(shù)據(jù)報(bào)文的RDP層數(shù)據(jù)前六個(gè)頭字節(jié)中包含了PDU type(數(shù)據(jù)單元類型)字段,該P(yáng)DU type包括:DEMAND AVCTIVE PDU(要求激活數(shù)據(jù)單元)、CONFIRM ACTIVE PDU(確認(rèn)激活數(shù)據(jù)單元)、DEACTIVATE ALL PDU(解散數(shù)據(jù)單元)以及DATA PDU(功能數(shù)據(jù)單元);其中,DATA PDU是在正常會(huì)話過程中發(fā)送和接收信息,即需要獲取的信息。因此,將該RDP數(shù)據(jù)報(bào)文與現(xiàn)有RDP格式文檔進(jìn)行對照,獲取該RDP數(shù)據(jù)報(bào)文中字段為DATA PDU的PDU type信息,并將其提取出來。
在步驟S307,確認(rèn)該RDP數(shù)據(jù)報(bào)文類型為Channel格式類型數(shù)據(jù)報(bào)文,將其去除頭部后再封裝,進(jìn)行信息提取,然后轉(zhuǎn)到步驟S301。
在步驟S308,判斷該完整RDP數(shù)據(jù)報(bào)文的首字節(jié)最后兩位是否為00,如果是則轉(zhuǎn)到步驟S309,否則轉(zhuǎn)到步驟S301;此步驟是用來判斷該完整RDP數(shù)據(jù)報(bào)文是否為RDP5數(shù)據(jù)報(bào)文。
在步驟S309,確認(rèn)該RDP數(shù)據(jù)報(bào)文類型為RDP5格式數(shù)據(jù)報(bào)文,將其去除頭部后再封裝,進(jìn)行信息提取,然后轉(zhuǎn)到步驟S301。
在本發(fā)明的上述實(shí)施例中,對于不同類型的數(shù)據(jù)報(bào)文進(jìn)行的是差異化處理(即不同的處理);其中,RDP5格式數(shù)據(jù)報(bào)文、Channel格式數(shù)據(jù)報(bào)文、可直接去除頭部各層封裝獲取功能數(shù)據(jù);而非Channel格式RDP4數(shù)據(jù)報(bào)文中僅對Client Info PDU和字段為DATA PDU的PDU type的報(bào)文進(jìn)行處理,且處理時(shí)不僅需要跳過頭部各層封裝,還要去除不需要提取的字段。此外,在Client Info PDU數(shù)據(jù)報(bào)文中可獲取用戶相關(guān)登錄信息的緩存信息;RDP5數(shù)據(jù)報(bào)文和PDU type字段為DATA PDU的數(shù)據(jù)報(bào)文可獲取到客戶端鼠標(biāo)鍵盤操作信息和服務(wù)端返回的圖形界面數(shù)據(jù)等信息;Channel格式數(shù)據(jù)報(bào)文可獲取到 傳輸?shù)拇蛴C(jī)設(shè)備數(shù)據(jù)、剪貼板數(shù)據(jù)、聲音數(shù)據(jù)等。
圖4是本發(fā)明一個(gè)實(shí)施例的解析RDP明文數(shù)據(jù)及日志封裝系統(tǒng)框圖。在該系統(tǒng)中,客戶端410與服務(wù)端420進(jìn)行信息交互,且該交互信息是以RDP明文數(shù)據(jù)形式存在;RDP解析模塊430用于獲取該RDP明文數(shù)據(jù),并對該明文數(shù)據(jù)進(jìn)行解析,以得到客戶端410與服務(wù)端420之間交互的功能數(shù)據(jù)。
該RDP解析模塊430包括RDP完整數(shù)據(jù)獲取模塊431、RDP數(shù)據(jù)類型判定模塊432、交互數(shù)據(jù)提取模塊433;較佳地,該RDP解析模塊430還包括封裝模塊434。
該RDP完整數(shù)據(jù)獲取模塊431用于對輸入的RDP數(shù)據(jù)進(jìn)行處理,以獲取一條完整的RDP數(shù)據(jù)報(bào)文。
該RDP數(shù)據(jù)類型判定模塊432用于判定該完整RDP數(shù)據(jù)報(bào)文的類型,并依據(jù)該類型過濾不需要進(jìn)行信息提取的RDP數(shù)據(jù)報(bào)文。
該交互數(shù)據(jù)提取模塊433用于對不同類型的RDP數(shù)據(jù)報(bào)文進(jìn)行差異化處理,以提取客戶端與服務(wù)端之間交互的功能數(shù)據(jù)。
該封裝模塊434用于將上述提取到的功能數(shù)據(jù)封裝到固定格式的日志中。
最后所應(yīng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的精神和范圍。