本發(fā)明屬于數(shù)據(jù)恢復(fù)領(lǐng)域,具體涉及一種基于龍視安嵌入式安防設(shè)備的數(shù)據(jù)解析及提取方法。
背景技術(shù):
國內(nèi)經(jīng)濟(jì)的蓬勃發(fā)展帶動(dòng)了不少行業(yè)的發(fā)展,安保行業(yè)正是受益于經(jīng)濟(jì)發(fā)展增長趨勢最為明顯的行業(yè)之一。尤其是在視頻監(jiān)控技術(shù)不斷發(fā)展的今天,高清監(jiān)控視頻、多角度視頻技術(shù)等專業(yè)的監(jiān)控設(shè)備在各個(gè)行業(yè)的多種場所都得到了有效地推廣應(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)越性能,并且從目前的市場占有率上看,已經(jīng)成為安防界的主流產(chǎn)品。
在發(fā)達(dá)國家,不少監(jiān)控設(shè)備上面存儲(chǔ)的數(shù)據(jù)都是經(jīng)過多重備份以便確保其數(shù)據(jù)存儲(chǔ)具備高度的安全性。然而,在國內(nèi),為了節(jié)省企業(yè)的開支以及降低管理上的難度,很多持有監(jiān)控設(shè)備的單位并沒有相應(yīng)的數(shù)據(jù)安全措施,這就意味著一旦設(shè)備上存儲(chǔ)的視頻資料丟失或出現(xiàn)其它故障,將使得安防功能無法起到實(shí)際性作用。此外,在部分情況下,有不少案件是由于提供了最真實(shí),最可靠的視頻證據(jù),成為了法院決斷的依據(jù),才得到了公正、高效的判決,因此對監(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ū)域的丟失文件;即使能進(jìn)行視頻數(shù)據(jù)的恢復(fù),但也無法對文件狀態(tài)屬性加以區(qū)分。
本發(fā)明涉及到的部分專業(yè)術(shù)語:
塊:一個(gè)分區(qū)被分成大小相等,連續(xù)空間的區(qū)域;
文件分配表:映射到分區(qū)每個(gè)塊的條目列表,在每個(gè)條目中記錄了該條目映射的塊的使用狀況;
主引導(dǎo)記錄表:針對龍視安的磁盤分區(qū),在磁盤最前端的一段管理扇區(qū);
正常數(shù)據(jù):是指在磁盤分區(qū)的文件分配表中有已使用的標(biāo)記和已使用字節(jié)數(shù)的塊中可正常播放的視頻數(shù)據(jù);
丟失刪除數(shù)據(jù):是指磁盤分區(qū)的文件分配表中標(biāo)識(shí)為未使用區(qū)域的塊所對應(yīng)的地址中保存的可播放的有效視頻數(shù)據(jù),以及在磁盤分區(qū)的文件分配表中有已使用的標(biāo)記的塊中標(biāo)記為未使用的中可正常播放的視頻數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)的不足,提供了一種基于龍視安嵌入式安防設(shè)備的數(shù)據(jù)解析及提取方法,能夠有效解決現(xiàn)有技術(shù)無法恢復(fù)監(jiān)控機(jī)的未使用區(qū)域的丟失文件;即使能進(jìn)行視頻數(shù)據(jù)的恢復(fù),但也無法對文件屬性加以區(qū)分等問題。
為解決以上問題,本發(fā)明采用的技術(shù)方案如下:一種基于龍視安嵌入式安防設(shè)備的數(shù)據(jù)解析及提取方法,包括如下步驟:
S1:解析主引導(dǎo)記錄表;
S2:根據(jù)主引導(dǎo)記錄表找到數(shù)據(jù)區(qū)并解析;
S3:根據(jù)S2解析的數(shù)據(jù)區(qū)信息進(jìn)行數(shù)據(jù)提取。
作為優(yōu)選,S1解析主引導(dǎo)記錄表的具體方法如下:
11:在每個(gè)扇區(qū)偏移位置512=470的四個(gè)字節(jié)是數(shù)據(jù)區(qū)的開始扇區(qū);
12:在每個(gè)扇區(qū)偏移位置512=474的四個(gè)字節(jié)是數(shù)據(jù)區(qū)的分區(qū)大小扇區(qū)值。
作為優(yōu)選,S2根據(jù)主引導(dǎo)記錄表找到數(shù)據(jù)區(qū)并解析的具體步驟如下:
S21:根據(jù)所述11和12的值確定分區(qū)開始扇區(qū)與分區(qū)大小扇區(qū)值,并跳轉(zhuǎn)至分區(qū)開始扇區(qū)解析文件分配表信息;
S22:根據(jù)S21中解析的信息找到數(shù)據(jù)區(qū)開始位置后跳至64MB字節(jié)大小的區(qū)域即為數(shù)據(jù)區(qū)尾部開始地址;
S23:根據(jù)S22中解析的數(shù)據(jù)區(qū)尾部信息即可找到每個(gè)文件數(shù)據(jù)頭區(qū)域的開始位置和大??;
S24:根據(jù)S23解析出的文件數(shù)據(jù)頭區(qū)域的開始位置和大小在64MB字節(jié)大小的區(qū)域判斷是否存在未使用的區(qū)域,如果存在即表示為丟失刪除數(shù)據(jù)文件,否則為正常數(shù)據(jù)文件。
作為優(yōu)選,所述S21針對數(shù)據(jù)區(qū)解析具體如下:
211:文件分配表中偏移512=128字節(jié)的四個(gè)字節(jié)的值為START_DATA_OFF,數(shù)據(jù)區(qū)開始位置從文件分配表位置開始偏移大小表示為:START_DATA_OFF*8;
212:文件分配表中偏移512=148字節(jié)的四個(gè)字節(jié)的值為START_PART_OFF,記錄當(dāng)前文件分配表位置開始是從磁盤開始偏移START_PART_OFF扇區(qū);
213:文件分配表中偏移512=156字節(jié)的四個(gè)字節(jié)的值:START_PART_TOTAL,記錄當(dāng)前數(shù)據(jù)區(qū)大小為START_PART_TOTAL。
作為優(yōu)選,所述S22針對文件塊尾部流表解析具體如下:
221:尾部最后一個(gè)扇區(qū)偏移512=240位置的四個(gè)字節(jié)記錄的是塊大小中存在BLOCK_SIZE個(gè)記錄項(xiàng),系統(tǒng)規(guī)定每條記錄項(xiàng)是32字節(jié),每條記錄項(xiàng)描述的是4秒視頻數(shù)據(jù);
222:尾部最后一個(gè)扇區(qū)偏移512=236位置的四個(gè)字節(jié)記錄的是塊大小中標(biāo)記項(xiàng)大小TOTAL_BLOCK_SIZE,從當(dāng)前扇區(qū)最后位置向前偏移TOTAL_BLOCK_SIZE到標(biāo)記項(xiàng)的頭;
223:尾部最后一個(gè)扇區(qū)偏移512=228位置開始向前偏移BLOCK_SIZE*32,在每個(gè)記錄項(xiàng)中:1-4字節(jié)是UNIX時(shí)間戳記錄的當(dāng)前流TIME;9-12字節(jié)是當(dāng)前流視頻通道CHANNEL,真實(shí)的通道是CHANNEL+1;21-24字節(jié)是視頻偏移位置,其中前3個(gè)字節(jié)記錄的是偏移值加上第四個(gè)字節(jié)的值乘以16M字節(jié)數(shù)的總和;
作為優(yōu)選,S23針對文件數(shù)據(jù)頭區(qū)域解析具體如下:
231:文件頭中的標(biāo)記字節(jié)為0X00AA;
232:緊跟文件頭標(biāo)記字節(jié)0X00AA后面的4個(gè)字節(jié)是時(shí)間信息,時(shí)間格式UNIX時(shí)間戳;
233:從文件頭標(biāo)記字節(jié)0X00AA開始偏移0X0A個(gè)字節(jié)的4個(gè)字節(jié)長度是通道信息,真實(shí)的通道為顯示的通道加1;
234:從文件頭標(biāo)記字節(jié)0X00AA開始偏移10個(gè)字節(jié)的4個(gè)字節(jié)長度是通道信息,通道與顯示的通道加0X52個(gè)字節(jié)是視頻解碼的文件頭。
作為優(yōu)選,S3的具體方法如下:
S31根據(jù)S2中解析出的數(shù)據(jù)區(qū)尾部信息記錄了正常數(shù)據(jù)的存儲(chǔ)方式,按照通道、時(shí)間的前后邏輯將正常數(shù)據(jù)進(jìn)行提取;
S32所述S31中數(shù)據(jù)區(qū)尾部信息未記錄的數(shù)據(jù)區(qū)域統(tǒng)一劃為丟失刪除數(shù) 據(jù),按照所述S23解析出的文件數(shù)據(jù)頭區(qū)域信息將時(shí)間、通道、以及可以被正常解碼的文件頭進(jìn)行邏輯性組合將丟失刪除數(shù)據(jù)進(jìn)行提取。
本發(fā)明的有益效果如下:本發(fā)明采用了解析主引導(dǎo)記錄表,并根據(jù)主引導(dǎo)記錄表標(biāo)記出數(shù)據(jù)區(qū)并解析,最后根據(jù)解析的數(shù)據(jù)區(qū)信息進(jìn)行數(shù)據(jù)提取?;谏鲜龇椒?,本發(fā)明可以快速判斷磁盤數(shù)據(jù)是否為龍視安的監(jiān)控視頻數(shù)據(jù)格式,也可以提取出磁盤數(shù)據(jù)中有效的視頻數(shù)據(jù)文件,包括正常數(shù)據(jù)文件、丟失刪除數(shù)據(jù)文件;還可以正確區(qū)分視頻數(shù)據(jù)文件正常、丟失刪除的狀態(tài)。
附圖說明
圖1為磁盤數(shù)據(jù)解析主流程圖;
圖2為實(shí)施例解析主引導(dǎo)記錄表的示意圖;
圖3為實(shí)施例根據(jù)主引導(dǎo)記錄表找到數(shù)據(jù)區(qū)并解析的流程圖;
圖4為實(shí)施例針對文件分配表解析示意圖;
圖5為實(shí)施例針對文件塊尾部流表解析示意圖;
圖6為實(shí)施例針對文件數(shù)據(jù)頭區(qū)域解析示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對本發(fā)明做進(jìn)一步詳細(xì)說明。
針對上述提出的問題,本發(fā)明提出了一種基于龍視安嵌入式安防設(shè)備的數(shù)據(jù)解析及提取方法,該發(fā)明不僅能高效地提取正常的視頻數(shù)據(jù),還能將非正常的數(shù)據(jù)進(jìn)行有效的恢復(fù)。
下面以龍視安視嵌入式頻監(jiān)控設(shè)備為為例對本發(fā)明進(jìn)行詳細(xì)說明,先介紹龍視安視嵌入式頻監(jiān)控設(shè)備在存儲(chǔ)文件時(shí)的基本結(jié)構(gòu)。龍視安視嵌入式頻監(jiān)控 設(shè)備文件存儲(chǔ)分為管理區(qū)與數(shù)據(jù)區(qū),管理區(qū)是一個(gè)ext3的文件系統(tǒng)結(jié)構(gòu),而數(shù)據(jù)區(qū)是一種自定義的存儲(chǔ)結(jié)構(gòu),其結(jié)構(gòu)由一個(gè)文件分配表表記錄數(shù)據(jù)區(qū)開始位置START_DATA_OFF,記錄文件分配表位置的START_PART_OFF記錄了龍視安數(shù)據(jù)區(qū)大小START_PART_TOTAL的信息,在數(shù)據(jù)區(qū)中的視頻數(shù)據(jù)是按照64M塊大小來存儲(chǔ)數(shù)據(jù)的,文件分配表中的信息是描述第一個(gè)數(shù)據(jù)塊距離存儲(chǔ)位置的目標(biāo)指針,每個(gè)塊最后部分的數(shù)據(jù)是記錄當(dāng)前塊的位圖信息,每條位圖信息描述一秒視頻數(shù)據(jù),其長度是32字節(jié)大小,位圖信息中有視頻數(shù)據(jù)的時(shí)間、通道、以及數(shù)據(jù)在塊中的相對位置,每個(gè)塊數(shù)據(jù)的描述方式都是基于上述原理。
基于上述的存儲(chǔ)文件的邏輯,本發(fā)明所采用的數(shù)據(jù)解析與提取的原理如下:根據(jù)文件分配表中的描述信息START_DATA_OFF可以確定數(shù)據(jù)的開始位置,每個(gè)塊的大小就可以把硬盤所有區(qū)域劃分為塊集合,而在每個(gè)塊中存在描述數(shù)據(jù)的位圖信息,根據(jù)位圖信息中的時(shí)間、通道和偏移位置可以將數(shù)據(jù)按照同一個(gè)通道時(shí)間從前到后的關(guān)系將正常數(shù)據(jù)進(jìn)行提取與組合;針對丟失數(shù)據(jù)的提取其原理是基于刪除數(shù)據(jù)不會(huì)在磁盤中清除,在底層結(jié)構(gòu)中數(shù)據(jù)還是存在的,只不過由于其位圖信息丟失導(dǎo)致無法檢索到數(shù)據(jù)區(qū),因此丟失數(shù)據(jù)可以按照數(shù)據(jù)中的描述進(jìn)行數(shù)據(jù)提取與組合,在數(shù)據(jù)區(qū)中文件頭中的標(biāo)記字節(jié)為0X00AA;緊跟文件頭標(biāo)記字節(jié)0X00AA后面的4個(gè)字節(jié)是時(shí)間信息,時(shí)間格式為UNIX時(shí)間戳;從文件頭標(biāo)記字節(jié)0X00AA開始偏移0X0A個(gè)字節(jié)的4個(gè)字節(jié)長度是通道信息,通道與應(yīng)用層顯示的通道相差1;從文件頭標(biāo)記字節(jié)0X00AA開始偏移10個(gè)字節(jié)的4個(gè)字節(jié)長度是通道信息,通道與顯示的通道相差0X52個(gè)字節(jié)是視頻解碼的文件頭,提取視頻時(shí)必須從此處提取方可正常解碼,同理依然可以按照同一個(gè)通道時(shí)間從前到后的關(guān)系將其它丟失數(shù)據(jù)進(jìn)行組合并提取。
為了詳細(xì)說明本發(fā)明的方法,結(jié)合附圖進(jìn)一步闡述。
實(shí)施例:
如圖1所示,包括以下步驟:
101解析主引導(dǎo)記錄表(MBR);
102根據(jù)主引導(dǎo)記錄表找到ext3管理區(qū);
103根據(jù)主引導(dǎo)記錄表找到數(shù)據(jù)區(qū)并解析;
104根據(jù)103解析的數(shù)據(jù)區(qū)信息進(jìn)行數(shù)據(jù)提取。
如圖2所示,101中的針對主引導(dǎo)記錄表解析如下:
1011每個(gè)扇區(qū)偏移位置512=454的四個(gè)字節(jié)是ext3管理區(qū)的開始扇區(qū);
1012每個(gè)扇區(qū)偏移位置512=458的四個(gè)字節(jié)是ext3管理區(qū)的分區(qū)大小扇區(qū)值;
1013每個(gè)扇區(qū)偏移位置512=470的四個(gè)字節(jié)是數(shù)據(jù)區(qū)的開始扇區(qū);
1014每個(gè)扇區(qū)偏移位置512=474的四個(gè)字節(jié)是數(shù)據(jù)區(qū)的分區(qū)大小扇區(qū)值。
102中的針對管理區(qū)解析如下:
102中所述的管理區(qū)主要記錄的是用戶操作與用戶的使用信息,由于它是ext3的文件系統(tǒng),公開的方法都是可以支持的,故此處不多做說明。
如圖4所示,1031針對數(shù)據(jù)區(qū)解析如下:
1031根據(jù)1013的值可以確定分區(qū)開始扇區(qū)與分區(qū)大小扇區(qū),跳轉(zhuǎn)至分區(qū)開始扇區(qū)解析文件分配表信息(DBR):
10311在文件分配表中偏移512=128字節(jié)的四個(gè)字節(jié)的值為START_DATA_OFF,數(shù)據(jù)區(qū)開始位置從文件分配表位置開始偏移系統(tǒng)默認(rèn)的簇大小START_DATA_OFF*8,即8倍START_DATA_OFF的大?。?/p>
10312在文件分配表中偏移512=148字節(jié)的四個(gè)字節(jié)的值為START_PART_OFF,記錄當(dāng)前文件分配表位置開始是從磁盤開始偏移 START_PART_OFF扇區(qū);
10313在文件分配表中偏移512=156字節(jié)的四個(gè)字節(jié)的值為START_PART_TOTAL,記錄當(dāng)前數(shù)據(jù)區(qū)大小為START_PART_TOTAL;
如圖5所示,1032針對文件塊尾部流表解析如下:
根據(jù)10311中記錄的位置可以找到數(shù)據(jù)區(qū)開始位置,由于系統(tǒng)默認(rèn)的塊大小是固定的64MB,因此可以找到數(shù)據(jù)區(qū)尾部。
10321在尾部最后一個(gè)扇區(qū)偏移512=240位置的四個(gè)字節(jié)記錄的是塊大小中存在BLOCK_SIZE個(gè)記錄項(xiàng),系統(tǒng)規(guī)定每條記錄項(xiàng)是32字節(jié),每條記錄項(xiàng)描述的是4秒視頻數(shù)據(jù);
10322在尾部最后一個(gè)扇區(qū)偏移512=236位置的四個(gè)字節(jié)記錄的是塊大小中標(biāo)記項(xiàng)大小:TOTAL_BLOCK_SIZE,從當(dāng)前扇區(qū)最后位置向前偏移TOTAL_BLOCK_SIZE到標(biāo)記項(xiàng)的頭;
10323在尾部最后一個(gè)扇區(qū)偏移512=228位置開始向前偏移10321中BLOCK_SIZE*32(系統(tǒng)規(guī)定每條記錄項(xiàng)大小是32字節(jié));在每個(gè)記錄項(xiàng)中:1-4字節(jié)是UNIX時(shí)間戳記錄的當(dāng)前流TIME;9-12字節(jié)是當(dāng)前流視頻通道CHANNEL(真實(shí)的通道是CHANNEL+1);21-24字節(jié)是視頻偏移位置(前3個(gè)字節(jié)記錄的是偏移值加上第四個(gè)字節(jié)的值乘以16M字節(jié)數(shù)的總和);
如圖6所示,1033針對文件數(shù)據(jù)頭區(qū)域解析:
由于1032解析的信息記錄了每個(gè)文件數(shù)據(jù)頭區(qū)域的開始位置即前3個(gè)字節(jié)記錄的值,因此可以根據(jù)1032中解析的信息找到每個(gè)文件數(shù)據(jù)頭區(qū)域;
10331文件頭中的標(biāo)記字節(jié)為0X00AA;
10332緊跟文件頭標(biāo)記字節(jié)0X00AA后面的4個(gè)字節(jié)是時(shí)間信息,時(shí)間格式UNIX時(shí)間戳;
10333從文件頭標(biāo)記字節(jié)0X00AA開始偏移0X0A個(gè)字節(jié)的4個(gè)字節(jié)長度是通道信息,通道與應(yīng)用層顯示的通道相差1;
10334從文件頭標(biāo)記字節(jié)0X00AA開始偏移10個(gè)字節(jié)的4個(gè)字節(jié)長度是通道信息,通道與顯示的通道相差0X52個(gè)字節(jié)是視頻解碼的文件頭,提取視頻數(shù)據(jù)時(shí)必須從此處提取方可正常解碼。
104針對103解析的數(shù)據(jù)進(jìn)行提?。?/p>
1041所述103中解析出的數(shù)據(jù)區(qū)尾部信息記錄了正常數(shù)據(jù)的存儲(chǔ)方式,按照通道、時(shí)間的前后邏輯將正常數(shù)據(jù)進(jìn)行提??;
1042所述1041中數(shù)據(jù)區(qū)尾部信息未記錄的數(shù)據(jù)區(qū)域統(tǒng)一劃為丟失刪除數(shù)據(jù),按照所述S23解析出的文件數(shù)據(jù)頭區(qū)域信息將時(shí)間、通道、以及可以被正常解碼的文件頭進(jìn)行邏輯性組合將丟失刪除數(shù)據(jù)進(jìn)行提取。
本領(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)。