本發(fā)明屬于數(shù)據(jù)恢復(fù)領(lǐng)域,具體涉及一種基于嵌入式安防設(shè)備的數(shù)據(jù)提取方法及裝置。
背景技術(shù):
國(guó)內(nèi)經(jīng)濟(jì)的蓬勃發(fā)展帶動(dòng)了不少行業(yè)的發(fā)展,安保行業(yè)正是受益于經(jīng)濟(jì)發(fā)展增長(zhǎng)趨勢(shì)最為明顯的行業(yè)之一。尤其是在視頻監(jiān)控技術(shù)不斷發(fā)展的今天,高清監(jiān)控視頻、多角度視頻技術(shù)等專業(yè)的監(jiān)控設(shè)備在各個(gè)行業(yè)的多種場(chǎng)所都得到了有效地推廣應(yīng)用。視頻監(jiān)控設(shè)備為實(shí)現(xiàn)社會(huì)的安定和諧做出了巨大貢獻(xiàn)。
嵌入式系統(tǒng)是一種完全嵌入受控器件內(nèi)部,為特定應(yīng)用而設(shè)計(jì)的專用操作系統(tǒng),嵌入式系統(tǒng)監(jiān)控機(jī)則是一個(gè)用于控制和監(jiān)視攝像探頭的裝置。從整體性能上來看,嵌入式硬盤錄像機(jī)表現(xiàn)出來了無比強(qiáng)大的優(yōu)越性能,并且從目前的市場(chǎng)占有率上看,已經(jīng)成為安防界的主流產(chǎn)品。
在發(fā)達(dá)國(guó)家,不少監(jiān)控設(shè)備上面存儲(chǔ)的數(shù)據(jù)都是經(jīng)過多重備份以便確保其數(shù)據(jù)存儲(chǔ)具備高度的安全性。然而,在國(guó)內(nèi),為了節(jié)省企業(yè)的開支以及降低管理上的難度,很多持有監(jiān)控設(shè)備的單位并沒有相應(yīng)的數(shù)據(jù)安全措施,這就意味著一旦設(shè)備上存儲(chǔ)的視頻資料丟失或出現(xiàn)其它故障,將使得安防功能無法起到實(shí)際性作用。此外,在部分情況下,有不少案件是由于提供了最真實(shí),最可靠的視頻證據(jù),成為了法院決斷的依據(jù),才得到了公正、高效的判決,因此對(duì)監(jiān)控設(shè)備的數(shù)據(jù)提取與恢復(fù)具有重大意義。
由于監(jiān)控視頻的存儲(chǔ)是設(shè)備廠商自定義的存儲(chǔ)格式,因此傳統(tǒng)的數(shù)據(jù)恢復(fù) 技術(shù)無法應(yīng)用到監(jiān)控機(jī)的視頻數(shù)據(jù)提取與恢復(fù);市面上現(xiàn)有技術(shù)無法恢復(fù)監(jiān)控機(jī)的未使用區(qū)域的丟失文件、已使用區(qū)域中未被覆蓋的碎片文件;即使能進(jìn)行視頻數(shù)據(jù)的恢復(fù),但也無法對(duì)文件狀態(tài)屬性加以區(qū)分。
本發(fā)明涉及到的部分專業(yè)術(shù)語:
磁盤分區(qū):在磁盤上劃分幾個(gè)邏輯部分,每一部分都稱之為分區(qū);
塊:一個(gè)分區(qū)被分成大小相等,連續(xù)空間的區(qū)域;
文件分配表:映射到分區(qū)每個(gè)塊的條目列表,在每個(gè)條目中記錄了該條目映射的塊的使用狀況;
正常數(shù)據(jù):是指在磁盤分區(qū)的文件分配表中有已使用的標(biāo)記和已使用字節(jié)數(shù)的塊中可正常播放的視頻數(shù)據(jù);
丟失數(shù)據(jù):是指磁盤分區(qū)的文件分配表中標(biāo)識(shí)為未使用區(qū)域的塊所對(duì)應(yīng)的地址中保存的可播放的有效視頻數(shù)據(jù);
覆蓋數(shù)據(jù):是指在磁盤分區(qū)的文件分配表中有已使用的標(biāo)記的塊中標(biāo)記為未使用的中可正常播放的視頻數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,提供了一種基于嵌入式安防設(shè)備的數(shù)據(jù)提取方法及裝置,能夠有效解決現(xiàn)有技術(shù)無法恢復(fù)監(jiān)控機(jī)的未使用區(qū)域的丟失文件、已使用區(qū)域中未被覆蓋的碎片文件;即使能進(jìn)行視頻數(shù)據(jù)的恢復(fù),但也無法對(duì)文件屬性加以區(qū)分等問題。
為解決以上問題,本發(fā)明采用的技術(shù)方案如下:一種基于嵌入式安防設(shè)備的數(shù)據(jù)提取方法,包括如下步驟:
S1加載磁盤,并讀取磁盤第一個(gè)扇區(qū)信息;
S2檢測(cè)磁盤是否符合嵌入式監(jiān)控設(shè)備在存儲(chǔ)文件時(shí)的基本結(jié)構(gòu),若符合則 跳至S3,否則跳至S1;
S3解析磁盤的分區(qū)情況,并解析每一個(gè)分區(qū)的起始地址、大小、引導(dǎo)扇區(qū)地址;
S4讀取正常數(shù)據(jù)記錄:依次解析磁盤劃分的每一個(gè)分區(qū),在分區(qū)的引導(dǎo)扇區(qū)中讀取該分區(qū)的文件分配表的地址,遍歷該表讀取出已使用的塊對(duì)應(yīng)的視頻數(shù)據(jù)的通道、起止時(shí)間、與該塊相關(guān)的前一塊和后一塊地址、塊已使用的字節(jié)數(shù)的信息,并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址,讀取該地址的相應(yīng)數(shù)據(jù);
S5讀取非正常數(shù)據(jù)記錄,非正常數(shù)據(jù)記錄包括丟失數(shù)據(jù)和覆蓋數(shù)據(jù);
S6按照正常數(shù)據(jù)、丟失數(shù)據(jù)、覆蓋數(shù)據(jù)三種類別讀取數(shù)據(jù)記錄后,結(jié)合視頻文件的格式結(jié)構(gòu),分類別提取其對(duì)應(yīng)的有效數(shù)據(jù);
S7數(shù)據(jù)提取完成后,按照類型給提取出的視頻數(shù)據(jù)進(jìn)行標(biāo)記。
作為優(yōu)選,S4讀取正常數(shù)據(jù)的詳細(xì)流程如下所述:
S41讀取磁盤的分區(qū)信息,主要包括劃分的分區(qū)的起始地址、分區(qū)引導(dǎo)記錄地址的信息,遍歷每一個(gè)分區(qū)并讀取信息;
S42跳至分區(qū)起始,讀取分區(qū)引導(dǎo)記錄,主要包括劃分的區(qū)域的每扇區(qū)字節(jié)數(shù)、每塊的扇區(qū)數(shù)、數(shù)據(jù)存儲(chǔ)的第一個(gè)塊號(hào)、文件分配表地址、塊個(gè)數(shù)、數(shù)據(jù)區(qū)開始扇區(qū)的信息;
S43跳至文件分配表地址讀取文件分配信息;
S44逐一讀取文件分配表信息,判斷各塊空間是否被使用,若各塊均未使用則跳至S42,否則則跳至S45;
S45讀取塊m的分配記錄信息,其中初始值m=0,第一次讀取時(shí)讀取第一塊的分配記錄中的使用記錄信息;
S46根據(jù)S45中讀取的信息來判斷該塊是否已經(jīng)被寫入數(shù)據(jù),若已經(jīng)寫入數(shù)據(jù)則跳至S47,否則跳至S411;
S47讀取塊的使用記錄信息,包括塊對(duì)應(yīng)的視頻數(shù)據(jù)的通道、起止時(shí)間、與該塊相關(guān)的前一塊和后一塊地址、塊已使用的字節(jié)數(shù)的信息,并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址,讀取該地址的相應(yīng)數(shù)據(jù);
S48根據(jù)S47讀取的信息來判讀該塊的下一個(gè)塊區(qū)域是否存在,若存在則跳至S49,否則跳至S410;
S49讀取下一個(gè)塊的地址信息,并計(jì)算對(duì)應(yīng)的扇區(qū)地址;
S410創(chuàng)建已讀取塊的集合Ni,初始值i=0:創(chuàng)建一個(gè)集合,在集合中記錄已經(jīng)讀取的塊的編號(hào),如果2個(gè)及以上的塊是相互關(guān)聯(lián)的則按照順序依次寫入集合Ni,集合Ni的格式如{0x00,0x01,…,0x0m};
S411使得S45所述的m=m+1,跳轉(zhuǎn)到下一個(gè)塊的分配記錄地址;
S412根據(jù)S42中塊個(gè)數(shù)來計(jì)算并判斷下一個(gè)讀取的塊的地址是否已經(jīng)達(dá)到文件分配表尾部,若已經(jīng)達(dá)到則跳至S414,否則跳至S413;
S413讀取該塊的編號(hào),并在Ni中驗(yàn)證該塊是否已經(jīng)被讀取,若已經(jīng)被讀取則跳至S411,否則跳至S45;
S414創(chuàng)建正常文件集合N,將Ni寫入集合N:將所有的集合Ni寫入到集合N中,其格式如{N0,N1,N2,…,Ni};
S415將所有的正常文件依次寫入集合N后,并對(duì)其加上正常數(shù)據(jù)標(biāo)識(shí)N, 以便區(qū)別其他類型的數(shù)據(jù)文件。
作為優(yōu)選,S5讀取非正常數(shù)據(jù)記錄的詳細(xì)流程如下所述:
S51讀取丟失數(shù)據(jù)記錄:依次解析磁盤劃分的每一個(gè)分區(qū),在分區(qū)的引導(dǎo)扇區(qū)中讀取該分區(qū)的文件分配表的地址,遍歷該表讀取出未使用的塊,并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址,判斷該地址的內(nèi)容是否為空,不為空時(shí)按照嵌入式監(jiān)控設(shè)備的視頻數(shù)據(jù)結(jié)構(gòu)提取有效的視頻數(shù)據(jù);
S52讀取覆蓋數(shù)據(jù)記錄:依次解析磁盤劃分的每一個(gè)分區(qū),在分區(qū)的引導(dǎo)扇區(qū)中讀取該分區(qū)的文件分配表的地址,遍歷該表讀取出已使用的塊的已使用的字節(jié)數(shù),并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址,判斷該地址的內(nèi)容中未使用的部分是否為空,不為空時(shí)按照嵌入式監(jiān)控設(shè)備的視頻數(shù)據(jù)結(jié)構(gòu)提取有效的視頻數(shù)據(jù)。
作為優(yōu)選,S51讀取丟失數(shù)據(jù)的詳細(xì)流程如下所述:
S511讀取磁盤的區(qū)域劃分信息,主要包括分區(qū)的起始地址、分區(qū)引導(dǎo)記錄地址的信息,遍歷每一個(gè)分區(qū)并讀取信息;
S512跳至分區(qū)起始,讀取分區(qū)引導(dǎo)記錄,主要包括分區(qū)的每扇區(qū)字節(jié)數(shù)、每塊的扇區(qū)數(shù)、數(shù)據(jù)存儲(chǔ)的第一個(gè)塊號(hào)、文件分配表地址、塊個(gè)數(shù)、數(shù)據(jù)區(qū)開始扇區(qū)的信息;
S513跳至文件分配表地址讀取文件分配信息;
S514讀取當(dāng)前塊m的分配記錄信息,其中初始值m=0:第一次讀取時(shí)讀取第一塊的分配記錄中的使用記錄信息;
S515讀取塊的記錄信息中使用標(biāo)記,若該塊已使用則跳至S519,否則跳至 S516;
S516計(jì)算該塊對(duì)應(yīng)的數(shù)據(jù)地址,并判斷其數(shù)據(jù)是否為空,若數(shù)據(jù)內(nèi)容為空則跳至S519,否則跳至S517;
S517結(jié)合視頻數(shù)據(jù)的格式,按照此結(jié)構(gòu)來提取塊內(nèi)容中的有效視頻文件;
S518創(chuàng)建已讀取塊集合Li,在集合中記錄已讀取塊的編號(hào),故Li格式如{0x00,0x01,…,0x0m};
S519使得S514所述的m=m+1,跳轉(zhuǎn)到下一個(gè)塊的分配記錄地址;
S5110根據(jù)S512中塊個(gè)數(shù)來計(jì)算并判斷下一個(gè)讀取的塊的地址是否已經(jīng)達(dá)到文件分配表尾部,若已經(jīng)達(dá)到則跳至S5112,否則跳至S5111;
S5111讀取該塊的編號(hào),并在Li中驗(yàn)證該塊是否已經(jīng)被讀取,若已經(jīng)被讀取則跳至S519,否則跳至S514;
S5112創(chuàng)建丟失文件集合L,將所有的集合Li寫入到集合L中,其格式如{L0,L1,L2,…,Li};
S5113將所有的丟失文件依次寫入集合L后,并對(duì)其加上丟失數(shù)據(jù)標(biāo)識(shí)L,以便區(qū)別其他類型的數(shù)據(jù)文件。
作為優(yōu)選,S52讀取覆蓋數(shù)據(jù)的詳細(xì)流程如下所述:
S521讀取磁盤的區(qū)域劃分信息,主要包括分區(qū)的起始地址、分區(qū)引導(dǎo)記錄地址等信息,遍歷每一個(gè)分區(qū)并讀取信息;
S522跳至分區(qū)起始,讀取分區(qū)引導(dǎo)記錄,主要包括劃分的區(qū)域的每扇區(qū)字節(jié)數(shù)、每塊的扇區(qū)數(shù)、數(shù)據(jù)存儲(chǔ)的第一個(gè)塊號(hào)、文件分配表地址、塊個(gè)數(shù)、數(shù) 據(jù)區(qū)開始扇區(qū)等信息;
S523跳至文件分配表地址讀取文件分配信息;
S524逐一讀取文件分配表信息,判斷各塊空間是否被使用,若各塊均未使用則跳至S522,否則跳至S525;
S525讀取塊m的分配記錄信息,其中初始值m=0,第一次讀取時(shí)讀取第一塊的分配記錄中的使用記錄信息;
S526讀取出已使用的塊的已使用的字節(jié)數(shù),并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址和未使用的字節(jié)數(shù),讀取該塊中未使用區(qū)域的內(nèi)容;
S527判斷未使用區(qū)域的內(nèi)容是否為空,若為空則跳至S5210,否則跳至S528;
S528根據(jù)視頻數(shù)據(jù)的格式提取塊內(nèi)容中的有效視頻文件;
S529創(chuàng)建已讀取塊集合Fi,在集合中記錄已讀取塊的編號(hào),F(xiàn)i的格式如{0x01};
S5210使得S525所述的m=m+1,跳轉(zhuǎn)到下一個(gè)塊的分配記錄地址;
S5211根據(jù)S512中塊個(gè)數(shù)來計(jì)算并判斷下一個(gè)讀取的塊的地址是否已經(jīng)達(dá)到文件分配表尾部,若已經(jīng)達(dá)到則跳至S5213,否則跳至S5212;
S5212讀取該塊的編號(hào),并在Fi中驗(yàn)證該塊是否已經(jīng)被讀取,若已經(jīng)被讀取則跳至S5210,否則跳至S525;
S5213創(chuàng)建覆蓋文件集合F,將所有的集合Fi寫入到集合F中,其格式如{F0,F1,F2,…,Fi};
S5214將所有的覆蓋文件依次寫入集合F后,并對(duì)其加上覆蓋數(shù)據(jù)標(biāo)識(shí)F,以便區(qū)別其他類型的數(shù)據(jù)文件。
為了解決以上問題,本發(fā)明還提出了一種基于嵌入式安防設(shè)備的數(shù)據(jù)提取裝置,包括:
磁盤加載模塊:用于快速檢索磁盤信息,判斷磁盤是否為嵌入式監(jiān)控設(shè)備產(chǎn)生數(shù)據(jù)磁盤,若是并列出磁盤的所有分區(qū)信息;
數(shù)據(jù)提取模塊:用于根據(jù)需求自定義掃描磁盤中的視頻數(shù)據(jù)文件,并可在掃描提取的結(jié)果中進(jìn)行篩選操作。
作為優(yōu)選,數(shù)據(jù)提取模塊包含以下單元:
正常數(shù)據(jù)提取單元:用于按照主流程中提取正常數(shù)據(jù)的流程進(jìn)行提取磁盤中正常數(shù)據(jù)文件,并按照存儲(chǔ)順序依次展示;
丟失覆蓋數(shù)據(jù)提取單元:用于按照主流程中提取非正常數(shù)據(jù)的流程進(jìn)行提取磁盤中丟失和覆蓋數(shù)據(jù)文件,并按照存儲(chǔ)順序依次展示;
所有數(shù)據(jù)提取單元:用于按照主流程中提取正常數(shù)據(jù)和非正常數(shù)據(jù)的流程進(jìn)行提取磁盤中所有數(shù)據(jù)文件,在提取的結(jié)果中分別標(biāo)記數(shù)據(jù)文件的屬性,并按照存儲(chǔ)順序依次展示;
篩選單元:用于在數(shù)據(jù)提取模塊的掃描結(jié)果中,根據(jù)數(shù)據(jù)文件的屬性、數(shù)據(jù)文件記錄視頻的時(shí)間、數(shù)據(jù)文件記錄視頻的通道和數(shù)據(jù)文件名稱進(jìn)行篩選。
作為優(yōu)選,所述分區(qū)信息包括分區(qū)的起始地址、分區(qū)大小的信息。
作為優(yōu)選,還包括RAW掃描單元:用于按照不同的視頻文件格式類型掃描 接入的磁盤數(shù)據(jù),并按不同視頻格式類型分類展示掃描結(jié)果。
作為優(yōu)選,還包括導(dǎo)出單元,用于在掃描結(jié)果中,將提取的數(shù)據(jù)恢復(fù)到自定義的地址。
本發(fā)明的有益效果如下:本發(fā)明采用了按照磁盤的分區(qū)逐一讀取的方法,在讀取每一個(gè)分區(qū)時(shí)按照正常數(shù)據(jù)文件、丟失數(shù)據(jù)文件、覆蓋數(shù)據(jù)文件進(jìn)行分類解析。在讀取正常數(shù)據(jù)文件時(shí),解析分區(qū)的文件分配記錄表,從該表中解析已經(jīng)使用的塊記錄,并讀取其中視頻數(shù)據(jù);在讀取丟失數(shù)據(jù)文件時(shí),解析分區(qū)的文件分配記錄表,從該表中解析未使用的塊記錄,并讀取其中視頻數(shù)據(jù)判斷其是否為空,不為空時(shí)按照嵌入式監(jiān)控設(shè)備的視頻數(shù)據(jù)結(jié)構(gòu)提取有效的視頻數(shù)據(jù);在讀取覆蓋數(shù)據(jù)文件時(shí),解析分區(qū)的文件分配記錄表,從該表中解析已使用的塊記錄及已使用塊的字節(jié)數(shù),然后讀取其中未使用字節(jié)的視頻數(shù)據(jù),判斷其是否為空,不為空時(shí)按照嵌入式監(jiān)控設(shè)備的視頻數(shù)據(jù)結(jié)構(gòu)提取有效的視頻數(shù)據(jù)?;谏鲜龇椒?,本發(fā)明可以快速判斷磁盤數(shù)據(jù)是否為特定廠商的監(jiān)控視頻數(shù)據(jù)格式,比如大華、???、龍視安等廠商的監(jiān)控?cái)?shù)據(jù)格式;也可以提取出磁盤數(shù)據(jù)中有效的視頻數(shù)據(jù)文件,包括正常數(shù)據(jù)文件、丟失數(shù)據(jù)文件和覆蓋數(shù)據(jù)文件;還可以正確區(qū)分視頻數(shù)據(jù)文件正常、丟失、覆蓋的狀態(tài)。
附圖說明
圖1為磁盤數(shù)據(jù)解析主流程圖;
圖2為S4讀取正常數(shù)據(jù)記錄流程圖;
圖3為S51讀取丟失數(shù)據(jù)記錄流程圖;
圖4為S52讀取覆蓋數(shù)據(jù)記錄流程圖;
圖5為磁盤分區(qū)結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。
針對(duì)上述提出的問題,本發(fā)明提出了一種基于針對(duì)嵌入式安防設(shè)備的數(shù)據(jù)提取方法及裝置,該發(fā)明不僅能高效地提取正常的視頻數(shù)據(jù),還能將非正常的數(shù)據(jù)進(jìn)行有效的恢復(fù)。
下面以大華監(jiān)控設(shè)備為為例對(duì)本發(fā)明進(jìn)行詳細(xì)說明,先介紹大華嵌入式監(jiān)控設(shè)備在存儲(chǔ)文件時(shí)的基本結(jié)構(gòu)。監(jiān)控設(shè)備在初始化磁盤時(shí),磁盤被劃分為n(n=0,1,2…)個(gè)區(qū)域(劃分的區(qū)域以下簡(jiǎn)稱為分區(qū)),每一個(gè)分區(qū)被劃分成大小相同的塊(類似于windows操作系統(tǒng)中fat32文件系統(tǒng)的簇)來作為存儲(chǔ)數(shù)據(jù)基本單元,每一個(gè)塊是有固定數(shù)量的扇區(qū)組成,在存儲(chǔ)視頻數(shù)據(jù)時(shí)依次使用每個(gè)分區(qū),并且在分區(qū)中寫入數(shù)據(jù)時(shí)會(huì)在該分區(qū)產(chǎn)生與之對(duì)應(yīng)的塊分配記錄,來管理該分區(qū)空間的使用情況。
基于上述的存儲(chǔ)文件的邏輯,本發(fā)明所采用的數(shù)據(jù)解析的原理如下:按照磁盤的分區(qū)逐一讀取,在讀取每一個(gè)分區(qū)時(shí)按照正常數(shù)據(jù)文件、丟失數(shù)據(jù)文件、覆蓋數(shù)據(jù)文件進(jìn)行分類解析。在讀取正常數(shù)據(jù)文件時(shí),解析分區(qū)的文件分配記錄表,從該表中解析已經(jīng)使用的塊記錄,并讀取其中視頻數(shù)據(jù);在讀取丟失數(shù)據(jù)文件時(shí),解析分區(qū)的文件分配記錄表,從該表中解析未使用的塊記錄,并讀取其中視頻數(shù)據(jù)判斷其是否為空,不為空時(shí)按照大華嵌入式監(jiān)控設(shè)備的視頻數(shù)據(jù)結(jié)構(gòu)提取有效的視頻數(shù)據(jù);在讀取覆蓋數(shù)據(jù)文件時(shí),解析分區(qū)的文件分配記錄表,從該表中解析已使用的塊記錄及已使用塊的字節(jié)數(shù),然后讀取其中未使用字節(jié)的視頻數(shù)據(jù),判斷其是否為空,不為空時(shí)按照大華嵌入式監(jiān)控設(shè)備的視頻數(shù)據(jù)結(jié)構(gòu)提取有效的視頻數(shù)據(jù)。
為了詳細(xì)說明本專利的發(fā)明方法,結(jié)合附圖進(jìn)一步闡述。
實(shí)施例:為了更為方便的闡述本發(fā)明中的方法,本例使用大華文件系統(tǒng)4.1版本(DHFS4.1)為例進(jìn)行闡述,該格式的磁盤結(jié)構(gòu)如圖5所示,各部分的詳細(xì)意義如下:
磁盤標(biāo)記:記錄磁盤所使用的大華文件系統(tǒng)版本信息,該標(biāo)記位于磁盤0x0扇區(qū),偏移地址0x00~0x07;
主分配記錄:記錄磁盤劃分分區(qū)的信息,該記錄位于磁盤0x1E扇區(qū),第一個(gè)分區(qū)表項(xiàng)的相對(duì)0x1E扇區(qū)起始偏移地址為0x48,每個(gè)分區(qū)信息表項(xiàng)的長(zhǎng)度為0x40,每個(gè)分區(qū)信息表項(xiàng)包含了分區(qū)的起始地址和分區(qū)引導(dǎo)記錄相對(duì)起始地址的偏移地址;
分區(qū)結(jié)構(gòu):在磁盤中每個(gè)分區(qū)結(jié)構(gòu)是完全一致的,在此僅針對(duì)一個(gè)分區(qū)的結(jié)構(gòu)進(jìn)行闡述,分區(qū)的結(jié)構(gòu)主要包括分區(qū)引導(dǎo)記錄、文件分配表、數(shù)據(jù)存儲(chǔ)區(qū),分區(qū)引導(dǎo)記錄中主要記錄了每扇區(qū)字節(jié)數(shù)、每塊扇區(qū)數(shù)、文件首塊號(hào)、目錄文件位圖開始扇區(qū)、文件分配表的開始扇區(qū)、數(shù)據(jù)存儲(chǔ)區(qū)開始扇區(qū)、塊個(gè)數(shù)、數(shù)據(jù)存儲(chǔ)區(qū)備份的開始扇區(qū)、通道個(gè)數(shù)等信息,文件分配表是對(duì)數(shù)據(jù)存儲(chǔ)區(qū)是否使用的一個(gè)管理區(qū)域,文件分配表項(xiàng)的長(zhǎng)度為0x20,一個(gè)表項(xiàng)對(duì)應(yīng)數(shù)據(jù)存儲(chǔ)區(qū)的一個(gè)塊,每個(gè)表項(xiàng)中記錄對(duì)應(yīng)塊的是否使用標(biāo)記、塊中記錄的視頻數(shù)據(jù)的通道、塊中記錄的視頻數(shù)據(jù)的開始時(shí)間、塊中記錄的視頻數(shù)據(jù)的結(jié)束時(shí)間、塊中記錄的視頻數(shù)據(jù)上一個(gè)塊序號(hào)、塊中記錄的視頻數(shù)據(jù)下一個(gè)塊序號(hào),數(shù)據(jù)存儲(chǔ)區(qū)記錄真實(shí)的視頻數(shù)據(jù)文件。
實(shí)施例1:
一種基于嵌入式安防設(shè)備的數(shù)據(jù)提取方法,包括如下步驟:
S1加載磁盤,并讀取磁盤第一個(gè)扇區(qū)信息;
S2檢測(cè)磁盤是否符合嵌入式監(jiān)控設(shè)備在存儲(chǔ)文件時(shí)的基本結(jié)構(gòu),若符合則跳至S3,否則跳至S1;
S3解析磁盤的分區(qū)情況,并解析每一個(gè)分區(qū)的起始地址、大小、引導(dǎo)扇區(qū)地址;
S4讀取正常數(shù)據(jù)記錄:依次解析磁盤劃分的每一個(gè)分區(qū),在分區(qū)的引導(dǎo)扇區(qū)中讀取該分區(qū)的文件分配表的地址,遍歷該表讀取出已使用的塊對(duì)應(yīng)的視頻數(shù)據(jù)的通道、起止時(shí)間、與該塊相關(guān)的前一塊和后一塊地址、塊已使用的字節(jié)數(shù)的信息,并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址,讀取該地址的相應(yīng)數(shù)據(jù);
S5讀取非正常數(shù)據(jù)記錄,非正常數(shù)據(jù)記錄包括丟失數(shù)據(jù)和覆蓋數(shù)據(jù);
S6按照正常數(shù)據(jù)、丟失數(shù)據(jù)、覆蓋數(shù)據(jù)三種類別讀取數(shù)據(jù)記錄后,結(jié)合視頻文件的格式結(jié)構(gòu),分類別提取其對(duì)應(yīng)的有效數(shù)據(jù);
S7數(shù)據(jù)提取完成后,按照類型給提取出的視頻數(shù)據(jù)進(jìn)行標(biāo)記。
進(jìn)一步地,S4讀取正常數(shù)據(jù)的詳細(xì)流程如下所述:
S41讀取磁盤的分區(qū)信息,主要包括劃分的分區(qū)的起始地址、分區(qū)引導(dǎo)記錄地址的信息,遍歷每一個(gè)分區(qū)并讀取信息;
S42跳至分區(qū)起始,讀取分區(qū)引導(dǎo)記錄,主要包括劃分的區(qū)域的每扇區(qū)字節(jié)數(shù)、每塊的扇區(qū)數(shù)、數(shù)據(jù)存儲(chǔ)的第一個(gè)塊號(hào)、文件分配表地址、塊個(gè)數(shù)、數(shù)據(jù)區(qū)開始扇區(qū)的信息;
S43跳至文件分配表地址讀取文件分配信息;
S44逐一讀取文件分配表信息,判斷各塊空間是否被使用,若各塊均未使 用則跳至S42,否則則跳至S45;
S45讀取塊m的分配記錄信息,其中初始值m=0,第一次讀取時(shí)讀取第一塊的分配記錄中的使用記錄信息;
S46根據(jù)S45中讀取的信息來判斷該塊是否已經(jīng)被寫入數(shù)據(jù),若已經(jīng)寫入數(shù)據(jù)則跳至S47,否則跳至S411;
S47讀取塊的使用記錄信息,包括塊對(duì)應(yīng)的視頻數(shù)據(jù)的通道、起止時(shí)間、與該塊相關(guān)的前一塊和后一塊地址、塊已使用的字節(jié)數(shù)的信息,并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址,讀取該地址的相應(yīng)數(shù)據(jù);
S48根據(jù)S47讀取的信息來判讀該塊的下一個(gè)塊區(qū)域是否存在,若存在則跳至S49,否則跳至S410;
S49讀取下一個(gè)塊的地址信息,并計(jì)算對(duì)應(yīng)的扇區(qū)地址;
S410創(chuàng)建已讀取塊的集合Ni,初始值i=0:創(chuàng)建一個(gè)集合,在集合中記錄已經(jīng)讀取的塊的編號(hào),如果2個(gè)及以上的塊是相互關(guān)聯(lián)的則按照順序依次寫入集合Ni,集合Ni的格式如{0x00,0x01,…,0x0m};
S411使得S45所述的m=m+1,跳轉(zhuǎn)到下一個(gè)塊的分配記錄地址;
S412根據(jù)S42中塊個(gè)數(shù)來計(jì)算并判斷下一個(gè)讀取的塊的地址是否已經(jīng)達(dá)到文件分配表尾部,若已經(jīng)達(dá)到則跳至S414,否則跳至S413;
S413讀取該塊的編號(hào),并在Ni中驗(yàn)證該塊是否已經(jīng)被讀取,若已經(jīng)被讀取則跳至S411,否則跳至S45;
S414創(chuàng)建正常文件集合N,將Ni寫入集合N:將所有的集合Ni寫入到集合 N中,其格式如{N0,N1,N2,…,Ni};
S415將所有的正常文件依次寫入集合N后,并對(duì)其加上正常數(shù)據(jù)標(biāo)識(shí)N,以便區(qū)別其他類型的數(shù)據(jù)文件。
進(jìn)一步地,S5讀取非正常數(shù)據(jù)記錄的詳細(xì)流程如下所述:
S51讀取丟失數(shù)據(jù)記錄:依次解析磁盤劃分的每一個(gè)分區(qū),在分區(qū)的引導(dǎo)扇區(qū)中讀取該分區(qū)的文件分配表的地址,遍歷該表讀取出未使用的塊,并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址,判斷該地址的內(nèi)容是否為空,不為空時(shí)按照嵌入式監(jiān)控設(shè)備的視頻數(shù)據(jù)結(jié)構(gòu)提取有效的視頻數(shù)據(jù);
S52讀取覆蓋數(shù)據(jù)記錄:依次解析磁盤劃分的每一個(gè)分區(qū),在分區(qū)的引導(dǎo)扇區(qū)中讀取該分區(qū)的文件分配表的地址,遍歷該表讀取出已使用的塊的已使用的字節(jié)數(shù),并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址,判斷該地址的內(nèi)容中未使用的部分是否為空,不為空時(shí)按照嵌入式監(jiān)控設(shè)備的視頻數(shù)據(jù)結(jié)構(gòu)提取有效的視頻數(shù)據(jù)。
進(jìn)一步地,S51讀取丟失數(shù)據(jù)的詳細(xì)流程如下所述:
S511讀取磁盤的區(qū)域劃分信息,主要包括分區(qū)的起始地址、分區(qū)引導(dǎo)記錄地址的信息,遍歷每一個(gè)分區(qū)并讀取信息;
S512跳至分區(qū)起始,讀取分區(qū)引導(dǎo)記錄,主要包括分區(qū)的每扇區(qū)字節(jié)數(shù)、每塊的扇區(qū)數(shù)、數(shù)據(jù)存儲(chǔ)的第一個(gè)塊號(hào)、文件分配表地址、塊個(gè)數(shù)、數(shù)據(jù)區(qū)開始扇區(qū)的信息;
S513跳至文件分配表地址讀取文件分配信息;
S514讀取當(dāng)前塊m的分配記錄信息,其中初始值m=0:第一次讀取時(shí)讀取 第一塊的分配記錄中的使用記錄信息;
S515讀取塊的記錄信息中使用標(biāo)記,若該塊已使用則跳至S519,否則跳至S516;
S516計(jì)算該塊對(duì)應(yīng)的數(shù)據(jù)地址,并判斷其數(shù)據(jù)是否為空,若數(shù)據(jù)內(nèi)容為空則跳至S519,否則跳至S517;
S517結(jié)合視頻數(shù)據(jù)的格式,按照此結(jié)構(gòu)來提取塊內(nèi)容中的有效視頻文件;
S518創(chuàng)建已讀取塊集合Li,在集合中記錄已讀取塊的編號(hào),故Li格式如{0x00,0x01,…,0x0m};
S519使得S514所述的m=m+1,跳轉(zhuǎn)到下一個(gè)塊的分配記錄地址;
S5110根據(jù)S512中塊個(gè)數(shù)來計(jì)算并判斷下一個(gè)讀取的塊的地址是否已經(jīng)達(dá)到文件分配表尾部,若已經(jīng)達(dá)到則跳至S5112,否則跳至S5111;
S5111讀取該塊的編號(hào),并在Li中驗(yàn)證該塊是否已經(jīng)被讀取,若已經(jīng)被讀取則跳至S519,否則跳至S514;
S5112創(chuàng)建丟失文件集合L,將所有的集合Li寫入到集合L中,其格式如{L0,L1,L2,…,Li};
S5113將所有的丟失文件依次寫入集合L后,并對(duì)其加上丟失數(shù)據(jù)標(biāo)識(shí)L,以便區(qū)別其他類型的數(shù)據(jù)文件。
進(jìn)一步地,S52讀取覆蓋數(shù)據(jù)的詳細(xì)流程如下所述:
S521讀取磁盤的區(qū)域劃分信息,主要包括分區(qū)的起始地址、分區(qū)引導(dǎo)記錄地址等信息,遍歷每一個(gè)分區(qū)并讀取信息;
S522跳至分區(qū)起始,讀取分區(qū)引導(dǎo)記錄,主要包括劃分的區(qū)域的每扇區(qū)字節(jié)數(shù)、每塊的扇區(qū)數(shù)、數(shù)據(jù)存儲(chǔ)的第一個(gè)塊號(hào)、文件分配表地址、塊個(gè)數(shù)、數(shù)據(jù)區(qū)開始扇區(qū)等信息;
S523跳至文件分配表地址讀取文件分配信息;
S524逐一讀取文件分配表信息,判斷各塊空間是否被使用,若各塊均未使用則跳至S522,否則跳至S525;
S525讀取塊m的分配記錄信息,其中初始值m=0,第一次讀取時(shí)讀取第一塊的分配記錄中的使用記錄信息;
S526讀取出已使用的塊的已使用的字節(jié)數(shù),并計(jì)算出該塊對(duì)應(yīng)的數(shù)據(jù)區(qū)地址和未使用的字節(jié)數(shù),讀取該塊中未使用區(qū)域的內(nèi)容;
S527判斷未使用區(qū)域的內(nèi)容是否為空,若為空則跳至S5210,否則跳至S528;
S528根據(jù)視頻數(shù)據(jù)的格式提取塊內(nèi)容中的有效視頻文件;
S529創(chuàng)建已讀取塊集合Fi,在集合中記錄已讀取塊的編號(hào),F(xiàn)i的格式如{0x01};
S5210使得S525所述的m=m+1,跳轉(zhuǎn)到下一個(gè)塊的分配記錄地址;
S5211根據(jù)S512中塊個(gè)數(shù)來計(jì)算并判斷下一個(gè)讀取的塊的地址是否已經(jīng)達(dá)到文件分配表尾部,若已經(jīng)達(dá)到則跳至S5213,否則跳至S5212;
S5212讀取該塊的編號(hào),并在Fi中驗(yàn)證該塊是否已經(jīng)被讀取,若已經(jīng)被讀取則跳至S5210,否則跳至S525;
S5213創(chuàng)建覆蓋文件集合F,將所有的集合Fi寫入到集合F中,其格式如{F0,F1,F2,…,Fi};
S5214將所有的覆蓋文件依次寫入集合F后,并對(duì)其加上覆蓋數(shù)據(jù)標(biāo)識(shí)F,以便區(qū)別其他類型的數(shù)據(jù)文件。
實(shí)施例2:
為了解決以上問題,本發(fā)明還提出了一種基于嵌入式安防設(shè)備的數(shù)據(jù)提取裝置,包括:
磁盤加載模塊:用于快速檢索磁盤信息,判斷磁盤是否為嵌入式監(jiān)控設(shè)備產(chǎn)生數(shù)據(jù)磁盤,若是并列出磁盤的所有分區(qū)信息;
數(shù)據(jù)提取模塊:用于根據(jù)需求自定義掃描磁盤中的視頻數(shù)據(jù)文件,并可在掃描提取的結(jié)果中進(jìn)行篩選操作。
進(jìn)一步地,數(shù)據(jù)提取模塊包含以下單元:
正常數(shù)據(jù)提取單元:用于按照主流程中提取正常數(shù)據(jù)的流程進(jìn)行提取磁盤中正常數(shù)據(jù)文件,并按照存儲(chǔ)順序依次展示;
丟失覆蓋數(shù)據(jù)提取單元:用于按照主流程中提取非正常數(shù)據(jù)的流程進(jìn)行提取磁盤中丟失和覆蓋數(shù)據(jù)文件,并按照存儲(chǔ)順序依次展示;
所有數(shù)據(jù)提取單元:用于按照主流程中提取正常數(shù)據(jù)和非正常數(shù)據(jù)的流程進(jìn)行提取磁盤中所有數(shù)據(jù)文件,在提取的結(jié)果中分別標(biāo)記數(shù)據(jù)文件的屬性,并按照存儲(chǔ)順序依次展示;
篩選單元:用于在數(shù)據(jù)提取模塊的掃描結(jié)果中,根據(jù)數(shù)據(jù)文件的屬性、數(shù)據(jù)文件記錄視頻的時(shí)間、數(shù)據(jù)文件記錄視頻的通道和數(shù)據(jù)文件名稱進(jìn)行篩 選。
進(jìn)一步地,所述分區(qū)信息包括分區(qū)的起始地址、分區(qū)大小的信息。
進(jìn)一步地,還包括RAW掃描單元:用于按照不同的視頻文件格式類型掃描接入的磁盤數(shù)據(jù),并按不同視頻格式類型分類展示掃描結(jié)果。
進(jìn)一步地,還包括導(dǎo)出單元,用于在掃描結(jié)果中,將提取的數(shù)據(jù)恢復(fù)到自定義的地址。
本領(lǐng)域的普通技術(shù)人員將會(huì)意識(shí)到,這里所述的實(shí)施例是為了幫助讀者理解本發(fā)明的實(shí)施方法,應(yīng)被理解為本發(fā)明的保護(hù)范圍并不局限于這樣的特別陳述和實(shí)施例。本領(lǐng)域的普通技術(shù)人員可以根據(jù)本發(fā)明公開的這些技術(shù)啟示做出各種不脫離本發(fā)明實(shí)質(zhì)的其它各種具體變形和組合,這些變形和組合仍然在本發(fā)明的保護(hù)范圍內(nèi)。