本發(fā)明涉及一種數(shù)據(jù)處理技術(shù),具體涉及一種識別文件格式及對應(yīng)完整性的方法和設(shè)備。
背景技術(shù):
文件格式是指電腦為了存儲信息而使用的對信息的特殊編碼方式,是用于識別內(nèi)部儲存的資料。對于硬盤機或任何電腦存儲來說,有效的信息只有0和1兩種。識別這些二進制數(shù)到底表示的是怎樣的文件,是通過文件本身組織起來的方式即文件格式來進行的。文件格式時組織文件的規(guī)范。每一種文件格式通常會有一種或多種擴展名可以用來識別,但也可能沒有擴展名。
現(xiàn)有操作系統(tǒng)對于文件格式的識別大多是根據(jù)文件名后綴識別文件類型,如windows系統(tǒng);而在linux以及unix系統(tǒng)有file命令可以根據(jù)文件magic識別文件類型。但對于文件完整性并有統(tǒng)一的工具能夠檢測多種文件格式的完整性,而且file對于文件類型檢測也有其局限性。
技術(shù)實現(xiàn)要素:
為了解決上述問題,本發(fā)明提供了一種識別文件格式及對應(yīng)完整性的方法。本發(fā)明提供的一種識別文件格式及對應(yīng)完整性的方法,根據(jù)實際需求,提供了一個不單純依賴文件擴展名,而是根據(jù)實際文件二進制內(nèi)容以及結(jié)構(gòu)特征來識別文件類型,并能快速判斷文件完整性,進一步的使其他程序可以做文件后續(xù)處理。
本發(fā)明采用的技術(shù)方案如下:
一種識別文件格式的方法,包括如下步驟:
S11.建立文件屬性數(shù)據(jù)庫,所述文件屬性數(shù)據(jù)庫包括不同文件格式對應(yīng)的屬性以及與不同文件格式的屬性對應(yīng)的權(quán)重值;
S12.獲取待識別文件的文件屬性;
S13.將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中存儲的每種文件格式的文件屬性進行比較,并根據(jù)相應(yīng)的權(quán)重值計算待識別文件與每種文件格式的匹配度;
S14.比較S13中得到的各個匹配度值,最高的匹配度值對應(yīng)的文件格式即為待識別文件的文件格式。
上述的識別文件格式的方法,其中,所述步驟S12包括如下內(nèi)容:
S121.判斷待識別文件是否有文件頭信息,如果有,至步驟S122,如果無,至步驟S123;
S121.獲取待識別文件的文件頭信息,通過該文件頭信息獲取待識別文件的文件屬性;
S123.直接獲取待識別文件的文件屬性。
上述的識別文件格式的方法,其中,還包括如下步驟:
S15.當(dāng)步驟S14得到的文件格式為包含子類型的格式時,對待識別文件做二次檢測。
上述的識別文件格式的方法,其中,所述包含子類型的格式為基于其他格式進行封裝的新格式。例如html即為xml的子類型。當(dāng)S14得出的文件格式為諸如zip、xml、txt等包含子類型的格式時,對待識別文件做二次檢測;包含子類型的格式為基于其他格式進行封裝的新格式。
上述的識別文件格式的方法,其中,還包括步驟S16,當(dāng)步驟S14得出的文件格式為多媒體文件格式時,對待識別文件進行打開驗證。
上述的識別文件格式的方法,其中,還包括步驟S16,當(dāng)步驟S15得出的文件格式為多媒體文件格式時,對待識別文件進行打開驗證。
上述的識別文件格式的方法,其中,對所述多媒體文件格式使用FFMPEG進行打開驗證。打開驗證的驗證結(jié)果為:是否能夠正常打開,并獲取相應(yīng)的多媒體信息。
目的是再次進行對多媒體格式進行確認。因為某些特殊的文本文件的起始文本內(nèi)容可能恰好與文件頭標志相符造成識別文件類型檢測誤報。
上述的識別文件格式的方法,其中,所述步驟S13.包括如下步驟:
S131.將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中的第N種文件格式的文件屬性逐項比對,如果內(nèi)容一致,取該屬性對應(yīng)的權(quán)重值,如果內(nèi)容不一致,則該權(quán)重值為0,最后計算待識別文件與第N種文件格式的匹配度,所述匹配度為各個屬性對應(yīng)的權(quán)重值之和;
S132.將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中的第N+1種文件格式的文件屬性逐項比對,如果內(nèi)容一致,取該屬性對應(yīng)的權(quán)重值,如果內(nèi)容不一致,則該權(quán)重值為0,最后計算待識別文件與第N+1種文件格式的匹配度,所述匹配度為各個屬性對應(yīng)的權(quán)重值之和。
上述的識別文件格式的方法,其中,所述步驟S14.包括如下步驟:
S141.比較步驟S131與步驟S132中得到的不同文件格式對應(yīng)的匹配度,取較大值;
S142.當(dāng)步驟S141中所得的較大值大于或者等于各個屬性總權(quán)重值之和的50%時,該匹配度對應(yīng)的文件格式即為待識別文件格式。
上述的識別文件格式的方法,其中,所述文件格式屬性的種類包括:magic、mime、擴展名。
上述的識別文件格式的方法,其中,還包括步驟S0,對私有文件格式驗證識別。
上述的識別文件格式的方法,其中,所述私有文件格式為自定義的確定文件類型的file命令使用magic規(guī)則文件來定義文件類型,所述步驟S0具體包括如下步驟:
S011.建立私有文件格式屬性數(shù)據(jù)庫,將私有文件格式各個屬性存儲至所述私有文件格式屬性數(shù)據(jù)庫中;
S012.將待識別文件的文件屬性與私有文件格式的各個屬性進行比較,如果比較結(jié)果一致,則輸出該私有文件格式,如果比較結(jié)果不一致,至步驟S11。
上述的識別文件格式的方法,其中,所述私有文件格式為用戶自定義的文件規(guī)范,所述步驟S0包括如下步驟:
S021.根據(jù)所述用戶自定義的文件規(guī)范制定對應(yīng)的解析文件格式的判斷方法;
S022.根據(jù)步驟S021的方法判斷待識別文件的文件格式是否為私有文件的文件格式,如果是,則輸出該私有文件格式,如果否,至步驟S11。
一種識別文件完整性的方法,包括如下步驟:
S10.識別待識別文件的文件格式;
S21,判斷待識別文件的文件尾信息是否存在;
S22.獲取待識別文件的文件尾信息;
S23,當(dāng)所述文件尾信息存在時,根據(jù)待識別文件的文件格式對應(yīng)的規(guī)范判斷文件完整結(jié)構(gòu)是否存在于文件尾信息中,如果存在,則該文件完整,如果不存在,則該文件不完整。
一種識別文件格式的設(shè)備,包括:
文件屬性數(shù)據(jù)庫裝置,用以存儲不同文件格式對應(yīng)的屬性以及與不同文件格式的屬性對應(yīng)的權(quán)重值;
獲取裝置,用以獲取待識別文件的文件屬性;
對比計算裝置,將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中存儲的每種文件格式的文件屬性進行比較,并根據(jù)相應(yīng)的權(quán)重值計算待識別文件與每種文件格式的匹配度;
輸出裝置,用以比較對比計算裝置中得到的各個匹配度值,最高的匹配度值對應(yīng)的文件格式即為待識別文件的文件格式。
上述的識別文件格式的設(shè)備,其中,所述獲取裝置包括:
文件頭判斷模塊,用以判斷待識別文件是否有文件頭信息;
第一文件屬性獲取模塊,用以獲取待識別文件的文件頭信息,并通過該文件頭信息獲取待識別文件的文件屬性;
第二文件屬性獲取模塊,用以直接獲取待識別文件的文件屬性。
上述的識別文件格式的設(shè)備,其中,還包括二次檢測裝置,當(dāng)所述輸出裝置輸出的文件格式為包含子類型的格式時,所述二次檢測裝置用以對待識別文件做二次檢測。
上述的識別文件格式的設(shè)備,其中,所述包含子類型的格式為基于其他格式進行封裝的新格式。例如html即為xml的子類型。
上述的識別文件格式的設(shè)備,其中,還包括打開驗證裝置,當(dāng)輸出裝置輸出的文件格式為多媒體文件格式時,所述打開驗證裝置用以對待識別文件進行打開驗證。
上述的識別文件格式的設(shè)備,其中,還包括打開驗證裝置,當(dāng)二次檢測裝置輸出的文件格式為多媒體文件格式時,所述打開驗證裝置用以對待識別文件進行打開驗證。
上述的識別文件格式的設(shè)備,其中,所述打開驗證裝置通過FFMPEG對所述多媒體文件格式的文件進行打開驗證。打開驗證的驗證結(jié)果為:是否能夠正常打開,并獲取相應(yīng)的多媒體信息。
上述的識別文件格式的設(shè)備,其中,所述對比計算裝置包括:
第一計算模塊,用以將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中的第N種文件格式的文件屬性逐項比對,如果內(nèi)容一致,取該屬性對應(yīng)的權(quán)重值,如果內(nèi)容不一致,則該權(quán)重值為0,最后計算待識別文件與第N種文件格式的匹配度,所述匹配度為各個屬性對應(yīng)的權(quán)重值之和;
第二計算模塊,用以將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中的第N+1種文件格式的文件屬性逐項比對,如果內(nèi)容一致,取該屬性對應(yīng)的權(quán)重值,如果內(nèi)容不一致,則該權(quán)重值為0,最后計算待識別文件與第N+1種文件格式的匹配度,所述匹配度為各個屬性對應(yīng)的權(quán)重值之和。
上述的識別文件格式的設(shè)備,其中,所述輸出裝置包括:
比較模塊:用以比較第一計算模塊與第二計算模塊中得到的不同文件格式對應(yīng)的匹配度,取較大值;
判斷輸出模塊,用以判斷當(dāng)比較模塊中所得的較大值大于或者等于各個屬性總權(quán)重值之和的50%時,該匹配度對應(yīng)的文件格式即為待識別文件格式。
上述的識別文件格式的設(shè)備,其中,所述文件格式屬性的種類包括:magic、mime、擴展名。
上述的識別文件格式的設(shè)備,其中,還包括私有文件格式驗證裝置,用以對私有文件格式驗證識別。
上述的識別文件格式的設(shè)備,其中,所述私有文件格式為自定義的確定文件類型的file命令使用magic規(guī)則文件來定義文件類型,所述私有文件格式驗證裝置包括:
私有文件格式屬性數(shù)據(jù)庫模塊,用以存儲私有文件格式各個屬性;
第一私有文件格式屬性判斷模塊,用以將待識別文件的文件屬性與私有文件格式的各個屬性進行比較,判斷比較結(jié)果是否一致。
上述的識別文件格式的設(shè)備,其中,所述私有文件格式為用戶自定義的文件規(guī)范,所述私有文件格式驗證裝置包括:
私有文件格式屬性規(guī)則模塊,用以存儲根據(jù)所述用戶自定義的文件規(guī)范制定對應(yīng)的解析文件格式的判斷方法;
第二私有文件格式屬性判斷模塊,用以通過私有文件格式屬性規(guī)則模塊判斷待識別文件的文件格式是否為私有文件的文件格式。
一種識別文件完整性的設(shè)備,包括:
識別文件格式的設(shè)備,用以識別待識別文件的文件格式;
文件尾判斷裝置,用以判斷待識別文件的文件尾信息是否存在;
文件尾獲取裝置,用以獲取待識別文件的文件尾信息;
文件完整結(jié)構(gòu)查詢裝置,用以根據(jù)待識別文件的文件格式對應(yīng)的規(guī)范判斷文件完整結(jié)構(gòu)是否存在于文件尾信息中,如果存在,則該文件完整,如果不存在,則該文件不完整。所述待識別文件的文件格式由識別文件格式的設(shè)備識別得出。
因為文件名擴展名可以隨意修改,但是并不能改變文件的文件格式本身,所以,與現(xiàn)有技術(shù)相比,本發(fā)明通過獲取待識別文件的magic、mime、encoding以及擴展名這些屬性的屬性值綜合判斷待識別文件的文件格式。而不是僅僅通過擴展名來判斷文件格式,從而提高的識別結(jié)果的準確性。進一步的,對每一種文件格式的屬性賦予不同的權(quán)重值,將待識別文件的文件屬性與數(shù)據(jù)庫中的每種文件格式對應(yīng)的屬性進行比較,從而計算出待識別文件與每一種看文件格式的匹配度,再比較匹配度大小,取最高值對應(yīng)的文件格式即為待識別文件的真實文件格式。從而更進一步的提高了識別結(jié)果的準確性,繼而可選擇更加支持與該文件格式對應(yīng)的應(yīng)用程度對該文件進行后續(xù)的閱讀、修改操作。進一步的,當(dāng)識別出一個文件的真正的文件格式后,每種文件格式都擁有與其匹配的文件完整結(jié)構(gòu),如果在文件尾信息中找到該文件完整結(jié)構(gòu),則待識別文件為完整文件,如果在文件尾信息中不能找到該文件完整結(jié)構(gòu),則待識別文件為不完整文件。所以識別一件文件是否完整,是基于其文件格式的準確性,本發(fā)明在基于識別出文件格式之后,進一步的識別出文件的完整性,解決了確定文件類型的file命令中對于文件類型檢測的局限性問題。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一種識別文件格式的設(shè)備的結(jié)構(gòu)示意圖;
圖2是本發(fā)明一種識別文件格式的設(shè)備的私有文件格式驗證裝置的一種實施例的結(jié)構(gòu)示意圖;
圖3是本發(fā)明一種識別文件格式的設(shè)備的私有文件格式驗證裝置的另一種實施例的結(jié)構(gòu)示意圖;
圖4是本發(fā)明一種識別文件格式的設(shè)備的獲取裝置的一種實施例的結(jié)構(gòu)示意圖;
圖5是本發(fā)明一種識別文件格式的設(shè)備的對比計算裝置的一種實施例的結(jié)構(gòu)示意圖;
圖6是本發(fā)明一種識別文件格式的設(shè)備的輸出裝置的一種實施例的結(jié)構(gòu)示意圖;
圖7是本發(fā)明一種識別文件完整性的設(shè)備的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例
如圖1所示,一種識別文件格式的設(shè)備1,包括文件屬性數(shù)據(jù)庫裝置11、獲取裝置12、對比計算裝置13、輸出裝置14、二次檢測裝置15、打開驗證裝置16,私有文件格式驗證裝置17,其中:
文件屬性數(shù)據(jù)庫裝置11,用以存儲不同文件格式對應(yīng)的屬性以及與不同文件格式的屬性對應(yīng)的權(quán)重值;文件格式屬性的種類包括:magic、mime、擴展名。
獲取裝置12,用以獲取待識別文件的文件屬性。
對比計算裝置13,將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中存儲的每種文件格式的文件屬性進行比較,并根據(jù)相應(yīng)的權(quán)重值計算待識別文件與每種文件格式的匹配度。
輸出裝置14,用以比較對比計算裝置中得到的各個匹配度值,最高的匹配度值對應(yīng)的文件格式即為待識別文件的文件格式。
二次檢測裝置15,當(dāng)所述輸出裝置輸出的文件格式為包含子類型的格式時,所述二次檢測裝置用以對待識別文件做二次檢測。所述包含子類型的格式為基于其他格式進行封裝的新格式。例如html即為xml的子類型。
打開驗證裝置16,當(dāng)輸出裝置或者二次檢測裝置輸出的文件格式為多媒體文件格式時,所述打開驗證裝置通過FFMPEG對所述多媒體文件格式的文件進行打開驗證。打開驗證的驗證結(jié)果為:是否能夠正常打開,并獲取相應(yīng)的多媒體信息。本領(lǐng)域技術(shù)人員應(yīng)理解FFMPEG是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機程序。
私有文件格式驗證裝置17,用以對私有文件格式驗證識別。因為私有文件格式裝置17在實際應(yīng)用中是根據(jù)用戶需求自定義制定的文件格式,因此,當(dāng)將本發(fā)明用戶該用戶環(huán)境中是,優(yōu)先使用私有文件格式驗證裝置17識別待識別文件的文件格式,當(dāng)私有文件格式驗證裝置17無法識別待識別文件的文件格式時,再對其進行其他文件格式識別。私有文件格式驗證裝置17是獨立于其他文件格式的驗證裝置的。
如圖2所示,在一實施例中,當(dāng)私有文件格式為自定義的確定文件類型的file命令使用magic規(guī)則文件來定義文件類型,所述私有文件格式驗證裝置17包括:
私有文件格式屬性數(shù)據(jù)庫模塊171,用以存儲私有文件格式各個屬性;
第一私有文件格式屬性判斷模塊172,用以將待識別文件的文件屬性與私有文件格式的各個屬性進行比較,判斷比較結(jié)果是否一致。
如圖3所示,在另一實施例中,當(dāng)私有文件格式為用戶自定義的文件規(guī)范,所述私有文件格式驗證裝置包括:
私有文件格式屬性規(guī)則模塊173,用以存儲根據(jù)所述用戶自定義的文件規(guī)范制定對應(yīng)的解析文件格式的判斷方法;
第二私有文件格式屬性判斷模塊174,用以通過私有文件格式屬性規(guī)則模塊判斷待識別文件的文件格式是否為私有文件的文件格式。
如圖4所示,上述的獲取裝置12包括文件頭判斷模塊121、第一文件屬性獲取模塊122、第二文件屬性獲取模塊123,其中:
文件頭判斷模塊121,用以判斷待識別文件是否有文件頭信息;
第一文件屬性獲取模塊122,用以獲取待識別文件的文件頭信息,并通過該文件頭信息獲取待識別文件的文件屬性;
第二文件屬性獲取模塊123,用以直接獲取待識別文件的文件屬性。
相對于沒有文件頭信息直接獲取文件的文件屬性,從文件頭信息中獲取到的文件屬性比較準確。
如圖5所示,上述對比計算裝置13包括第一計算模塊131、第二計算模塊132,其中:
第一計算模塊131,用以將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中的第N種文件格式的文件屬性逐項比對,如果內(nèi)容一致,取該屬性對應(yīng)的權(quán)重值,如果內(nèi)容不一致,則該權(quán)重值為0,最后計算待識別文件與第N種文件格式的匹配度,所述匹配度為各個屬性對應(yīng)的權(quán)重值之和;
第二計算模塊132,用以將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中的第N+1種文件格式的文件屬性逐項比對,如果內(nèi)容一致,取該屬性對應(yīng)的權(quán)重值,如果內(nèi)容不一致,則該權(quán)重值為0,最后計算待識別文件與第N+1種文件格式的匹配度,所述匹配度為各個屬性對應(yīng)的權(quán)重值之和。
如圖6所示,上述輸出裝置14包括比較模塊141、判斷輸出模塊142,其中:
比較模塊141:用以比較第一計算模塊與第二計算模塊中得到的不同文件格式對應(yīng)的匹配度,取較大值;
判斷輸出模塊142,用以判斷當(dāng)比較模塊中所得的較大值大于或者等于各個屬性總權(quán)重值之和的50%時,該匹配度對應(yīng)的文件格式即為待識別文件格式。
一種識別文件格式的方法,包括如下步驟:
步驟S0,對私有文件格式驗證識別。
當(dāng)所述私有文件格式為自定義的確定文件類型的file命令使用magic規(guī)則文件來定義文件類型,所述步驟S0具體包括如下步驟:
S011.建立私有文件格式屬性數(shù)據(jù)庫,將私有文件格式各個屬性存儲至所述私有文件格式屬性數(shù)據(jù)庫中;
S012.將待識別文件的文件屬性與私有文件格式的各個屬性進行比較,如果比較結(jié)果一致,則輸出該私有文件格式,如果比較結(jié)果不一致,至步驟S11。
當(dāng)所述私有文件格式為用戶自定義的文件規(guī)范,所述步驟S0包括如下步驟:
S021.根據(jù)所述用戶自定義的文件規(guī)范制定對應(yīng)的解析文件格式的判斷方法;
S022.根據(jù)步驟S021的方法判斷待識別文件的文件格式是否為私有文件的文件格式,如果是,則輸出該私有文件格式,如果否,至步驟S11。
S11.建立文件屬性數(shù)據(jù)庫,所述文件屬性數(shù)據(jù)庫包括不同文件格式對應(yīng)的屬性以及與不同文件格式的屬性對應(yīng)的權(quán)重值;
在此,文件屬性包括magic、mime、擴展名。由于文件擴展名容易被更改,但是,并不改變文件數(shù)據(jù)本身,因此,在賦予權(quán)重值時,優(yōu)選的將擴展名的權(quán)重取值較低。對文件格式的文件屬性統(tǒng)一賦予權(quán)重值,例如,將文件格式的文件屬性中的magic賦予權(quán)重值3、mime賦予權(quán)重值3,擴展名賦予權(quán)重值1;對于特殊的文件格式,做權(quán)重值的調(diào)整。即將文件屬性不具有唯一性的文件屬性的權(quán)重值調(diào)低。以.srt文件為例,這是一種字幕文件類型,mime=text/plain,這個屬性完全不具有特殊性,因為txt類文本mime都是這個,所以針對.srt類型對mime權(quán)重值調(diào)整為1,將擴展名srt的權(quán)重值調(diào)整為2,將magic的權(quán)重值調(diào)整為0。
在此,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解為了支持數(shù)據(jù)庫的運行,文件屬性數(shù)據(jù)庫中除了包括magic、mime、擴展名外,還應(yīng)當(dāng)包含但不限于包含:encoding即編碼,自定義輔助程序以及使用方法,這些用于識別文件類型。在這些屬性之外還有類型的其他屬性,但不是用于識別文件類型,而只是與文件類型綁定的類型信息.其他屬性如下:類型名稱(唯一),相關(guān)程序(如QuickTime Player),分類(如文檔,視頻,音頻等),應(yīng)用平臺(如跨平臺,windows,類unix,MacOS,Android等),格式基本描述信息(如cpp:c++source code)等。
S12.獲取待識別文件的文件屬性,具體包括如下步驟:
S121.判斷待識別文件是否有文件頭信息,如果有,至步驟S122,如果無,至步驟S123;
S121.獲取待識別文件的文件頭信息,通過該文件頭信息獲取待識別文件的文件屬性;
S123.直接獲取待識別文件的文件屬性。
S13.將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中存儲的每種文件格式的文件屬性進行比較,并根據(jù)相應(yīng)的權(quán)重值計算待識別文件與每種文件格式的匹配度;具體如下:
S131.將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中的第N種文件格式的文件屬性逐項比對,如果內(nèi)容一致,取該屬性對應(yīng)的權(quán)重值,如果內(nèi)容不一致,則該權(quán)重值為0,最后計算待識別文件與第N種文件格式的匹配度,所述匹配度為各個屬性對應(yīng)的權(quán)重值之和;
S132.將待識別文件的文件屬性與文件屬性數(shù)據(jù)庫中的第N+1種文件格式的文件屬性逐項比對,如果內(nèi)容一致,取該屬性對應(yīng)的權(quán)重值,如果內(nèi)容不一致,則該權(quán)重值為0,最后計算待識別文件與第N+1種文件格式的匹配度,所述匹配度為各個屬性對應(yīng)的權(quán)重值之和。
例如一個待識別文件xxx.txt,其三個屬性magic=text,mime=text/plain,擴展名=txt。
數(shù)據(jù)庫中,srt類型的屬性是mime=text/plain,擴展名=srt,由前所述,又將mime的權(quán)重值調(diào)為1,擴展名的權(quán)重值調(diào)為2,magic的權(quán)重值調(diào)為0,則將待識別文件xxx.txt的三個屬性與數(shù)據(jù)可中srt類型的三個屬性匹配,mime相同取值1,maigic取值0,擴展名不相同,取值0,所以待識別文件xxx.txt對類型srt的匹配度為1+0+0=1,也就是匹配的權(quán)值之和。
S14.比較S13中得到的各個匹配度值,最高的匹配度值對應(yīng)的文件格式即為待識別文件的文件格式;具體如下:
S141.比較步驟S131與步驟S132中得到的不同文件格式對應(yīng)的匹配度,取較大值;
S142.當(dāng)步驟S141中所得的較大值大于或者等于各個屬性總權(quán)重值之和的50%時,該匹配度對應(yīng)的文件格式即為待識別文件格式。
匹配度最高對應(yīng)的文件格式即為待識別文件的文件格式。當(dāng)匹配度<3時,則在這一步驟認為待匹配文件不可能是這個類型,當(dāng)匹配度<5并且>=3時,則認為待匹配文件是該類型文件,如果匹配度>=5時則認為待匹配文件就是該類型的文件。
S15.當(dāng)步驟S14得到的文件格式為包含子類型的格式時,對待識別文件做二次檢測;優(yōu)選的,二次檢測可通過文件屬性encoding即編碼來完成。
所述包含子類型的格式為基于其他格式進行封裝的新格式。例如html即為xml的子類型。當(dāng)S14得出的文件格式為諸如zip、xml、txt等包含子類型的格式時,對待識別文件做二次檢測;包含子類型的格式為基于其他格式進行封裝的新格式。針對不同的包含子類型的格式的文件格式的二次檢測方法不同,需要針對性制定解析方法,再次在數(shù)據(jù)庫中作對應(yīng)的處理驗證,例如當(dāng)步驟S14得到的文件格式為ZIP類型時,通過使用minizip庫提取ZIP包目錄。
文件屬性信息的獲取中的擴展名通常權(quán)值比較低,因為其確實不能表述一個文件的類型,但有些格式諸如txt大多數(shù)子類型,在不考慮其內(nèi)容具體特征的前提下,通常是通過擴展名確定其格式的,因為好多txt的子類型都沒有嚴格統(tǒng)一的規(guī)范,尤其是源代碼文件,如果沒有文件頭包含或解析器等一些特征甚至不能確定是不是代碼。
S16,當(dāng)步驟S14或者S15得出的文件格式為多媒體文件格式時,使用FFMPEG進行打開驗證,打開驗證的驗證結(jié)果為:是否能夠正常打開,并獲取相應(yīng)的多媒體信息。避免因為文件magic屬性沖突導(dǎo)致類型判斷錯誤,例如,多媒體文件嘗試提取播放時長信息或者使用播放器打開。
如圖7所示,一種識別文件完整性的設(shè)備2,包括識別文件格式的設(shè)備1、文件尾判斷裝置21、文件尾獲取裝置22、文件完整結(jié)構(gòu)查詢裝置23,其中:
識別文件格式的設(shè)備1,用以識別待識別文件的文件格式;
文件尾判斷裝置21,用以判斷待識別文件的文件尾信息是否存在;
文件尾獲取裝置22,用以獲取待識別文件的文件尾信息;
文件完整結(jié)構(gòu)查詢裝置23,用以根據(jù)待識別文件的文件格式對應(yīng)的規(guī)范判斷文件完整結(jié)構(gòu)是否存在于文件尾信息中,如果存在,則該文件完整,如果不存在,則該文件不完整。所述待識別文件的文件格式由識別文件格式的設(shè)備識別得出。
一種識別文件完整性的方法,包括如下步驟:
S10.識別待識別文件的文件格式;
S21,判斷待識別文件的文件尾信息是否存在;
S22.獲取待識別文件的文件尾信息;
S23,當(dāng)所述文件尾信息存在時,根據(jù)待識別文件的文件格式對應(yīng)的規(guī)范判斷文件完整結(jié)構(gòu)是否存在于文件尾信息中,如果存在,則該文件完整,如果不存在,則該文件不完整。例如,如果文件是PDF,那就判斷文件尾信息是否包含“%%EOF”這一文件完整結(jié)構(gòu)來判文件是否正常結(jié)束;如果未見是ZIP或者其子類型,就判斷文件尾信息是否有完整的EOCD(End of central directory)這一文件完整結(jié)構(gòu),并驗證其結(jié)構(gòu)的有效性。
本發(fā)明使得文件類型的識別更加統(tǒng)一與規(guī)范化,同時避免了單純使用文件某些方面特征判斷文件屬性帶來的識別偏差,并能快速檢查文件的完整性。這個功能對于后續(xù)數(shù)據(jù)挖掘而進行的文件內(nèi)容和專有屬性提取是必須的。
需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(ASIC)、通用目的計算機或任何其他類似硬件設(shè)備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲到計算機可讀記錄介質(zhì)中,例如,RAM存儲器,磁或光驅(qū)動器或軟磁盤及類似設(shè)備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。
另外,本申請的一部分可被應(yīng)用為計算機程序產(chǎn)品,例如計算機程序指令,當(dāng)其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本申請的方法和/或技術(shù)方案。而調(diào)用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設(shè)備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當(dāng)該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本申請的多個實施例的方法和/或技術(shù)方案。
對于本領(lǐng)域技術(shù)人員而言,顯然本申請不限于上述示范性實施例的細節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。
當(dāng)然,對于本領(lǐng)域技術(shù)人員而言,顯然本申請不限于上述示范性實施例的細節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應(yīng)將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標記視為限制所涉及的權(quán)利要求。