姚小強(qiáng),劉昌云,郭相科
空軍工程大學(xué) 防空反導(dǎo)學(xué)院,西安 710051)(*通信作者電子郵箱icemissile@sina.com)
基于數(shù)據(jù)截獲和欺騙式注入的通用記錄重演方法
姚小強(qiáng),劉昌云*,郭相科
空軍工程大學(xué) 防空反導(dǎo)學(xué)院,西安 710051)(*通信作者電子郵箱icemissile@sina.com)
針對傳統(tǒng)記錄重演方法存在同報文格式相關(guān)、需要被控程序緊密配合及數(shù)據(jù)傳輸效率低等問題,提出了一種基于數(shù)據(jù)截獲與欺騙方式實(shí)現(xiàn)的通用記錄重演解決方案。首先,利用Winsock2 服務(wù)提供者接口技術(shù),實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)的自動截獲;其次,采用內(nèi)存映射文件技術(shù)解決了數(shù)據(jù)共享和高速存取問題;最后通過向用戶程序發(fā)送偽消息激發(fā)其讀數(shù)據(jù)動作,完成數(shù)據(jù)注入。實(shí)際應(yīng)用表明,新方法避免了數(shù)據(jù)的網(wǎng)絡(luò)傳輸,無需被重演程序配合且與系統(tǒng)報文無關(guān),能夠完成10倍速度的流暢重演,普適于分布式仿真與模擬訓(xùn)練系統(tǒng)。
服務(wù)接口提供者接口;數(shù)據(jù)截獲;欺騙注入;記錄重演;內(nèi)存映射文件
數(shù)據(jù)記錄與重演技術(shù)在網(wǎng)絡(luò)安全、軟件自動化測試、模擬訓(xùn)練等領(lǐng)域具有廣泛的需求[1-3]。在模擬訓(xùn)練領(lǐng)域,記錄重演常用于分布式訓(xùn)練系統(tǒng),一般通過專用軟件和專用接口,在被重演系統(tǒng)的配合下接收和回傳網(wǎng)絡(luò)數(shù)據(jù)。由于其采用了集中式的數(shù)據(jù)收集方法,造成運(yùn)行時通信數(shù)據(jù)量巨大,特別是當(dāng)系統(tǒng)加速重演時,將不可避免地造成網(wǎng)絡(luò)丟包(使用UDP協(xié)議)或處理效率下降(使用TCP協(xié)議),從而不得不采用區(qū)分關(guān)鍵和非關(guān)鍵報文的方法進(jìn)行報文篩選,以減小數(shù)據(jù)流量[1-2]。因此,傳統(tǒng)的數(shù)據(jù)記錄與重演解決方案,存在同報文格式相關(guān)、需要被控程序緊密配合及數(shù)據(jù)傳輸效率低等問題,造成其通用性和可移植性差。
如今,網(wǎng)絡(luò)報文封包攔截方法得到了廣泛研究與應(yīng)用,可實(shí)現(xiàn)非合作應(yīng)用的報文自動截獲,甚至可實(shí)現(xiàn)過濾、修改等操作[3-7]。網(wǎng)絡(luò)封包攔截實(shí)現(xiàn)方式分為用戶級和內(nèi)核級兩類,其中內(nèi)核級主要是通過傳輸驅(qū)動程序接口(Transfer Driver Interface, TDI)和網(wǎng)絡(luò)驅(qū)動接口規(guī)范(Network Driver Interface Specification, NDIS)中間層過濾驅(qū)動程序等實(shí)現(xiàn)[4-5],而用戶級主要通過復(fù)用端口、Winpcap或者WinSock2服務(wù)提供者接口(Service Provider Interface,SPI)等實(shí)現(xiàn)。其中內(nèi)核級的方法同硬件密切相關(guān),使得其使用范圍受限,而IP復(fù)用方法、SPI方法、Winpcap方法僅能完成數(shù)據(jù)截獲而無法實(shí)現(xiàn)數(shù)據(jù)干預(yù)(過濾或注入)[6-7]。
本文在SPI技術(shù)的基礎(chǔ)上,提出了“欺騙式”的網(wǎng)絡(luò)數(shù)據(jù)注入方法,通過給被控程序發(fā)送“偽消息”,迫使被控程序產(chǎn)生讀數(shù)據(jù)請求,從而實(shí)現(xiàn)了數(shù)據(jù)的注入,采用內(nèi)存映射文件技術(shù)解決了數(shù)據(jù)共享和大數(shù)量的高速存取問題。與傳統(tǒng)方法不同,本文方法采用了分布式記錄重演解決方案,進(jìn)一步提高了數(shù)據(jù)記錄和重演的效率,并對方案進(jìn)行了實(shí)現(xiàn),驗(yàn)證了本文方法的有效性。
本文設(shè)計(jì)的分布式數(shù)據(jù)記錄重演系統(tǒng)體系結(jié)構(gòu)如圖1所示。
圖1 分布式數(shù)據(jù)記錄重演系統(tǒng)的體系結(jié)構(gòu)
系統(tǒng)由一個控制端和若干個客戶端組成,控制端程序用于協(xié)調(diào)多個客戶端的統(tǒng)一工作,客戶端程序同用戶程序直接交互,可在無需用戶程序配合的情況下,通過截獲的方法獲取網(wǎng)絡(luò)數(shù)據(jù),通過欺騙式注入的方法驅(qū)動用戶程序的重演。客戶端和控制端之間通過TCP/IP協(xié)議交互數(shù)據(jù)。
相對于傳統(tǒng)解決方法,本文系統(tǒng)具有以下明顯優(yōu)勢:
1)以分布式處理代替集中式處理,減少單個客戶端處理數(shù)據(jù)量,提高了數(shù)據(jù)的處理效率;
2)將網(wǎng)絡(luò)數(shù)據(jù)驅(qū)動改為本地化數(shù)據(jù)驅(qū)動,避免了數(shù)據(jù)的網(wǎng)絡(luò)傳輸,進(jìn)而避免丟包;
3)通過截獲和欺騙的方式實(shí)現(xiàn)重演,無需被重演程序配合,減小了同用戶程序之間的耦合度,增強(qiáng)本系統(tǒng)的可移植性。
客戶端的實(shí)現(xiàn)是本系統(tǒng)的關(guān)鍵,本文基于SPI技術(shù)設(shè)計(jì)客戶端程序,完成對用戶程序的網(wǎng)絡(luò)狀態(tài)監(jiān)控和數(shù)據(jù)截獲,基于此技術(shù)實(shí)現(xiàn)記錄和重演還需要解決以下關(guān)鍵技術(shù):
1)網(wǎng)絡(luò)數(shù)據(jù)的受控注入。雖然SPI技術(shù)可實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的截獲、過濾甚至篡改等操作[8],但從本質(zhì)上講,SPI僅是網(wǎng)絡(luò)數(shù)據(jù)傳遞鏈里的一層,無法直接利用SPI技術(shù),控制數(shù)據(jù)輸入用戶程序的時機(jī),只有當(dāng)用戶程序發(fā)起讀取請求后,才可使用SPI對其接收數(shù)據(jù)內(nèi)容進(jìn)行干預(yù)。因此,無法實(shí)現(xiàn)數(shù)據(jù)的受控注入,也就無法實(shí)現(xiàn)重演。
2)進(jìn)程數(shù)據(jù)同步和大數(shù)據(jù)處理。SPI程序以動態(tài)鏈接庫形式存在,通過向操作系統(tǒng)注冊、安裝,可以在用戶程序打開網(wǎng)絡(luò)端口時,自動被系統(tǒng)WS2_32.dll調(diào)用。雖然SPI 程序在磁盤上僅存在一份,但卻被操作系統(tǒng)加載至不同內(nèi)存空間(Win32內(nèi)存管理)。因此,在監(jiān)控多個進(jìn)程時,實(shí)質(zhì)上必須完成多個進(jìn)程間的數(shù)據(jù)共享和同步。另外,在仿真系統(tǒng)中,經(jīng)常需要記錄動輒幾GB甚至幾十GB的文件,實(shí)現(xiàn)數(shù)據(jù)的高速讀寫是必須解決的問題。
2.1 欺騙注入的原理
正常情況下,數(shù)據(jù)到達(dá)網(wǎng)卡后,由網(wǎng)卡產(chǎn)生中斷,通知操作系統(tǒng),由操作系統(tǒng)通知相應(yīng)的用戶程序數(shù)據(jù)到達(dá),用戶程序經(jīng)SPI動態(tài)鏈接庫(Dynamic Link library, DLL)獲取網(wǎng)絡(luò)數(shù)據(jù)。而在分布式記錄重演解決方案中,重演的數(shù)據(jù)來源為本地記錄文件且數(shù)據(jù)不經(jīng)過網(wǎng)絡(luò)傳輸,因而用戶程序無法獲得數(shù)據(jù)到達(dá)的通知,也就無法產(chǎn)生讀數(shù)據(jù)動作。為刺激用戶程序響應(yīng)數(shù)據(jù),采用了欺騙式注入數(shù)據(jù)的方法,其原理如圖2所示。
欺騙式數(shù)據(jù)注入即是使用SPI控制程序代替操作系統(tǒng),向用戶程序發(fā)送“偽消息”(數(shù)據(jù)到達(dá)通知),刺激用戶程序進(jìn)行讀數(shù)據(jù)調(diào)用,SPI DLL則截獲該調(diào)用,并經(jīng)由SPI控制程序獲取記錄文件數(shù)據(jù),輸入至用戶程序,從而實(shí)現(xiàn)不經(jīng)過網(wǎng)卡的欺騙式的數(shù)據(jù)注入。該方法可大大提高數(shù)據(jù)輸入效率,對于用戶程序而言,其從接收數(shù)據(jù)到達(dá)通知到讀消息的過程同正常接收網(wǎng)絡(luò)數(shù)據(jù)完全一致。
圖2 欺騙式數(shù)據(jù)注入原理
2.2 用戶程序的“偽消息”欺騙
成功欺騙用戶程序必須滿足兩個條件:
1)依據(jù)不同的網(wǎng)絡(luò)I/O模型,構(gòu)造不同的“偽消息”;
2)滿足用戶應(yīng)用的校驗(yàn)。
條件1)的解決方案:Winsock IO模型可分為Select、AsyncSelect及EventSelect三種,由用戶程序在端口(Socket)開啟時進(jìn)行指定,可由SPI DLL截獲該操作以進(jìn)行判定;此外SPI DLL還需對其中的關(guān)鍵參數(shù)進(jìn)行記錄,以正確構(gòu)造相應(yīng)“偽消息”。在AsyncSelect模型中,記錄的參數(shù)包括:接收消息的窗口句柄、消息號和Socket編號等,此模型所使用的“偽消息”即為Windows 系統(tǒng)消息,SPI控制程序獲取構(gòu)成這些消息的關(guān)鍵字段后,可通過PostMessage或SendMessage函數(shù)通知用戶程序有數(shù)據(jù)到達(dá),從而激發(fā)其數(shù)據(jù)讀取操作。
條件2)的解決方案:數(shù)據(jù)校驗(yàn)是用戶程序在獲得正確消息刺激后向SPI DLL發(fā)送讀數(shù)據(jù)請求前所采取的動作,是系統(tǒng)驗(yàn)證消息的操作,如果不能通過該驗(yàn)證,用戶程序就將中斷數(shù)據(jù)讀取。由于發(fā)送“偽消息”時,對應(yīng)的網(wǎng)絡(luò)端口很可能并不存在數(shù)據(jù),這將導(dǎo)致校驗(yàn)失敗。因此,滿足此驗(yàn)證是數(shù)據(jù)注入的前提條件??捎肧PI DLL對該驗(yàn)證操作進(jìn)行截獲,并強(qiáng)制返回用戶程序期待的結(jié)果。AsyncSelec模型中的數(shù)據(jù)校驗(yàn)是通過調(diào)用API函數(shù)select實(shí)現(xiàn),如下:
nReady=select(0,&fds,NULL, NULL, &timeout);
該函數(shù)中可對準(zhǔn)備好的端口數(shù)nReady和數(shù)據(jù)超時信息timeout進(jìn)行校驗(yàn),當(dāng)實(shí)際存在網(wǎng)絡(luò)數(shù)據(jù)時nReady應(yīng)大于或等于1,timeout應(yīng)小于一定的預(yù)設(shè)值。采用“偽消息”欺騙時,若不對該過程進(jìn)行干預(yù),nReady通常情況將返回0,這將導(dǎo)致校驗(yàn)失敗,用戶程序就會將“偽消息”作為一個錯誤信息丟棄,并不啟用實(shí)際的數(shù)據(jù)讀取過程。由SPI的原理可知,select函數(shù)將觸發(fā)SPI函數(shù)WSPSelect,因此可通過WSPSelect函數(shù)截獲該驗(yàn)證,并返回用戶程序的期待值。本例中,設(shè)置nReady為1,timeout為0即可。滿足該校驗(yàn)后,用戶程序即進(jìn)入數(shù)據(jù)獲取流程??赏ㄟ^SPI DLL中截獲WSPRecv或者WSPRecvFrom兩個函數(shù),完成欺騙式的數(shù)據(jù)注入。
2.3 欺騙式數(shù)據(jù)注入的控制
在實(shí)現(xiàn)用戶程序“偽消息”欺騙的基礎(chǔ)上,為了使數(shù)據(jù)能以嚴(yán)格的邏輯輸入用戶程序,需要進(jìn)行如下操作:
1)建立閉環(huán)的注入控制網(wǎng)絡(luò)。
建立閉環(huán)的注入控制網(wǎng)絡(luò),即使SPI控制程序能夠獲得當(dāng)前報文被成功輸入用戶程序的標(biāo)志,從而使得用戶程序能夠準(zhǔn)確可靠地輸入后續(xù)報文。該標(biāo)志可以通過SPI DLL截獲用戶程序?qū)eceive或ReceiveFrom兩個函數(shù)調(diào)用實(shí)現(xiàn)。待函數(shù)執(zhí)行成功后,SPI DLL將讀取成功標(biāo)志反饋給SPI控制程序,SPI控制程序收到該標(biāo)志后,再輸入下一條報文;否則報文輸入速度可能超出用戶程序的實(shí)際處理能力,導(dǎo)致用戶程序直接丟棄該報文或卡頓,造成輸入邏輯的混亂。建立閉環(huán)注入控制網(wǎng)絡(luò)同時還可以保證必要情況下以盡可能高的速率將數(shù)據(jù)輸入用戶程序,從而實(shí)現(xiàn)“極速”重演。
2)操作系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)到達(dá)通知的阻斷。
重演狀態(tài)下,正常網(wǎng)絡(luò)數(shù)據(jù)依然能夠不受影響地到達(dá)網(wǎng)卡,從而刺激操作系統(tǒng)向用戶程序發(fā)送正常數(shù)據(jù)到達(dá)通知,這將擾亂欺騙式注入的過程,因此,需設(shè)法阻斷用戶程序接收該通知消息。在重演開始時,由SPI控制程序向用戶程序發(fā)送“偽消息”,刺激其對SPI DLL進(jìn)行調(diào)用, SPI DLL截獲該調(diào)用,并在對應(yīng)端口的消息訂閱中取消FD_READ消息,這樣正常網(wǎng)絡(luò)數(shù)據(jù)到達(dá)時,操作系統(tǒng)將不再通知用戶程序。取消該通知后,用戶程序僅能接收到 “偽消息”,從而實(shí)現(xiàn)報文和偽消息的一一對應(yīng),正常的網(wǎng)絡(luò)數(shù)據(jù)被SPI DLL丟棄。當(dāng)切換至記錄狀態(tài)時,采用同樣的方法,重新對FD_READ進(jìn)行訂閱,用戶程序即可正常接收網(wǎng)絡(luò)數(shù)據(jù)。
3.1 進(jìn)程數(shù)據(jù)同步實(shí)現(xiàn)
由于SPI DLL可能被多個用戶進(jìn)程加載,因此客戶端實(shí)際運(yùn)行于n+1個進(jìn)程空間(n為用戶進(jìn)程數(shù)量,1為SPI控制程序所在進(jìn)程)。及時高效的進(jìn)程數(shù)據(jù)共享和大數(shù)據(jù)量條件下的快速訪問是必須解決的問題,而使用內(nèi)存映射文件是解決以上兩個問題的最有效方法[9-12]。
本文設(shè)計(jì)了基于內(nèi)存映射文件技術(shù)實(shí)現(xiàn)的數(shù)據(jù)交互系統(tǒng)如圖3所示。
圖3 進(jìn)程數(shù)據(jù)交互架構(gòu)
系統(tǒng)圍繞SPI DLL核心模塊,設(shè)置了3個內(nèi)存映射文件。分別是主存儲內(nèi)存映射文件、數(shù)據(jù)信息內(nèi)存映射文件和交互信息內(nèi)存映射文件。
主內(nèi)存映射文件同磁盤文件關(guān)聯(lián),用來完成大文件的讀寫控制;數(shù)據(jù)信息內(nèi)存映射文件為順序存儲結(jié)構(gòu)以文件頭、節(jié)點(diǎn)、數(shù)據(jù)的格式存儲進(jìn)程收到的報文,不關(guān)心具體的報文格式,為多個用戶程序共享;交互信息內(nèi)存映射文件是SPI DLL和記錄重演主進(jìn)程間交換信息的通道,存儲除數(shù)據(jù)信息以外的其他所有交互信息,主要包括用戶程序的進(jìn)行信息、報文讀取狀態(tài)信息和向SPI DLL發(fā)送的指令信息三類。
記錄狀態(tài)下SPI DLL截獲網(wǎng)絡(luò)數(shù)據(jù),寫入數(shù)據(jù)信息內(nèi)存映射文件,并實(shí)時更新寫入狀態(tài)至交互信息內(nèi)存映射文件,由記錄重演主進(jìn)程讀取該狀態(tài)標(biāo)志,并完成由數(shù)據(jù)信息內(nèi)存映射文件向主存儲內(nèi)存映射文件的數(shù)據(jù)搬移,最終將數(shù)據(jù)輸出磁盤文件。
重演狀態(tài)下,記錄重演主進(jìn)程首先指示SPI DLL阻斷用戶程序其他報文,而后由主內(nèi)存映射文件讀入磁盤文件,依據(jù)數(shù)據(jù)內(nèi)節(jié)點(diǎn)信息區(qū)分進(jìn)程,在發(fā)送“偽消息”進(jìn)行欺騙的同時將數(shù)據(jù)搬移至數(shù)據(jù)信息內(nèi)存映射文件,用戶程序在數(shù)據(jù)讀取完畢后,將狀態(tài)信息寫入交互信息內(nèi)存映射文件,記錄重演主進(jìn)程讀取該標(biāo)志,進(jìn)入下個節(jié)點(diǎn)數(shù)據(jù)處理。所有數(shù)據(jù)處理完畢后解除阻斷。
3.2 大數(shù)據(jù)處理方法
內(nèi)存映射文件實(shí)現(xiàn)大數(shù)據(jù)處理,實(shí)質(zhì)上是使用Win32的內(nèi)存管理機(jī)制,由操作系統(tǒng)按照“頁管理”的模式進(jìn)行內(nèi)存和磁盤數(shù)據(jù)的布局和更新,從而盡可能地提高數(shù)據(jù)存取效率。本文中大數(shù)據(jù)處理由主內(nèi)存映射文件完成,主要執(zhí)行以下操作:
1)用CreateFileMapping()函數(shù)創(chuàng)建或打開一個文件內(nèi)核對象,該對象用于標(biāo)志用作內(nèi)存映射文件的磁盤文件,該函數(shù)返回一個文件映射句柄供后面的操作用;
2)用OpenFileMapping()打開一個內(nèi)存映射文件對象;
3)用MapViewOfFile()或者M(jìn)apV iewOfFileEx()將文件映射對象的全部或一部分映射到進(jìn)程地址空間中。
記錄重演主程序根據(jù)系統(tǒng)數(shù)據(jù)調(diào)度,負(fù)責(zé)映射段管理,文件映射后即可通過指針方式訪問具體數(shù)據(jù)。內(nèi)存映射文件使用完畢后,通過以下操作斷開映射:
1)用UnmapViewOfFile()在進(jìn)程的地址空間中撤銷文件映射內(nèi)核對象的映射;
2)FlushViewOfFile(),關(guān)閉文件映射內(nèi)核對象;
3)CloseHandle(),關(guān)閉文件內(nèi)核對象。
3.3 讀取效率仿真分析
通過截獲某模擬訓(xùn)練中的仿真數(shù)據(jù),對傳統(tǒng)I/O方法和基于內(nèi)存映射文件方法的數(shù)據(jù)讀取效率進(jìn)行了對比。由于該仿真系統(tǒng)的數(shù)據(jù)量大小和空中模擬目標(biāo)數(shù)量成正比,因此通過設(shè)置不同的空情復(fù)雜度,對讀取時間進(jìn)行測試,如圖4所示。由圖4可見,相對于傳統(tǒng)I/O方法,采用內(nèi)存映射文件處理方法的數(shù)據(jù)讀取效率提高了5倍以上,且由于其使用分段映射的方法,使得執(zhí)行效率和目標(biāo)數(shù)量之間保持了較好的線性關(guān)系。
基于本文方法,使用Visual Studio 2005為開發(fā)工具,分別設(shè)計(jì)了客戶端和控制端程序,軟件界面如圖5~6所示。
本系統(tǒng)中客戶端程序安裝于需要記錄重演的多臺計(jì)算機(jī),可實(shí)現(xiàn)多進(jìn)程、多端口的監(jiān)控。
控制端通過TCP/IP協(xié)議,完成多個客戶端的統(tǒng)一協(xié)調(diào)控制,具備工作模式切換、重演速度控制和記錄文件管理等多種功能。
利用該系統(tǒng)對某訓(xùn)練仿真裝備中的記錄重演模塊進(jìn)行了升級,測試了本文方法的正確性,實(shí)現(xiàn)了10倍速的快速重演,大大提高了記錄重演系統(tǒng)的工作效率。
圖4 讀取效率對比
圖5 控制端程序主界面
圖6 客戶端程序主界面
以實(shí)現(xiàn)通用性好、可移植性強(qiáng)的數(shù)據(jù)記錄重演為目的,本文提出并實(shí)現(xiàn)了基于數(shù)據(jù)截獲和欺騙式注入的記錄重演方法,該方法有效解決了大數(shù)量條件下的數(shù)據(jù)同步和高速數(shù)據(jù)存取以及非合作應(yīng)用的重演問題。以本文方法為核心構(gòu)建的分布式記錄重演解決方案,現(xiàn)已成功應(yīng)用于多型仿真和模擬訓(xùn)練系統(tǒng),取得了較好的效果。
References)
[1] 姚軍. 重演技術(shù)在某系統(tǒng)中的實(shí)現(xiàn)[J]. 火炮發(fā)射與控制學(xué)報, 2014, 35(2):88-91.(YAO J. Realization of reply technology in the system [J]. Journal of Gun Launch & Control, 2014, 35(2):88-91.)
[2] 楊咚, 鐘藝, 呂衛(wèi)平.一種以太網(wǎng)數(shù)據(jù)記錄微機(jī)及其應(yīng)用技術(shù)[J]. 艦船電子工程, 2015, 24(2):106-110.(YANG D, ZHONG Y, LYU W P. A sort of Ethernet data recorded microcomputer and its applications technology [J]. Ship Electronic Engineering, 2015, 24(2):106-110.)
[3] 劉詩俊, 羅藝. 基于WinCap的UDP協(xié)議數(shù)據(jù)重發(fā)方法[J]. 計(jì)算機(jī)與數(shù)字工程, 2009, 37(8):196-204.(LIU S J, LUO Y. A method of UDP data retransmition based on WinCap[J]. Computer & Digital Engineering 2009, 37(8):196-204.)
[4] 杜曄, 黎妹紅, 李潔原. 基于NDIS中間層驅(qū)動的對等網(wǎng)絡(luò)流量監(jiān)管機(jī)制[J]. 北京交通大學(xué)學(xué)報, 2013, 37(5):29-33.(DU Y, LI M H, LI J Y. Supervision system for P2P traffic based on NDIS intermediate driver [J]. Journal of Beijing Jiaotong University, 2013, 37(5):29-33.)
[5] 鄢明, 陸幼麗, 解海濤.基于NDIS中間層驅(qū)動的隱蔽通信研究與實(shí)現(xiàn)[J]. 通信技術(shù), 2014, 47(6):679:685.(YAN M, LU Y L, XIE H T. Research on implementation of the cover communication based on the NIDS middle layer driver [J]. Communication Technology, 2014, 47(6):679:685.)
[6] 魏艷娜, 徐雅斌, 于慧敏. 基于Windows架構(gòu)SPI技術(shù)的防火墻設(shè)計(jì)與實(shí)現(xiàn)[J]. 北華航天工業(yè)學(xué)院學(xué)報, 2015 25(3):18-20.(WEI Y N, XU Y B, YU H M. Design and implementation of Windows personal firewall based on SPI[J]. Journal of North China Institute of Aerospace Engineering, 2015 25(3):18-20.)
[7] 甘利杰, 丁明勇, 楊永斌. 基于WinSock SPI技術(shù)的包過濾研究[J]. 計(jì)算機(jī)科學(xué), 2007, 34(8): 112-113.(GAN L J, DING M Y, YANG Y B. Research on packet-filter based on Winsock SPI technology [J]. Computer Science, 2007, 34(8): 112-113.)
[8] JONES A, OHLUND J. Windows網(wǎng)絡(luò)編程技術(shù)[M]. 京京工作室, 譯.北京: 機(jī)械工業(yè)出版社, 2000:363-371.(JONES A, OHLUND J. Network Programming for Microsoft Windows[M]. Jingjing Studio, translated. Beijing: China Machine Press, 2000: 363-371.)
[9] 姜三義, 代真真, 李陽, 等.基于內(nèi)存映射文件的進(jìn)化算法數(shù)據(jù)存儲引擎[J]. 計(jì)算機(jī)工程與應(yīng)用, 2015, 51(1):49-53.(JIANG S Y, DAI Z Z, LI Y, et al. Data storage engine based on memory-mapped file for evolutionary algorithms[J]. Computer Engineering and Applications, 2015, 51(1):49-53.)
[10] 楊寧學(xué), 李艷萍, 田懷文.內(nèi)存映射文件及其在廣義舒適度仿真中的應(yīng)用[J]. 電子測試, 2013(13):112-115.(YANG N X, LI Y P, TIAN H W. Memory-mapped files and its application on generalized comfort simulation on train[J]. Electronic Test, 2013(13):112-115.)
[11] 彭國金. 基于內(nèi)存映射的試飛iNET 數(shù)據(jù)快視分析技術(shù)[J]. 現(xiàn)代電子技術(shù), 2016, 39(4):44-47.(PENG G J. Memory mapping based quick view analysis technology of flight test iNET data [J]. Modern Electronics Technique, 2016, 39(4):44-47.)
[12] 孫文慶, 劉秉權(quán), 肖鏡輝.基于內(nèi)存映射文件的數(shù)據(jù)共享技術(shù)研究與應(yīng)用[J]. 微計(jì)算機(jī)應(yīng)用, 2005, 26(2):49-53.(SUN W Q, LIU B Q, XIAO J H. Research on data sharing technology based on memory mapping file and its application [J]. Microcomputer Applications, 2005, 26(2):49-53.)
YAO Xiaoqiang, born in 1985, M. S., lecturer. His research interests include intelligent information processing, simulated training and simulation.
LIU Changyun, born in 1973,Ph. D., associate professor. His research interests include intelligent information processing, radar signal processing.
GUO Xiangke, born in 1980,Ph. D. candidate, lecturer. His research interests include target tracking, intelligent information processing.
Generalrecord-replaymethodbasedondatainterceptionandcheatinginjection
YAOXiaoqiang,LIUChangyun*,GUOXiangke
(AirandMissileDefenseCollege,AirForceEngineeringUniversity,Xi’anShaanxi710051,China)
For the problems of the traditional method of data record-replay, such as packet format association, close corporation with the controlled application, and low transmission efficiency, a new record-replay method based on data interception and cheating injection was proposed. Firstly, the network data packet was automatically intercepted through the service provider interface technique of Winsock 2. Secondly, the problem of the data sharing and high speed data access was solved by using the memory-mapped file technique. Finally, the saved data packet was intercepted into the user program by the data read operation motivated by the fake messages. The practical application shows that the new method is suitable for the distributed simulation and simulated training system for its merits such as the avoidance of network packet transmission, no necessity for corporation with the controlled application, irrelevance of the packet format, smooth recurrence with ten times the speed.
Service Provider Interface (SPI); data interception; cheating injection; record-replay; memory-mapped file
2016- 09- 13;
2016- 12- 27。
姚小強(qiáng)(1985—),男,河南宜陽人,講師,碩士,主要研究方向:智能信息處理、模擬訓(xùn)練與仿真; 劉昌云(1973—),男,四川瀘州人,副教授,博士,主要研究方向:智能信息處理、雷達(dá)信號處理; 郭相科(1980—),男,河南泌陽人,講師,博士研究生,主要研究方向:目標(biāo)跟蹤、智能信息處理。
1001- 9081(2017)04- 1153- 04
10.11772/j.issn.1001- 9081.2017.04.1153
TP
A