專利名稱::文件類型識(shí)別方法及文件類型識(shí)別裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計(jì)算機(jī)及通信
技術(shù)領(lǐng)域:
,尤其涉及一種文件類型的識(shí)別方法及一種文件類型的識(shí)別裝置。
背景技術(shù):
:計(jì)算機(jī)網(wǎng)絡(luò)極大地便利了人們的生活,使得處于不同地點(diǎn)的人們可以通過(guò)聯(lián)網(wǎng)計(jì)算機(jī)無(wú)縫地傳輸數(shù)據(jù),然而這也對(duì)信息安全提出了挑戰(zhàn)。對(duì)于企業(yè)而言,如何在確保機(jī)密信息安全的同時(shí),不影響工作、業(yè)務(wù)的正常開展,已經(jīng)成為一個(gè)熱點(diǎn)問(wèn)題。例如,在用戶向連接到網(wǎng)絡(luò)中的另一用戶發(fā)送帶有附件的電子郵件的場(chǎng)景下,出于安全和審計(jì)方面的考慮,例如為了防止機(jī)密信息被發(fā)送給錯(cuò)誤的接收對(duì)象,企業(yè)常需要對(duì)所傳輸文件的類型進(jìn)行識(shí)別檢測(cè),并根據(jù)識(shí)別檢測(cè)的結(jié)果確定是否需要對(duì)郵件進(jìn)行過(guò)濾。早期的文件類型識(shí)別技術(shù)根據(jù)文件后綴名來(lái)確定文件類型,其原理為設(shè)置于發(fā)送方和接收方之間的檢測(cè)設(shè)備對(duì)傳輸?shù)臄?shù)據(jù)包進(jìn)行協(xié)議分析,如果判斷出正在傳輸文件,則提取后綴名,根據(jù)后綴名與文件類型的對(duì)應(yīng)關(guān)系,確定該文件的類型,例如若后綴名為“doc”,則為word文件,若后綴名為“txt”,則為文本文件。但是該方案只能識(shí)別出帶有后綴名的文件的類型,如果發(fā)送方人為地去掉文件的后綴名,接收方在傳輸完成后再添加真實(shí)的后綴名,則過(guò)濾設(shè)備無(wú)法進(jìn)行有效的識(shí)別和過(guò)濾。為解決以上問(wèn)題,現(xiàn)有技術(shù)提出了基于“魔鬼數(shù)字”的文件類型識(shí)別方法?!澳Ч頂?shù)字”是指文件頭中能夠反映不同文件類型特征的字段內(nèi)容。其原理為,檢測(cè)設(shè)備對(duì)所傳輸?shù)奈募奈募^進(jìn)行分析,若文件頭中包含預(yù)先存儲(chǔ)的已知文件類型對(duì)應(yīng)的魔鬼數(shù)字,則確定所傳輸?shù)奈募念愋蜑樵撃Ч頂?shù)字對(duì)應(yīng)的文件類型。發(fā)明人在實(shí)現(xiàn)本發(fā)明過(guò)程中發(fā)現(xiàn),現(xiàn)有技術(shù)至少存在以下缺陷發(fā)送方可以人為地修改文件頭中的幾個(gè)字節(jié),使得文件頭、特別是魔鬼數(shù)字所在字段的內(nèi)容發(fā)生改變,接收方在傳輸完成后再還原真實(shí)的文件頭,也可以達(dá)到逃避識(shí)別和過(guò)濾的目的。在這種情況下,現(xiàn)有檢測(cè)設(shè)備就無(wú)法確定傳輸?shù)氖悄姆N類型的文件,因此現(xiàn)有技術(shù)不能有效地識(shí)別出通過(guò)網(wǎng)絡(luò)傳輸?shù)奈募念愋停瑥亩_保機(jī)密信息的安全。
發(fā)明內(nèi)容本發(fā)明實(shí)施例提供一種文件類型識(shí)別方法,用以解決現(xiàn)有技術(shù)在發(fā)送方對(duì)傳輸?shù)奈募M(jìn)行篡改時(shí),不能有效地識(shí)別出文件類型的問(wèn)題。對(duì)應(yīng)地,本發(fā)明實(shí)施例還提供了一種文件類型識(shí)別裝置。本發(fā)明實(shí)施例提供的技術(shù)方案如下一種文件類型識(shí)別方法,包括從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,判斷從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字;若能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型;判斷所述待識(shí)別文件的數(shù)據(jù)是否符合所述文件類型的數(shù)據(jù)結(jié)構(gòu)特征;若符合,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若不符合,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。一種文件類型識(shí)別裝置,包括第一測(cè)試單元,用于從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,測(cè)試從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字;第一查找單元,用于若第一測(cè)試單元能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型;第一判斷單元,用于判斷所述待識(shí)別文件的數(shù)據(jù)是否符合所述文件類型的數(shù)據(jù)結(jié)構(gòu)特征;第一確定單元,用于若第一判斷單元判斷結(jié)果為符合,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若判斷結(jié)果為不符合,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。本發(fā)明實(shí)施例通過(guò)文件頭中的魔鬼數(shù)字確定待識(shí)別文件的類型后,還需要再次確定待識(shí)別文件中數(shù)據(jù)反映出的文件結(jié)構(gòu)特征,是否符合根據(jù)魔鬼數(shù)字所確定的文件類型對(duì)應(yīng)的文件結(jié)構(gòu)特征,只有符合,才能最終確定待識(shí)別文件的文件類型。通過(guò)上述方案可以使檢測(cè)設(shè)備能夠有效識(shí)別出類型被篡改的文件,保護(hù)機(jī)密信息不被惡意泄露。為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例一提供的文件識(shí)別方法的原理流程圖;圖2為本發(fā)明實(shí)施例二提供的文件識(shí)別方法的流程圖;圖3為本發(fā)明實(shí)施例二提供的文件識(shí)別實(shí)例的示意圖;圖4為本發(fā)明實(shí)施例三提供的文件識(shí)別方法的流程圖;圖5為本發(fā)明實(shí)施例三中便攜文件格式(PDF,PortableDocumentFormat)文件結(jié)構(gòu)特征的示意圖;圖6為本發(fā)明實(shí)施例四中文件類型識(shí)別裝置的第一結(jié)構(gòu)示意圖;圖7為本發(fā)明實(shí)施例四中文件類型識(shí)別裝置的第二結(jié)構(gòu)示意圖;圖8為本發(fā)明實(shí)施例提供的文件類型識(shí)別裝置中第一確定單元的結(jié)構(gòu)示意圖。具體實(shí)施例方式下面結(jié)合各個(gè)附圖對(duì)本發(fā)明實(shí)施例技術(shù)方案的主要實(shí)現(xiàn)原理具體實(shí)施方式及其對(duì)應(yīng)能夠達(dá)到的有益效果進(jìn)行詳細(xì)的闡述。實(shí)施例一在本發(fā)明實(shí)施例中有設(shè)置于數(shù)據(jù)包發(fā)送方和接收方中間的檢測(cè)設(shè)備,發(fā)送方發(fā)送的數(shù)據(jù)包需要經(jīng)過(guò)檢測(cè)設(shè)備才能發(fā)送給接收方。在發(fā)送方為企業(yè)構(gòu)建的局域網(wǎng)內(nèi)部的用戶,接收方為局域網(wǎng)外部的用戶的場(chǎng)景下,所述檢測(cè)設(shè)備可以為部署局域網(wǎng)邊界的防火墻設(shè)備、入侵防御系統(tǒng)(IPS,IntrusionPreventionSystem)設(shè)備等防護(hù)設(shè)備,或者作為一個(gè)獨(dú)立模塊集成于路由器或IPS等設(shè)備中。在個(gè)人用戶的場(chǎng)景下,所述檢測(cè)設(shè)備也可以為主機(jī)瀏覽器、即時(shí)消息(IMdnstantMessaging)聊天客戶端或其他應(yīng)用軟件中的一個(gè)軟件模塊。檢測(cè)設(shè)備對(duì)發(fā)送方和接收方所傳輸?shù)臄?shù)據(jù)包進(jìn)行檢測(cè),識(shí)別傳輸?shù)臄?shù)據(jù)包攜帶的文件的文件類型。進(jìn)一步地,檢測(cè)設(shè)備可以根據(jù)識(shí)別出的文件類型和預(yù)先配置的過(guò)濾策略,對(duì)攜帶有過(guò)濾策略所限定的某些類型文件的數(shù)據(jù)包進(jìn)行過(guò)濾,以保證機(jī)密信息的安全。如圖1所示,本發(fā)明實(shí)施例提供的文件類型識(shí)別方法的原理流程如下步驟10,檢測(cè)設(shè)備從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,判斷從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字,若是,進(jìn)入步驟20。檢測(cè)設(shè)備對(duì)流經(jīng)該檢測(cè)設(shè)備的數(shù)據(jù)包進(jìn)行逐層協(xié)議解析,數(shù)據(jù)包解析原理可以參照現(xiàn)有的深度包識(shí)別(DPI,De印PacketInspection)設(shè)備,在這里不再詳述。檢測(cè)設(shè)備接收到傳輸?shù)臄?shù)據(jù)包后,通過(guò)深度協(xié)議解析獲得該數(shù)據(jù)包的載荷內(nèi)容,并判斷所述載荷內(nèi)容中是否包含文件傳輸?shù)奶卣髯侄?,若包含特征字段,則檢測(cè)設(shè)備確定數(shù)據(jù)包攜帶有文件。根據(jù)特征字段判斷數(shù)據(jù)包是否攜帶有文件的過(guò)程是現(xiàn)有技術(shù),請(qǐng)參照現(xiàn)有各種可用于傳輸文件的應(yīng)用層協(xié)議對(duì)應(yīng)的標(biāo)準(zhǔn)文檔,如超文本傳輸協(xié)議(HTTP,HyperTextTransferProtocol)對(duì)應(yīng)的RFC2616、文件傳輸協(xié)議(FTP,F(xiàn)ileTransferProtocol)對(duì)應(yīng)的RFC959、簡(jiǎn)單文件傳輸協(xié)議(TFTP,TrivialFileTransferProtocol)對(duì)應(yīng)的RFC783文檔等,在這里不做詳述。若是,則確定該數(shù)據(jù)包攜帶的內(nèi)容是文件,并根據(jù)文件頭中起始地址字段所指示的文件起始地址,對(duì)該數(shù)據(jù)包載荷內(nèi)容中的文件數(shù)據(jù)進(jìn)行緩存;判斷已緩存的文件數(shù)據(jù)是否已達(dá)到預(yù)定大小,若是將已緩存的文件數(shù)據(jù)作為所述待識(shí)別文件的文件頭,否則繼續(xù)緩存同一數(shù)據(jù)流中后續(xù)數(shù)據(jù)包載荷內(nèi)容中的文件數(shù)據(jù)。所述檢測(cè)設(shè)備在緩存的文件數(shù)據(jù)達(dá)到預(yù)定大小后,將已緩存的數(shù)據(jù)依次分別與各種可識(shí)別文件類型對(duì)應(yīng)的魔鬼數(shù)字進(jìn)行比較;若存在比較結(jié)果一致的魔鬼數(shù)字,則將所述比較結(jié)果一致的魔鬼數(shù)字作為所述待識(shí)別文件頭中的魔鬼數(shù)字;否則,確定不能獲得待識(shí)別文件的魔鬼數(shù)字。其中,所述預(yù)定大小是根據(jù)目前已知的幾十種可識(shí)別文件類型魔鬼數(shù)字的長(zhǎng)度值等經(jīng)驗(yàn)數(shù)據(jù)來(lái)確定的。魔鬼數(shù)字是指文件頭中可以用來(lái)標(biāo)識(shí)該文件類型的字段內(nèi)容。這里需要說(shuō)明的是,魔鬼數(shù)字是識(shí)別文件類型的重要途徑,只要一個(gè)文件的文件類型是可識(shí)別的,那么從該文件頭中一定可以提取到該文件類型對(duì)應(yīng)的魔鬼數(shù)字。不同的文件類型的文件中魔鬼數(shù)字長(zhǎng)度、數(shù)值大小、特征均不相同。有的文件類型的魔鬼數(shù)字為2字節(jié),有的為20字節(jié)或者22字節(jié),在這里難以一一列舉,通常魔鬼數(shù)字的長(zhǎng)度均在2字節(jié)至32字節(jié)的范圍內(nèi)。因此上述緩存的數(shù)據(jù)大小可以設(shè)置為2字節(jié)至32字節(jié),在這個(gè)范圍內(nèi)既不至于占用過(guò)大的緩沖空間,又能夠?qū)崿F(xiàn)較好的識(shí)別效果。步驟20,若能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型。所述檢測(cè)設(shè)備中預(yù)先存儲(chǔ)文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系,通過(guò)該第一對(duì)應(yīng)關(guān)系,就可以由從文件中提取的魔鬼數(shù)字確定文件類型。一個(gè)具體實(shí)例為原始文件為壓縮文件(rar,RoshalARchive)類型的文件,發(fā)送方對(duì)該文件頭中的魔鬼數(shù)字進(jìn)行篡改,篡改為PDF文件類型對(duì)應(yīng)的魔鬼數(shù)字,并把篡改后的文件發(fā)送給接收方。此時(shí)檢測(cè)設(shè)備獲取魔鬼數(shù)字后,從第一對(duì)應(yīng)關(guān)系中查找該魔鬼數(shù)字對(duì)應(yīng)的文件類型,確定待識(shí)別文件為PDF文件。步驟30,判斷所述待識(shí)別文件的數(shù)據(jù)是否符合所述魔鬼數(shù)字對(duì)應(yīng)的文件類型的數(shù)據(jù)結(jié)構(gòu)特征,若符合,則進(jìn)入步驟40,否則進(jìn)入步驟50。文件的數(shù)據(jù)結(jié)構(gòu)特征反映了文件的數(shù)據(jù)組織特點(diǎn),數(shù)據(jù)結(jié)構(gòu)特征是在文件格式設(shè)計(jì)階段就確定出的,一種類型的所有文件都遵從這種數(shù)據(jù)組織形式。文件結(jié)構(gòu)特征包括特征字符或字符串、數(shù)據(jù)存儲(chǔ)時(shí)所采用的數(shù)據(jù)結(jié)構(gòu)格式,各種數(shù)據(jù)結(jié)構(gòu)的對(duì)象間的關(guān)系,交叉引用表等等??梢愿鶕?jù)某種類型文件的數(shù)據(jù)結(jié)構(gòu)特征,設(shè)計(jì)相適應(yīng)的文件解析器,將一種文件類型的文件數(shù)據(jù)輸入該文件類型的解析器,如果能夠解析出正確的文件內(nèi)容而不是亂碼,則說(shuō)明所述文件數(shù)據(jù)與所述文件類型的數(shù)據(jù)結(jié)構(gòu)特征是相符合的。在后面的例子中將進(jìn)行詳細(xì)介紹。此時(shí),從待識(shí)別文件中提取的文件結(jié)構(gòu)特征仍然是rar文件的結(jié)構(gòu)特征。步驟40,若符合所述魔鬼數(shù)字對(duì)應(yīng)的文件類型的結(jié)構(gòu)特征,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型。步驟50,若不符合所述魔鬼數(shù)字對(duì)應(yīng)的文件類型的結(jié)構(gòu)特征,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。在上述實(shí)例中,根據(jù)魔鬼數(shù)字確定出的文件類型為rar,而從待識(shí)別文件中提取的文件結(jié)構(gòu)特征為PDF文件的結(jié)構(gòu)特征,二者不同,說(shuō)明待識(shí)別文件已被篡改??蛇x地,在本發(fā)明實(shí)施例中,在確定出所述待識(shí)別文件的文件類型為異常類型之前,可以允許數(shù)據(jù)包所在的數(shù)據(jù)流通過(guò),但當(dāng)確定出所述待識(shí)別文件的文件類型為異常類型之后,阻斷所述數(shù)據(jù)流通過(guò)。這樣做的好處是在檢測(cè)設(shè)備無(wú)需緩存大量的數(shù)據(jù)包;而接收方由于數(shù)據(jù)流被阻斷造成數(shù)據(jù)缺失,無(wú)法還原出待識(shí)別文件的,可以達(dá)到保護(hù)數(shù)據(jù)安全的目的。本發(fā)明實(shí)施例在通過(guò)文件頭中的魔鬼數(shù)字確定待識(shí)別文件的類型后,還需要再次確定待識(shí)別文件中數(shù)據(jù)反映出的文件結(jié)構(gòu)特征,是否符合根據(jù)魔鬼數(shù)字所確定的文件類型對(duì)應(yīng)的文件結(jié)構(gòu)特征,只有符合,才能最終確定待識(shí)別文件的文件類型。這樣,即使發(fā)送方企圖通過(guò)篡改待識(shí)別文件頭的魔鬼數(shù)字來(lái)逃避檢測(cè),由于該文件的結(jié)構(gòu)特征仍然對(duì)應(yīng)篡改前的魔鬼數(shù)字對(duì)應(yīng)的類型,與篡改后的魔鬼數(shù)字對(duì)應(yīng)的類型不對(duì)應(yīng),從而使檢測(cè)設(shè)備能夠識(shí)別出類型被篡改的文件。與篡改魔鬼數(shù)字相比,發(fā)送方企圖通過(guò)篡改文件結(jié)構(gòu)特征逃避檢測(cè)的實(shí)施難度要大得多,因?yàn)橹灰薷牧宋募?nèi)容中的部分?jǐn)?shù)據(jù),將很可能接收方無(wú)法恢復(fù)原始文件。因此,本發(fā)明實(shí)施例提供的文件類型識(shí)別方法能夠提高文件類型識(shí)別的準(zhǔn)確性,加強(qiáng)機(jī)密信息的安全性。實(shí)施例二發(fā)送方在企圖通過(guò)篡改待識(shí)別文件頭的魔鬼數(shù)字來(lái)逃避檢測(cè)時(shí),除了將一種文件類型的魔鬼數(shù)字修改為另一種文件類型的魔鬼數(shù)字之外,還可能并不確切地知曉文件頭中魔鬼數(shù)字的字段位置或者其他文件類型魔鬼數(shù)字具體是什么,這時(shí)發(fā)送方往往是隨意地修改文件頭中的部分字段內(nèi)容,修改后的文件頭中并未包含任意一種可識(shí)別文件類型的魔鬼數(shù)字。針對(duì)這種情況,本實(shí)施例在實(shí)施例一的基礎(chǔ)上進(jìn)行了改進(jìn),改進(jìn)后的文件類型識(shí)別方法流程圖如圖2所示。其中步驟10步驟50與實(shí)施例一類似,這里不再重復(fù)。步驟10,檢測(cè)設(shè)備從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,判斷從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字,若是,進(jìn)入步驟20,否則進(jìn)入步驟60?!獋€(gè)具體實(shí)例為原始文件為rar類型的文件,發(fā)送方對(duì)該文件頭中的魔鬼數(shù)字的字段內(nèi)容進(jìn)行篡改,篡改后的數(shù)據(jù)不是任何可識(shí)別文件類型的魔鬼數(shù)據(jù),并把篡改后的文件發(fā)送給接收方。檢測(cè)設(shè)備依照實(shí)施例一步驟10中獲得待識(shí)別文件的魔鬼數(shù)字的方式無(wú)法成功獲得待識(shí)別文件的魔鬼數(shù)字。步驟20,若能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型。步驟30,判斷所述待識(shí)別文件的數(shù)據(jù)是否符合所述魔鬼數(shù)字對(duì)應(yīng)的文件類型的結(jié)構(gòu)特征,若符合,則進(jìn)入步驟40,否則進(jìn)入步驟50。步驟40,若符合所述魔鬼數(shù)字對(duì)應(yīng)的文件類型的結(jié)構(gòu)特征,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型。步驟50,若不符合所述魔鬼數(shù)字對(duì)應(yīng)的文件類型的結(jié)構(gòu)特征,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。步驟60,若不能獲得待識(shí)別文件的魔鬼數(shù)字,則判斷是否能夠從所述數(shù)據(jù)包中提取到所述待識(shí)別文件的后綴名。若是,進(jìn)入步驟70,否則進(jìn)入步驟80。所述文件名是通過(guò)對(duì)數(shù)據(jù)包進(jìn)行深度協(xié)議解析得到的,根據(jù)預(yù)定后綴獲取策略,可以判斷文件名中是否包含后綴名,并獲得后綴名。步驟70,若能夠提取到后綴名,則從后綴名與文件類型的第二對(duì)應(yīng)關(guān)系中查找所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型,進(jìn)入步驟90。在上述實(shí)例中,檢測(cè)設(shè)備根據(jù)后綴名“rar”從所述第二對(duì)應(yīng)關(guān)系中查找到對(duì)應(yīng)的文件類型壓縮文件。步驟80,若不能提取到后綴名,則確定所述待識(shí)別文件的類型為未識(shí)別文件類型。步驟90,判斷所述第一對(duì)應(yīng)關(guān)系中是否存在從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,所述第一對(duì)應(yīng)關(guān)系中的文件類型為可識(shí)別文件類型,若是進(jìn)入步驟100,否則進(jìn)入步驟110。步驟100,若第一對(duì)應(yīng)關(guān)系中存在從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。在上述實(shí)例中,由于第一對(duì)應(yīng)關(guān)系中存在后綴名“rar”對(duì)應(yīng)的壓縮文件類型,而在步驟10中卻沒(méi)有獲得文本文件類型的魔鬼數(shù)字,即沒(méi)有獲得可識(shí)別文件類型的魔鬼數(shù)字,那么就說(shuō)明待識(shí)別文件文件頭中的魔鬼數(shù)字已被篡改。步驟110,若第一對(duì)應(yīng)關(guān)系中不存在從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,則確定所述待識(shí)別文件的類型為未識(shí)別文件類型。通過(guò)上述實(shí)施方案能夠準(zhǔn)確地確定待識(shí)別文件類型,可選地,為了能夠檢測(cè)出發(fā)送方只是單純修改后綴名的情況,進(jìn)一步提高識(shí)別篡改行為的可靠性和準(zhǔn)確度,對(duì)上述步驟40進(jìn)行了改進(jìn),如附圖3所示,步驟40進(jìn)一步包括步驟401,判斷是否能夠從所述數(shù)據(jù)包中提取到所述待識(shí)別文件的后綴名;若是進(jìn)入步驟402??蛇x地,若未提取到后綴名,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型。步驟402,從存儲(chǔ)的后綴名與文件類型的第二對(duì)應(yīng)關(guān)系中查找所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型。步驟403,將查找到的所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型與文件頭中所述魔鬼數(shù)字對(duì)應(yīng)的文件類型進(jìn)行比較,確認(rèn)二者是否一致;若比較結(jié)果一致,進(jìn)入步驟404,否則進(jìn)入步驟405。步驟404,確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型。步驟405,確定所述待識(shí)別文件的文件類型為異常類型。本發(fā)明實(shí)施例提供的文件類型的識(shí)別方法,在實(shí)施例一的基礎(chǔ)上,能夠適應(yīng)原始文件的魔鬼數(shù)字被發(fā)送方任意修改的情況,完善了文件識(shí)別的流程,擴(kuò)大了適用范圍。實(shí)施例三本發(fā)明實(shí)施例以office文件和PDF文件為例,對(duì)實(shí)施例一、實(shí)施例二中提供的文件類型識(shí)別方法進(jìn)行舉例說(shuō)明。在本實(shí)施例中,原始文件為office文件,發(fā)送方為了逃避檢測(cè),將文件頭中的魔鬼數(shù)字修改為PDF文件類型的魔鬼數(shù)字。附圖4為本發(fā)明實(shí)施例提供的文件類型識(shí)別方法的流程圖。其中各步驟與附圖2中的步驟類似,這里只對(duì)該實(shí)例中所執(zhí)行的部分步驟進(jìn)行詳細(xì)說(shuō)明,未執(zhí)行的步驟不再重Μ.ο步驟310,檢測(cè)設(shè)備從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,判斷從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字,若是,進(jìn)入步驟320。檢測(cè)設(shè)備根據(jù)各種不同的用于傳輸文件的協(xié)議的格式定義,在根據(jù)數(shù)據(jù)包中包含的特征字段確認(rèn)數(shù)據(jù)包傳輸文件之后,從數(shù)據(jù)包中提取文件信息,文件信息包括文件名、文件起始地址、數(shù)據(jù)包大小等。從文件起始地址開始,對(duì)數(shù)據(jù)流中傳輸文件的數(shù)據(jù)包的載荷內(nèi)容進(jìn)行緩存,直到緩存了32個(gè)字節(jié)為止,將緩存的數(shù)據(jù)作為文件頭。檢測(cè)設(shè)備從所述緩存數(shù)據(jù)中獲得待識(shí)別文件文件頭中的魔鬼數(shù)字“%PDF-xx%”,其中,XX為版本標(biāo)識(shí)。步驟320,若能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型。檢測(cè)設(shè)備從所述第一對(duì)應(yīng)關(guān)系中查找到魔鬼數(shù)字“%PDF-xx%"對(duì)應(yīng)的文件類型為PDF文件。步驟330,判斷所述待識(shí)別文件的數(shù)據(jù)是否符合所述魔鬼數(shù)字對(duì)應(yīng)的文件類型的結(jié)構(gòu)特征,若不符合進(jìn)入步驟350。PDF文件的結(jié)構(gòu)特征具體如附圖5所示。PDF文件的文件頭以“%PDF-XX%”開始。文件頭所在的一行偏移量之后是PDF文件的內(nèi)容部分。內(nèi)容部分是對(duì)象(標(biāo)識(shí)為obj),對(duì)象的具體格式請(qǐng)參照相關(guān)標(biāo)準(zhǔn)定義。在若干對(duì)象之后為交叉引用表,交叉引用表(標(biāo)識(shí)為xref)中保存了之前各對(duì)象的信息,例如每個(gè)對(duì)象數(shù)據(jù)存儲(chǔ)時(shí)的偏移量。若干對(duì)象和交叉引用表組成的組合體可能會(huì)重復(fù)多次。文件最后是文件追蹤體(標(biāo)識(shí)為trailer)、每個(gè)交叉引用表的存儲(chǔ)偏移量(標(biāo)識(shí)為startxref)和PDF文件結(jié)束標(biāo)記(標(biāo)識(shí)為^^EOF)。文件追蹤體用于迅速索引到交叉引用表和特殊對(duì)象。檢測(cè)設(shè)備判斷所述緩存的數(shù)據(jù)是否存在以obj為起始標(biāo)識(shí)的字符串,若不存在則說(shuō)明所述待識(shí)別文件的數(shù)據(jù)不符合PDF文件類型的結(jié)構(gòu)特征。由于原始文件是office文件,在魔鬼數(shù)字之后是0LE2的結(jié)構(gòu)體,而不是obj為起始標(biāo)識(shí)的字符串,因此待識(shí)別文件的數(shù)據(jù)不符合PDF文件類型的結(jié)構(gòu)特征。步驟350,若不符合所述魔鬼數(shù)字對(duì)應(yīng)的文件類型的結(jié)構(gòu)特征,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。在本實(shí)例中,由于所述待識(shí)別文件的數(shù)據(jù)不符合PDF文件類型的結(jié)構(gòu)特征,檢測(cè)設(shè)備輸出待識(shí)別文件的文件類型為異常類型。實(shí)施例四相應(yīng)地,本發(fā)明實(shí)施例還提供了一種文件類型識(shí)別裝置,如圖6所示,該裝置包括第一測(cè)試單元601、第一查找單元602、第一判斷單元603和第一確定單元604,具體如下第一測(cè)試單元601,用于從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,測(cè)試從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字;第一查找單元602,用于若第一測(cè)試單元601能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型;第一判斷單元603,用于判斷所述待識(shí)別文件的數(shù)據(jù)是否符合第一查找單元602查找到的所述文件類型的數(shù)據(jù)結(jié)構(gòu)特征;第一確定單元604,用于若第一判斷單元603判斷結(jié)果為符合,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若判斷結(jié)果為不符合,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。進(jìn)一步地,如附圖7所示,附圖6所述裝置中還包括第二測(cè)試單元605,用于若第一測(cè)試單元601不能獲得待識(shí)別文件的魔鬼數(shù)字,則測(cè)試通過(guò)協(xié)議解析是否能夠從所述數(shù)據(jù)包中提取到所述待識(shí)別文件的后綴名;第二查找單元606,用于若第二測(cè)試單元605能夠提取到后綴名,則從后綴名與文件類型的第二對(duì)應(yīng)關(guān)系中查找所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型;第二判斷單元607,用于判斷所述第一對(duì)應(yīng)關(guān)系中是否存在第二查找單元606從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,所述第一對(duì)應(yīng)關(guān)系中的文件類型為可識(shí)別文件類型;第二確定單元608,用于若第二判斷單元607判斷結(jié)果為存在,則確定所述待識(shí)別文件的文件類型為異常類型;第三確定單元609,用于若第二測(cè)試單元605不能提取后綴名、或者第一對(duì)應(yīng)關(guān)系中不存在從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,則確定所述待識(shí)別文件的類型為未識(shí)別文件類型??蛇x地,請(qǐng)參照附圖8,所述第一確定單元604包括測(cè)試子單元801,用于在第一判斷單元603判斷結(jié)果為符合時(shí),測(cè)試是否能夠從所述數(shù)據(jù)包中提取到所述待識(shí)別文件的后綴名;查找子單元802,用于若測(cè)試子單元801能夠提取到所述待識(shí)別文件的后綴名,則從存儲(chǔ)的后綴名與文件類型的第二對(duì)應(yīng)關(guān)系中查找所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型;比較子單元803,用于將查找子單元802查找到的所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型與文件頭中所述魔鬼數(shù)字對(duì)應(yīng)的文件類型進(jìn)行比較;確定子單元804,用于若比較子單元803比較結(jié)果一致,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若比較結(jié)果不一致,則確定所述待識(shí)別文件的文件類型為異常類型。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。權(quán)利要求1.一種文件類型識(shí)別方法,其特征在于,包括從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,判斷從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字;若能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型;判斷所述待識(shí)別文件的數(shù)據(jù)是否符合所述文件類型的數(shù)據(jù)結(jié)構(gòu)特征;若符合,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若不符合,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。2.如權(quán)利要求1所述的方法,其特征在于,所述從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字后,還包括若不能獲得待識(shí)別文件的魔鬼數(shù)字,則判斷通過(guò)協(xié)議解析是否能夠從所述數(shù)據(jù)包中提取到所述待識(shí)別文件的后綴名;若能夠提取到后綴名,則從后綴名與文件類型的第二對(duì)應(yīng)關(guān)系中查找所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型;判斷所述第一對(duì)應(yīng)關(guān)系中是否存在從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,所述第一對(duì)應(yīng)關(guān)系中的文件類型為可識(shí)別文件類型;若存在,則確定所述待識(shí)別文件的文件類型為異常類型;若不能提取后綴名、或者第一對(duì)應(yīng)關(guān)系中不存在從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,則確定所述待識(shí)別文件的類型為未識(shí)別文件類型。3.如權(quán)利要求1所述的方法,其特征在于,所述符合,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型,包括判斷是否能夠從所述數(shù)據(jù)包中提取到所述待識(shí)別文件的后綴名;若能夠提取到所述待識(shí)別文件的后綴名,則從存儲(chǔ)的后綴名與文件類型的第二對(duì)應(yīng)關(guān)系中查找所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型;將查找到的所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型與文件頭中所述魔鬼數(shù)字對(duì)應(yīng)的文件類型進(jìn)行比較;若比較結(jié)果一致,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若比較結(jié)果不一致,則確定所述待識(shí)別文件的文件類型為異常類型。4.如權(quán)利要求1-3任一所述的方法,其特征在于,所述從傳輸?shù)臄?shù)據(jù)包中獲得待識(shí)別文件頭,包括接收到傳輸?shù)臄?shù)據(jù)包后,通過(guò)協(xié)議解析獲得該數(shù)據(jù)包的載荷內(nèi)容,判斷所述載荷內(nèi)容中是否包含文件頭標(biāo)識(shí);若是,則確定該數(shù)據(jù)包攜帶的內(nèi)容是文件,并根據(jù)文件頭標(biāo)識(shí)所指示的文件起始地址,對(duì)該數(shù)據(jù)包載荷內(nèi)容中的文件數(shù)據(jù)進(jìn)行緩存;判斷已緩存的文件數(shù)據(jù)是否已達(dá)到預(yù)定大小,若是將已緩存的文件數(shù)據(jù)作為所述待識(shí)別文件的文件頭,否則繼續(xù)緩存同一數(shù)據(jù)流中后續(xù)數(shù)據(jù)包載荷內(nèi)容中的文件數(shù)據(jù)。5.如權(quán)利要求4所述的方法,其特征在于,所述判斷從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字,包括將已緩存的數(shù)據(jù)依次分別與各種可識(shí)別文件類型對(duì)應(yīng)的魔鬼數(shù)字進(jìn)行比較;若存在比較結(jié)果一致的魔鬼數(shù)字,則將所述比較結(jié)果一致的魔鬼數(shù)字作為所述待識(shí)別文件頭中的魔鬼數(shù)字;否則,確定不能獲得待識(shí)別文件的魔鬼數(shù)字。6.如權(quán)利要求4所述的方法,其特征在于,所述預(yù)定大小為2字節(jié)至32字節(jié)。7.如權(quán)利要求1、2、3、5或6所述的方法,其特征在于,所述確定所述待識(shí)別文件的文件類型為異常類型之前,還包括允許所述數(shù)據(jù)包所在的數(shù)據(jù)流通過(guò);所述確定所述待識(shí)別文件的文件類型為異常類型之后,還包括阻斷所述數(shù)據(jù)包所在的數(shù)據(jù)流通過(guò)。8.一種文件類型識(shí)別裝置,其特征在于,包括第一測(cè)試單元,用于從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,測(cè)試從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字;第一查找單元,用于若第一測(cè)試單元能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型;第一判斷單元,用于判斷所述待識(shí)別文件的數(shù)據(jù)是否符合所述文件類型的數(shù)據(jù)結(jié)構(gòu)特征;第一確定單元,用于若第一判斷單元判斷結(jié)果為符合,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若判斷結(jié)果為不符合,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。9.如權(quán)利要求8所述的裝置,其特征在于,還包括第二測(cè)試單元,用于若第一測(cè)試單元不能獲得待識(shí)別文件的魔鬼數(shù)字,則測(cè)試通過(guò)協(xié)議解析是否能夠從所述數(shù)據(jù)包中提取到所述待識(shí)別文件的后綴名;第二查找單元,用于若第二測(cè)試單元能夠提取到后綴名,則從后綴名與文件類型的第二對(duì)應(yīng)關(guān)系中查找所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型;第二判斷單元,用于判斷所述第一對(duì)應(yīng)關(guān)系中是否存在從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,所述第一對(duì)應(yīng)關(guān)系中的文件類型為可識(shí)別文件類型;第二確定單元,用于若第二判斷單元判斷結(jié)果為存在,則確定所述待識(shí)別文件的文件類型為異常類型;第三確定單元,用于若第二測(cè)試單元不能提取后綴名、或者第一對(duì)應(yīng)關(guān)系中不存在從第二對(duì)應(yīng)關(guān)系中查找到得文件類型,則確定所述待識(shí)別文件的類型為未識(shí)別文件類型。10.如權(quán)利要求8或9所述的裝置,其特征在于,所述第一確定單元包括測(cè)試子單元,用于在第一判斷單元判斷結(jié)果為符合時(shí),測(cè)試是否能夠從所述數(shù)據(jù)包中提取到所述待識(shí)別文件的后綴名;查找子單元,用于若測(cè)試子單元能夠提取到所述待識(shí)別文件的后綴名,則從存儲(chǔ)的后綴名與文件類型的第二對(duì)應(yīng)關(guān)系中查找所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型;比較子單元,用于將查找子單元查找到的所述待識(shí)別文件的后綴名對(duì)應(yīng)的文件類型與文件頭中所述魔鬼數(shù)字對(duì)應(yīng)的文件類型進(jìn)行比較;確定子單元,用于若比較結(jié)果一致,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若比較結(jié)果不一致,則確定所述待識(shí)別文件的文件類型為異常類型。全文摘要本發(fā)明公開了一種文件類型識(shí)別方法及文件類型識(shí)別裝置,用以現(xiàn)有技術(shù)在發(fā)送方對(duì)傳輸?shù)奈募M(jìn)行篡改時(shí),不能有效地識(shí)別出文件類型的問(wèn)題。該方法包括從傳輸?shù)臄?shù)據(jù)包中獲取待識(shí)別文件的文件頭,判斷從所述文件頭中是否能獲得待識(shí)別文件的魔鬼數(shù)字;若能獲得待識(shí)別文件的魔鬼數(shù)字,則從文件類型與魔鬼數(shù)字的第一對(duì)應(yīng)關(guān)系中查找所述文件頭中的魔鬼數(shù)字對(duì)應(yīng)的文件類型;判斷所述待識(shí)別文件的數(shù)據(jù)是否符合所述文件類型的數(shù)據(jù)結(jié)構(gòu)特征;若符合,則確定所述待識(shí)別文件的文件類型為文件頭中魔鬼數(shù)字對(duì)應(yīng)的文件類型;若不符合,則確定所述待識(shí)別文件的文件類型為異常類型,所述異常類型用于表明所述待識(shí)別文件為類型被篡改的文件。文檔編號(hào)H04L29/06GK102571767SQ20111043935公開日2012年7月11日申請(qǐng)日期2011年12月24日優(yōu)先權(quán)日2011年12月24日發(fā)明者李世光,王振輝,蔣武,阮玲宏申請(qǐng)人:成都市華為賽門鐵克科技有限公司