專利名稱:一種針對結(jié)構(gòu)化協(xié)議的解碼設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機網(wǎng)絡(luò)數(shù)據(jù)通信領(lǐng)域,尤其涉及對以結(jié)構(gòu)化協(xié)議編碼的網(wǎng)絡(luò)數(shù)據(jù) 進行解碼的針對結(jié)構(gòu)化協(xié)議的解碼設(shè)備和方法。
背景技術(shù):
隨著網(wǎng)絡(luò)的發(fā)展,基于網(wǎng)絡(luò)的應(yīng)用也不斷豐富,因此也出現(xiàn)了各種基于應(yīng)用層協(xié) 議構(gòu)造和傳輸?shù)臄?shù)據(jù)。在各種應(yīng)用層協(xié)議中,存在有一類稱為結(jié)構(gòu)化協(xié)議的應(yīng)用層協(xié)議。 SMB協(xié)議和RPC協(xié)議是結(jié)構(gòu)化協(xié)議的示例。結(jié)構(gòu)化協(xié)議的特點在于,以結(jié)構(gòu)化協(xié)議編碼的數(shù) 據(jù)包中的數(shù)據(jù)以結(jié)構(gòu)化的方式存放而構(gòu)成一個或者多個結(jié)構(gòu)體,其中結(jié)構(gòu)體中嵌套結(jié)構(gòu)體 或者結(jié)構(gòu)體與結(jié)構(gòu)體相連,另外,結(jié)構(gòu)體之間還有較強的相關(guān)性。因此,結(jié)構(gòu)化協(xié)議是應(yīng)用 層協(xié)議中進行解碼比較復(fù)雜的協(xié)議。經(jīng)常地,在根據(jù)應(yīng)用層協(xié)議編碼的數(shù)據(jù)傳輸過程中,需要對這些數(shù)據(jù)進行解碼以 檢測其中的數(shù)據(jù),例如為了提高對網(wǎng)絡(luò)入侵行為進行檢查的精確度,網(wǎng)絡(luò)入侵防護系統(tǒng) (NIPS)需要對大量的應(yīng)用層協(xié)議進行深入的應(yīng)用層解碼,以檢測接收的應(yīng)用層數(shù)據(jù)是否包 含惡意數(shù)據(jù)?;陂_放源代碼的網(wǎng)絡(luò)入侵防護系統(tǒng)(NIPS)引擎snort (www. snort, org)中對結(jié) 構(gòu)化協(xié)議進行了解碼。snort如下所述來針對結(jié)構(gòu)化協(xié)議進行解碼。如圖1所示,假設(shè)一種 基于結(jié)構(gòu)化協(xié)議的數(shù)據(jù)包由固定的五個結(jié)構(gòu)體Struct A,Struct B, Struct C,Struct D 和Mruct E組成。snort中的應(yīng)用層協(xié)議解碼器首先解碼結(jié)構(gòu)體MructA,解碼完之后,增 加解碼的偏移量,隨后解析下一個結(jié)構(gòu)體Mruct B,如此重復(fù),直到完成對結(jié)構(gòu)E 的解碼。snort的應(yīng)用層協(xié)議解碼器中幾乎都采用了這種通過偏移量來對數(shù)據(jù)包進行從頭 到尾的解碼方式。snort對于結(jié)構(gòu)化協(xié)議的解碼方式存在有至少兩個缺陷首先,由于解碼器一般只對協(xié)議數(shù)據(jù)包中感興趣的結(jié)構(gòu)體進行解碼,所以會經(jīng)常 根據(jù)需要增加或者減少對協(xié)議中某些結(jié)構(gòu)體的解碼,而由于snort應(yīng)用層協(xié)議解碼器中各 結(jié)構(gòu)體的解碼聯(lián)系緊密,相互依賴性比較強,如果需要增加或者忽略某個結(jié)構(gòu)體的解碼,則 需要修改的代碼比較多,增加了維護的成本和開發(fā)的風(fēng)險。其次,由于snort的解碼方式為對數(shù)據(jù)包從頭到尾依靠偏移的遞增來進行解碼, 所以后面的解碼在一定程度上依賴于前面的具體實現(xiàn),這缺乏模塊化的設(shè)計,不利于針對 同一個解碼器進行并行開發(fā)。因此,需要一種新的針對結(jié)構(gòu)化協(xié)議的解碼設(shè)備和方法,可以減少在對以結(jié)構(gòu)化 協(xié)議編碼的數(shù)據(jù)進行解碼時、對各個結(jié)構(gòu)體進行解碼的關(guān)聯(lián)性,從而可以靈活地根據(jù)需要 來對其中的某些結(jié)構(gòu)體進行解碼。此外,該新的針對結(jié)構(gòu)化協(xié)議的解碼設(shè)備和方法還可以 針對每個結(jié)構(gòu)體分別進行解碼器開發(fā),以提高解碼器開發(fā)的效率。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決或 者減緩上述問題的針對結(jié)構(gòu)化協(xié)議的解碼設(shè)備和方法。根據(jù)本發(fā)明的一個方面,提供了一種針對結(jié)構(gòu)化協(xié)議的解碼設(shè)備以用于對根據(jù)結(jié) 構(gòu)化協(xié)議編碼的數(shù)據(jù)包進行解碼。該解碼設(shè)備包括狀態(tài)設(shè)置器,根據(jù)預(yù)定規(guī)則為以結(jié)構(gòu)化 協(xié)議編碼的數(shù)據(jù)包設(shè)置解碼狀態(tài);以及基于狀態(tài)的解碼器,接收設(shè)置了解碼狀態(tài)的數(shù)據(jù)包, 并選擇與數(shù)據(jù)包的解碼狀態(tài)相對應(yīng)的子解碼器來對所述數(shù)據(jù)包中的相應(yīng)結(jié)構(gòu)體進行解碼??蛇x地,基于狀態(tài)的解碼器在對數(shù)據(jù)包中的相應(yīng)結(jié)構(gòu)體進行解碼之后,將所述數(shù) 據(jù)包發(fā)送到所述狀態(tài)設(shè)置器來設(shè)置新的解碼狀態(tài),狀態(tài)設(shè)置器根據(jù)預(yù)定規(guī)則、基于所述數(shù) 據(jù)包的當(dāng)前解碼狀態(tài)設(shè)置所述數(shù)據(jù)包的新解碼狀態(tài),并將所述設(shè)置了新解碼狀態(tài)的數(shù)據(jù)包 發(fā)送到基于狀態(tài)的解碼器再次進行解碼??蛇x地,狀態(tài)設(shè)置器根據(jù)預(yù)定規(guī)則、基于所述數(shù)據(jù)包的當(dāng)前解碼狀態(tài)確定是否繼 續(xù)對數(shù)據(jù)包進行解碼。根據(jù)本發(fā)明的另一個方面,提供了一種針對結(jié)構(gòu)化協(xié)議的解碼方法,包括步驟接 收以結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包,該數(shù)據(jù)包包括一個或者多個結(jié)構(gòu)體;根據(jù)預(yù)定規(guī)則對以結(jié) 構(gòu)化協(xié)議編碼的數(shù)據(jù)包設(shè)置解碼狀態(tài);以及根據(jù)數(shù)據(jù)包的解碼狀態(tài),對數(shù)據(jù)包中與數(shù)據(jù)包 的解碼狀態(tài)相對應(yīng)的結(jié)構(gòu)體進行解碼??蛇x地,該解碼方法還包括步驟,在對相應(yīng)結(jié)構(gòu)體進行解碼之后,根據(jù)預(yù)定規(guī)則來 基于數(shù)據(jù)包的當(dāng)前解碼狀態(tài)設(shè)置該數(shù)據(jù)包的新解碼狀態(tài);并且根據(jù)數(shù)據(jù)包的新解碼狀態(tài), 來對數(shù)據(jù)包與數(shù)據(jù)包的新解碼狀態(tài)相對應(yīng)的結(jié)構(gòu)體進行解碼。此外,在該解碼方法中,還可以在對數(shù)據(jù)包進行解碼之后,根據(jù)所述預(yù)定規(guī)則來基 于所述數(shù)據(jù)包的當(dāng)前解碼狀態(tài)來判斷是否繼續(xù)對所述數(shù)據(jù)包進行解碼??蛇x擇,預(yù)定規(guī)則基于XML格式編寫。根據(jù)本發(fā)明的解碼設(shè)備和解碼方法通過為待解碼數(shù)據(jù)包設(shè)置解碼狀態(tài),并且構(gòu)造 基于解碼狀態(tài)進行解碼過程控制的預(yù)定規(guī)則來解耦對數(shù)據(jù)包中的各個結(jié)構(gòu)體的解碼,從而 可以靈活地根據(jù)預(yù)先設(shè)置的規(guī)則來對特定結(jié)構(gòu)體進行解碼。另外,在根據(jù)本發(fā)明的解碼設(shè)備和解碼方法中,解碼過程由預(yù)定規(guī)則來控制,因此 通過修改該預(yù)定規(guī)則就可以改變該解碼過程,從而提供了靈活的解碼控制方式。這對于需 要靈活調(diào)整對數(shù)據(jù)包的監(jiān)控內(nèi)容的網(wǎng)絡(luò)入侵檢測系統(tǒng)和方法尤其有用。根據(jù)本發(fā)明的還有一個方面,還提供了一種包括上述解碼設(shè)備的網(wǎng)絡(luò)入侵檢測系 統(tǒng),以及包括上述解碼方法的網(wǎng)絡(luò)入侵檢測方法。
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通 技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明 的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中圖1示出了在現(xiàn)有的snort解碼引擎中,對根據(jù)結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包進行解 碼的示意圖;圖2示出了根據(jù)本發(fā)明一個實施例的解碼設(shè)備的示意圖3示意性示出了由根據(jù)本發(fā)明一個實施例的解碼設(shè)備進行解碼的過程示意圖;圖4示意性地示出了在根據(jù)本發(fā)明一個實施例的解碼設(shè)備進行解碼時,在其中增 加要解碼的結(jié)構(gòu)體的解碼過程示意圖;圖5示意性地示出了在根據(jù)本發(fā)明一個實施例的解碼設(shè)備進行解碼時,在其中刪 除要解碼的結(jié)構(gòu)體的解碼過程示意圖;圖6示意性地示出了根據(jù)本發(fā)明一個實施例的解碼方法的流程圖;以及圖7-9示意性地示出了以XML格式編寫的控制規(guī)則。
具體實施例方式下面結(jié)合附圖和具體的實施方式對本發(fā)明作進一步的描述。。圖2示出了根據(jù)本發(fā)明一個實施例的解碼設(shè)備200的示意圖。如圖2所示,解碼設(shè) 備200包括狀態(tài)設(shè)置器210和基于狀態(tài)的解碼器220。狀態(tài)設(shè)置器210接收根據(jù)結(jié)構(gòu)化協(xié)議 編碼的數(shù)據(jù)包,根據(jù)預(yù)定規(guī)則為該數(shù)據(jù)包設(shè)置解碼狀態(tài),并將設(shè)置了解碼狀態(tài)的數(shù)據(jù)包發(fā) 送到基于狀態(tài)的解碼器220進行解碼。根據(jù)結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包包括一個或者多個結(jié) 構(gòu)體,這些結(jié)構(gòu)體可以一個接著一個地布置,當(dāng)然這些結(jié)構(gòu)體之間也可以存在有嵌套關(guān)系, 即一個結(jié)構(gòu)體中可以包括一個或者多個子結(jié)構(gòu)體,這些子結(jié)構(gòu)體還可以在其中包括進一步 的子結(jié)構(gòu)體。解碼設(shè)備200有時候需要對這些結(jié)構(gòu)體中的某個或者某些結(jié)構(gòu)體進行解碼。解碼設(shè)備200可以包括規(guī)則存儲器230來存儲一個或者多個預(yù)定控制規(guī)則,而狀 態(tài)設(shè)置器210可以根據(jù)協(xié)議標識等選擇特定的預(yù)定規(guī)則。預(yù)定控制規(guī)則規(guī)定了數(shù)據(jù)包的解碼狀態(tài)設(shè)置規(guī)則,即基于數(shù)據(jù)包的當(dāng)前解碼狀態(tài) 來設(shè)置數(shù)據(jù)包的新解碼狀態(tài)的規(guī)則。圖7示意性地示出了根據(jù)本發(fā)明一個實施例的、以XML 格式編寫的控制規(guī)則。如圖7所示,該控制規(guī)則中設(shè)置了 5個解碼狀態(tài)當(dāng)數(shù)據(jù)包的當(dāng)前解 碼狀態(tài)未設(shè)置時,將該數(shù)據(jù)包的新解碼狀態(tài)設(shè)置為“ state_A” ;當(dāng)數(shù)據(jù)包的當(dāng)前解碼狀態(tài)為 “state_A”時,將該數(shù)據(jù)包的新解碼狀態(tài)設(shè)置為“State_B”;以此類推;并且當(dāng)數(shù)據(jù)包的當(dāng)前 解碼狀態(tài)為“state_E”時,將該數(shù)據(jù)包的新解碼狀態(tài)設(shè)置為空,這意味著不再對該數(shù)據(jù)包進 行解碼。可以看出,每個控制規(guī)則包括一種解碼狀態(tài)跳轉(zhuǎn)鏈,其以未設(shè)置解碼狀態(tài)開始,并 以空解碼狀態(tài)結(jié)束,從而指示解碼設(shè)備200完成對數(shù)據(jù)包的解碼。狀態(tài)設(shè)置器110除了接收未設(shè)置解碼狀態(tài)的待解碼數(shù)據(jù)包來設(shè)置解碼狀態(tài)之外, 還從基于狀態(tài)的解碼器120接收部分解碼了的數(shù)據(jù)包,并根據(jù)預(yù)定控制規(guī)則、基于該部分 解碼了的數(shù)據(jù)包的當(dāng)前解碼狀態(tài)確定后續(xù)對該部分解碼了的數(shù)據(jù)包的處理。如果控制規(guī)則 指示存在對應(yīng)的新解碼狀態(tài),則狀態(tài)設(shè)置器110為該數(shù)據(jù)包設(shè)置新的解碼狀態(tài),并隨后將 設(shè)置了新解碼狀態(tài)的數(shù)據(jù)包發(fā)送到基于狀態(tài)的解碼器120來繼續(xù)進行解碼。相反,如果控 制規(guī)則指示對應(yīng)的新解碼狀態(tài)為空,則狀態(tài)設(shè)置器110確定對該數(shù)據(jù)包的解碼已經(jīng)完成, 并且輸出該完成解碼的數(shù)據(jù)包?;跔顟B(tài)的解碼器220從狀態(tài)設(shè)置器210接收設(shè)置了解碼狀態(tài)的數(shù)據(jù)包,根據(jù)數(shù) 據(jù)包的解碼狀態(tài)來選擇相對應(yīng)的子解碼器240來對數(shù)據(jù)包進行解碼,并且在子解碼器240 完成解碼處理之后將該數(shù)據(jù)包返回到狀態(tài)設(shè)置器210來繼續(xù)處理。由于解碼設(shè)備200所處理的數(shù)據(jù)包為根據(jù)結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包,因此這種數(shù) 據(jù)包包括一個或者多個結(jié)構(gòu)體??蛇x地,子解碼器MO以一個或者多個結(jié)構(gòu)體為單位對數(shù)據(jù)包進行解碼,也就是說,每個子解碼器240對數(shù)據(jù)包中的特定一個或者多個結(jié)構(gòu)體進行 解碼。每個解碼狀態(tài)也對應(yīng)于一個或者多個結(jié)構(gòu)體的解碼狀態(tài)。因此,子解碼器240與解 碼狀態(tài)相對應(yīng),基于狀態(tài)的解碼器220可以根據(jù)數(shù)據(jù)包的解碼狀態(tài)來選擇相應(yīng)的子解碼器 240,以便對數(shù)據(jù)中的對應(yīng)結(jié)構(gòu)體進行解碼??蛇x地,解碼設(shè)備200包括子解碼器存儲器250,其中存儲了一個或者多個子解碼器 240,這些子解碼器240可以由基于狀態(tài)的解碼器220使用來對數(shù)據(jù)包中的相應(yīng)結(jié)構(gòu)體進行解碼。利用子解碼器240和控制規(guī)則的設(shè)置,解碼設(shè)備200可以靈活地控制對數(shù)據(jù)包的 解碼,下面的圖3-5中示意性地示出了如何利用解碼設(shè)備200來對以結(jié)構(gòu)化協(xié)議編碼的數(shù) 據(jù)包進行解碼的過程。圖3示出了根據(jù)本發(fā)明一個實施例的解碼設(shè)備200對數(shù)據(jù)包進行解碼的過程的 示意圖。如圖3所示,要進行解碼的數(shù)據(jù)包包括多個結(jié)構(gòu)體,其中需要對結(jié)構(gòu)體structA、 structB、structC、StructDJP structE進行解碼。對該結(jié)構(gòu)體進行解碼的控制規(guī)則如圖7 所示。對于接收的數(shù)據(jù)包,首先狀態(tài)設(shè)置器210將數(shù)據(jù)包的解碼狀態(tài)設(shè)置為state_A,基于 狀態(tài)的解碼器220根據(jù)該解碼狀態(tài),選擇與解碼狀態(tài)state_A相對應(yīng)的子解碼器Μ0_Α來 對其中的結(jié)構(gòu)體structA進行解碼。對結(jié)構(gòu)體structA解碼完成之后,將數(shù)據(jù)包發(fā)送回到 狀態(tài)設(shè)置器210,以便將數(shù)據(jù)包的解碼狀態(tài)設(shè)置為state_B,基于狀態(tài)的解碼器220選擇與 解碼狀態(tài)state_B相對應(yīng)的子解碼器來對其中的結(jié)構(gòu)體structB進行解碼,并在對 結(jié)構(gòu)體structB解碼完成之后,將數(shù)據(jù)包發(fā)送回到狀態(tài)設(shè)置器210,以便將解碼狀態(tài)新設(shè)置 為state_C,并類似地對結(jié)構(gòu)體structC、structD、和structE完成解碼。在完成對結(jié)構(gòu)體 structE的解碼之后,狀態(tài)設(shè)置器210根據(jù)控制規(guī)則確定完成了對該數(shù)據(jù)包的解碼,并輸出 完成解碼的數(shù)據(jù)包。圖4示出了當(dāng)需要對圖3所解碼的數(shù)據(jù)包中的新結(jié)構(gòu)體StructF進行解碼時,對 圖3所示的解碼過程的改變。新結(jié)構(gòu)體structF必須在結(jié)構(gòu)體B之后且在結(jié)構(gòu)體C之前解 碼。為此,首先對控制規(guī)則進行修改,即如圖8所示,添加對應(yīng)于結(jié)構(gòu)體structF的新解碼狀 態(tài)state_F,并且將解碼狀態(tài)的跳轉(zhuǎn)方式修改為從state_B跳轉(zhuǎn)到state_F,然后從state_ F跳轉(zhuǎn)到state_C。其次,增加用于對結(jié)構(gòu)體structF進行解碼的子解碼器204_F。這樣,在 類似于圖3所述那樣完成對結(jié)構(gòu)體structB的解碼之后,狀態(tài)設(shè)置器21將數(shù)據(jù)包的解碼狀 態(tài)設(shè)置為state_F,隨后基于狀態(tài)的解碼器220選擇與解碼狀態(tài)state_F相對應(yīng)的子解碼器 240_F來對其中的結(jié)構(gòu)體structF進行解碼,并在對結(jié)構(gòu)體structF解碼完成之后,將數(shù)據(jù) 包發(fā)送回到狀態(tài)設(shè)置器210,以便將解碼狀態(tài)新設(shè)置為state_C,隨后也類似于圖3所述的 那樣完成對數(shù)據(jù)包的解碼。圖5示出了當(dāng)不需要對圖3所解碼的數(shù)據(jù)包中的結(jié)構(gòu)體structC進行解碼時,對 圖3所示的解碼過程的改變。由于不再需要對結(jié)構(gòu)體structC進行解碼,因此,控制規(guī)則修 改為如圖9所示,將解碼狀態(tài)的跳轉(zhuǎn)方式修改為從state_B直接跳轉(zhuǎn)到state_D。如圖5所 示,在類似于圖3所述那樣完成對結(jié)構(gòu)體structB的解碼之后,狀態(tài)設(shè)置器21將數(shù)據(jù)包的 解碼狀態(tài)設(shè)置為state_D,隨后基于狀態(tài)的解碼器220選擇與解碼狀態(tài)state_D相對應(yīng)的子 解碼器M0_D來對結(jié)構(gòu)體structD進行解碼,并隨后也類似于圖3所述的那樣完成對數(shù)據(jù) 包的解碼。如上參考圖2-圖5所述,根據(jù)本發(fā)明的解碼設(shè)備200可以通過添加特定的子解碼器和修改控制規(guī)則來靈活地控制對以結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包中的結(jié)構(gòu)體的解碼。另外,在解碼設(shè)備200中,可以統(tǒng)一子解碼器240和基于狀態(tài)的解碼器220之間的接口,因此可以 分別開發(fā)各種與結(jié)構(gòu)體相對應(yīng)的子解碼器,從而可以加快開發(fā)子解碼器的速度。圖6示意性地示出了根據(jù)本發(fā)明一個實施例的解碼方法的流程圖,該解碼方法可 以由根據(jù)本發(fā)明的解碼設(shè)備200來執(zhí)行。如圖6所述,該解碼方法始于步驟S610,其中接收 要進行解碼的數(shù)據(jù)包,該數(shù)據(jù)包根據(jù)結(jié)構(gòu)化協(xié)議編碼,并且包括一個或者多個結(jié)構(gòu)體。隨后 在步驟S620中,參考預(yù)定控制規(guī)則為該數(shù)據(jù)包設(shè)置解碼狀態(tài)。該步驟例如可以由解碼設(shè)備 200中的狀態(tài)設(shè)置器210來執(zhí)行。在為數(shù)據(jù)包設(shè)置了解碼狀態(tài)之后,在步驟S630中,與所述 數(shù)據(jù)包的解碼狀態(tài)相對應(yīng)對所述數(shù)據(jù)包中的相應(yīng)結(jié)構(gòu)體進行解碼。該步驟可以例如可以由 解碼設(shè)備200中的基于狀態(tài)的解碼器220來執(zhí)行。例如在步驟S630中,解碼器220可以選 擇與解碼狀態(tài)相對應(yīng)的子解碼器240來對數(shù)據(jù)包進行解碼,該子解碼器240通常對數(shù)據(jù)包 中的特定結(jié)構(gòu)體進行解碼。在對數(shù)據(jù)包中的相應(yīng)結(jié)構(gòu)體進行解碼之后,在步驟S 640中,根 據(jù)預(yù)定控制規(guī)則,基于數(shù)據(jù)包的當(dāng)前解碼狀態(tài)來確定新解碼狀態(tài)是否存在。如果確定新解 碼狀態(tài)存在,則在步驟S650中,設(shè)置數(shù)據(jù)包的新解碼狀態(tài),并且返回到步驟S630中來繼續(xù) 進行對結(jié)構(gòu)體的解碼。而如果在步驟S640中,確定不存在新解碼狀態(tài),即新解碼狀態(tài)為空, 則確定對該數(shù)據(jù)包的解碼已經(jīng)完成,并結(jié)束該方法??蛇x地,步驟S640和S650可以由解碼 設(shè)備200中的狀態(tài)設(shè)置器210來執(zhí)行。根據(jù)本發(fā)明的解碼設(shè)備和解碼方法可以用于對以結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包進行 解碼,并且提供了靈活的配置方式,以便可以根據(jù)需要對數(shù)據(jù)包中的各個結(jié)構(gòu)體進行解碼。 因此,根據(jù)本發(fā)明的解碼設(shè)備尤其適合應(yīng)用于網(wǎng)絡(luò)入侵檢測系統(tǒng)中,以用于對接收的數(shù)據(jù) 包進行解碼以獲取該數(shù)據(jù)包的內(nèi)容。而根據(jù)本發(fā)明的解碼方法也特別適用于在網(wǎng)絡(luò)入侵檢 測方法中使用,以用于對接收的數(shù)據(jù)包進行解碼。應(yīng)當(dāng)注意的是,在本發(fā)明的解碼設(shè)備200的各個部件中,根據(jù)其要實現(xiàn)的功能而 對其中的部件進行了邏輯劃分,但是,本發(fā)明不受限于此,可以根據(jù)需要對各個部件進行重 新劃分或者組合,例如,可以將一些部件組合為單個部件,或者可以將一些部件進一步分解 為更多的子部件。本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行 的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用 微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的解碼設(shè)備中的一些或者 全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分 或者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明 的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信 號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng) 域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中, 不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在 未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這 樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來 實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第 二、以及第三等的使用不表示任何順序。可將這些單詞解釋為 名稱。
權(quán)利要求
1.一種針對結(jié)構(gòu)化協(xié)議的解碼設(shè)備,包括狀態(tài)設(shè)置器,根據(jù)預(yù)定規(guī)則為以結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包設(shè)置解碼狀態(tài),其中該數(shù)據(jù) 包包括一個或者多個結(jié)構(gòu)體;以及基于狀態(tài)的解碼器,接收所述設(shè)置了解碼狀態(tài)的數(shù)據(jù)包,并選擇與所述數(shù)據(jù)包的當(dāng)前 解碼狀態(tài)相對應(yīng)的子解碼器來對所述數(shù)據(jù)包的一個或者多個結(jié)構(gòu)體中與當(dāng)前解碼狀態(tài)相 對應(yīng)的結(jié)構(gòu)體進行解碼。
2.如權(quán)利要求1所述的解碼設(shè)備,其中所述基于狀態(tài)的解碼器在對所述數(shù)據(jù)包中的相 應(yīng)結(jié)構(gòu)體進行解碼之后,由所述狀態(tài)設(shè)置器來根據(jù)所述預(yù)定規(guī)則、基于所述數(shù)據(jù)包的當(dāng)前 解碼狀態(tài)設(shè)置所述數(shù)據(jù)包的新解碼狀態(tài),并將所述設(shè)置了新解碼狀態(tài)的數(shù)據(jù)包發(fā)送到所述 基于狀態(tài)的解碼器,以便選擇與所述數(shù)據(jù)包的新解碼狀態(tài)相對應(yīng)的子解碼器對所述數(shù)據(jù)包 的一個或者多個結(jié)構(gòu)體中的與該新解碼狀態(tài)相對應(yīng)的結(jié)構(gòu)體進行解碼。
3.如權(quán)利要求2所述的解碼設(shè)備,其中所述狀態(tài)設(shè)置器根據(jù)預(yù)定規(guī)則、基于所述數(shù)據(jù) 包的當(dāng)前解碼狀態(tài)確定是否繼續(xù)對所述數(shù)據(jù)包進行解碼。
4.如權(quán)利要求1-3中的任一個所述的解碼設(shè)備,其中所述預(yù)定規(guī)則基于XML格式編寫。
5.一種針對結(jié)構(gòu)化協(xié)議的解碼方法,包括步驟接收以結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包,該數(shù)據(jù)包包括一個或者多個結(jié)構(gòu)體;根據(jù)預(yù)定規(guī)則對所述以結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包設(shè)置解碼狀態(tài);以及與所述數(shù)據(jù)包的解碼狀態(tài)相對應(yīng)對所述數(shù)據(jù)包中的相應(yīng)結(jié)構(gòu)體進行解碼。
6.如權(quán)利要求5所述的解碼方法,還包括步驟在對所述數(shù)據(jù)包進行解碼之后,根據(jù)所述預(yù)定規(guī)則來基于所述數(shù)據(jù)包的當(dāng)前解碼狀態(tài) 設(shè)置所述數(shù)據(jù)包的新解碼狀態(tài);以及與所述數(shù)據(jù)包的新解碼狀態(tài)相對應(yīng)地對所述數(shù)據(jù)包中的相應(yīng)結(jié)構(gòu)體進行解碼。
7.如權(quán)利要求6所述的解碼方法,還包括步驟在對所述數(shù)據(jù)包進行解碼之后,根據(jù)所述預(yù)定規(guī)則來基于所述數(shù)據(jù)包的當(dāng)前解碼狀態(tài) 來判斷是否繼續(xù)對所述數(shù)據(jù)包進行解碼。
8.如權(quán)利要求5-7中的任一個所述的解碼方法,其中所述預(yù)定規(guī)則基于XML格式編寫。
9.一種網(wǎng)絡(luò)入侵防護系統(tǒng),包括如權(quán)利要求1-4中的任一個所述的解碼設(shè)備來對接收 的網(wǎng)絡(luò)數(shù)據(jù)包進行解碼。
10.一種網(wǎng)絡(luò)入侵防護方法,包括如權(quán)利要求5-8中的任一個所述的解碼方法來對接 收的網(wǎng)絡(luò)數(shù)據(jù)包進行解碼。
全文摘要
本發(fā)明公開了一種針對結(jié)構(gòu)化協(xié)議的解碼設(shè)備,包括狀態(tài)設(shè)置器,根據(jù)預(yù)定規(guī)則為以結(jié)構(gòu)化協(xié)議編碼的數(shù)據(jù)包設(shè)置解碼狀態(tài);以及基于狀態(tài)的解碼器,接收設(shè)置了解碼狀態(tài)的數(shù)據(jù)包,并選擇與該數(shù)據(jù)包的當(dāng)前解碼狀態(tài)相對應(yīng)的子解碼器來對數(shù)據(jù)包的一個或者多個結(jié)構(gòu)體中與當(dāng)前解碼狀態(tài)相對應(yīng)的結(jié)構(gòu)體進行解碼。本發(fā)明還公開了相應(yīng)的解碼方法,以及分別采用該解碼設(shè)備和解碼方法的網(wǎng)絡(luò)入侵檢測系統(tǒng)和方法。
文檔編號H04L1/00GK102111236SQ20101054984
公開日2011年6月29日 申請日期2010年11月18日 優(yōu)先權(quán)日2010年11月18日
發(fā)明者張濤, 鄭崴中 申請人:北京神州綠盟信息安全科技股份有限公司