本發明屬于數據恢復領域,涉及一種嵌入式安防設備的數據提取方法。
背景技術:
國內經濟的蓬勃發展帶動了不少行業的發展,安保行業正是受益于經濟發展過程之中增長趨勢最為明顯的行業之一。尤其是視頻監控技術不斷發展的今天,高清監控視頻、多角度視頻技術等專業的監控設備在各個行業多種場所都得到了有效地推廣。視頻監控設備在為實現安定和諧安全的社會環境上做出了巨大的貢獻。監控探頭所拍攝下來的視頻顯得尤其重要。
嵌入式系統是一種完全嵌入受控器件內部,為特定應用而設計的專用的操作系統,嵌入式系統監控機則是一個控制程序存儲在只讀存儲器中的嵌入式處理器控制板,用于控制和監視攝像探頭的裝置。從整體性能上來看,嵌入式硬盤錄像機表現出來了無比強大的優越性能,并且從目前的市場占有率上看,已經成為安防界的主流產品。
在發達國家,不少監控設備上面存儲的數據都是經過多重備份以便確保其數據存儲具備高度的安全性。然而,為了節省企業的開支以及降低管理上的難度,很多的持有監控設備的單位并沒有做過多的數據安全措施,這就意味著一旦設備上存儲的視頻資料一旦丟失或出現其他故障,將使得安防功能并無法起到相關的作用。此外,在部分情況下,也為不少案件提供了最真實,最可靠的視頻證據,成為了法院決斷的依據。因此對監控設備的數據提取與恢復具有重大意義。
由于監控視頻的存儲是設備廠商自定義的存儲格式,不同于任何一種傳統意義上的文件系統,這導致傳統的數據恢復技術無法應用到監控機的 視頻數據提取與恢復中。目前,在針對嵌入式監控機的刪除后產生的碎片文件、覆蓋后的殘余文件無法恢復,而且恢復出來的視頻文件的狀態屬性不能加以區分。
本發明涉及到的部分專業術語:
磁盤分區:在磁盤上劃分幾個邏輯部分,每一部分都稱之為分區;
正常數據:是指在磁盤分區的文件分配表中有已使用的標記和已使用字節數的塊中可正常播放的視頻數據;
丟失數據:是指磁盤分區的文件分配表中標識為未使用區域的塊所對應的地址中保存的可播放的有效視頻數據;
覆蓋數據:是指在磁盤分區的文件分配表中有已使用的標記的塊中標記為未使用的中可正常播放的視頻數據。
技術實現要素:
本發明針對現有技術的不足,提供了一種嵌入式安防設備的數據提取方法,能夠有效的解決現有技術無法恢復監控機的未使用區域的丟失文件、已使用區域中未被覆蓋的碎片文件;即使能進行視頻數據的恢復,但也無法對文件屬性加以區分等問題。
為解決以上問題,本發明采用的技術方案如下:一種嵌入式安防設備的數據提取方法,包括以下步驟:
S1加載磁盤,并讀取磁盤0扇區信息;
S2檢測磁盤是否符合監控設備在存儲文件時的基本結構,若符合則跳至S3,不符合跳至S1;
S3解析磁盤的引導扇區的記錄信息;
S4根據磁盤使用的位圖表信息來解析磁盤的使用情況,讀取對應地址 的相應數據;
S5讀取丟失數據和覆蓋數據;
S51解析磁盤的位圖表信息解析出磁盤的空閑塊,并計算出該塊對應的數據區地址,判斷該地址的內容是否為空,不為空時按照嵌入式監控設備的視頻數據結構提取有效的視頻數據;
S52解析磁盤的位圖表信息,遍歷在磁盤的正常文件,計算出該塊對應的數據區地址,判斷該地址的內容中未使用的部分是否為空,不為空時按照嵌入式監控設備的視頻數據結構提取有效的視頻數據;
S6按照正常數據、丟失數據、覆蓋數據三種類別讀取數據記錄后,結合視頻文件的格式結構,分類別提取其對應的有效數據;
S7數據提取完成后,按照類型給提取出的視頻數據進行標記。
作為優選,其中,S4讀取正常數據的詳細流程如下所述:
S41跳至24扇區讀取磁盤的引導記錄信息;
S42讀取引導扇區記錄內容,主要包括扇區大小,每塊扇區數,第一個數據區的塊號,位圖表的地址,首塊的扇區地址的信息;
S43根據S42解析結果,跳至位圖表所在扇區地址,并讀取位圖表的信息;
S44判斷位圖表中記錄的各塊的使用情況,從位圖表所在扇區地址的首字節開始,每0x20字節為一個塊的記錄表項,根據表項的記錄信息判斷其是否被使用,若任一塊均未被使用則跳至S412,否則跳至S45;
S45讀取當前第n塊的位圖表表項信息,其中n=0;
S46根據S45讀取的內容判斷該塊所對應的區域是否被使用,若該塊被使用則跳至S47,否則跳至S49;
S47根據公式計算出該塊所記錄的扇區地址,并讀取扇區中所有數據;
S48創建已讀取的塊的集合Ni,并將該塊號n作為集合Ni的元素,寫入集合,其中i為大于等于1的整數;
S49向當前讀取的位置向后跳轉0x20字節;
S410判斷S49所在的地址是否已經超出位圖表所在區域,若未超出位圖表所在的區域則跳至S45,否則跳至S411;
S411創建正常數據的集合N,將上述的Ni寫入集合N;
S412按照視頻數據的時間、通道的信息標記上述檢索到的文件,完成對正常數據的提取。
作為優選,S51讀取丟失數據的詳細流程如下所述:
S511跳至24扇區讀取磁盤的引導記錄信息,讀取扇區大小,每塊扇區數,第一個數據區的塊號,位圖表的地址,首塊的扇區地址的信息;
S512根據S511解析結果,跳至位圖表所在扇區地址,并讀取位圖表的信息;
S513讀取當前第n塊的位圖表表項信息,其中n=0;
S514根據S513讀取的內容判斷該塊所對應的區域是否被使用,如果該塊未被使用則跳至S515,否則跳至S518;
S515根據S513讀取的塊的位圖表項信息,計算出該塊對應的區域所在的扇區地址,判斷扇區的內容是否全為0,若不是則跳至S516,否則跳至S518;
S516根據S515中計算的地址,結合錄像機的視頻數據格式來讀取該區域扇區中的所有符合錄像機的視頻數據格式且有效的數據;
S517創建已讀取的塊的集合Li,并將該塊號n作為集合Li的元素, 寫入集合,其中i為大于等于1的整數;
S518向當前讀取的位置向后跳轉0x20字節;
S519判斷S518所在的地址是否已經超出位圖表所在區域,若未超出位圖表所在的區域則跳至S513,否則跳至S5110;
S5110創建丟失數據的集合L,將上述的Li寫入集合L;
S5111按照視頻數據的時間、通道的信息標記上述檢索到的文件,完成對丟失數據的提取。
作為優選,S52讀取覆蓋數據的詳細流程如下所述:
S521讀取集合N中第n個元素記錄的塊號,其中n=0;
S522根據S521解析結果,跳至位圖表中該塊的表項所在扇區地址,并讀取表項的信息;
S523根據塊的表項記錄信息,計算出塊所在的扇區地址,并計算塊中的未使用區域;
S524根據S523計算結果讀取該塊中的未使用區域的數據;
S525判斷S524讀取的數據扇區內容是否全為0,若不是則跳至S526,否則跳至S528;
S526根據S524中讀取的數據,結合錄像機的視頻數據格式來讀取該區域扇區中的所有符合錄像機的視頻數據格式且有效的數據;
S527創建已讀取的塊的集合Fi,并將該塊號n作為集合Fi的元素,寫入集合,其中i為大于等于1的整數;
S528讀取集合N中的下一個元素;
S529判斷S528所讀取元素的是否超出集合N的范疇,若未超出則跳至S523,否則跳至S5210;
S5210創建覆蓋數據的集合F,將上述的Fi寫入集合F,其中i為大于等于1的整數;
S5211按照視頻數據的時間、通道的信息標記上述檢索到的文件,完成對覆蓋數據的提取。
本發明的有益效果如下:本發明采用了解析磁盤的分區情況,并解析分區的起始地址、大小、引導扇區地址;根據分區所使用的文件系統格式解析分區的各項參數及分區的使用情況,讀取對應地址的相應數據;讀取丟失數據和覆蓋數據;按照正常數據、丟失數據、覆蓋數據三種類別讀取數據記錄后,結合視頻文件的格式結構,分類別提取其對應的有效數據。基于上述方法,本發明可以快速判斷磁盤數據是否為WFS的監控視頻數據格式,也可以提取出磁盤數據中有效的視頻數據文件,包括正常數據文件、丟失數據文件和覆蓋數據文件;還可以正確區分視頻數據文件正常、丟失、覆蓋的狀態。
附圖說明
圖1磁盤數據解析主流程;
圖2 S4讀取正常數據記錄流程;
圖3 S511讀取丟失數據記錄流程;
圖4 S512讀取覆蓋數據記錄。
具體實施方式
為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖并舉實施例,對本發明做進一步詳細說明。
針對上述提出的問題,本發明提出一種針對嵌入式安防設備的數據提取的方法與裝置,該方法不僅高效提取正常的視頻數據,還能將非正常的 數據有效的恢復。
下面詳細介紹WFS嵌入式監控設備在存儲文件時的基本結構。為了更為方便的闡述本發明中的方法,本例使用WFS0.4版本的視頻數據格式為例進行闡述,存儲介質在接入該類型機器后被初始化,初始化結果是將存儲介質分為1個分區,且該分區具有如下如果下的結構特點:分區的引導扇區的信息記錄在24扇區,該扇區記錄了磁盤中的扇區大小,每塊扇區數,第一個數據區的塊號,位圖表的地址,首塊的扇區地址等信息。
基于上述的存儲文件的邏輯,本發明所采用的數據解析的思路是:按照磁盤的分區逐一讀取,在讀取每一個分區時按照正常數據文件、丟失數據文件、覆蓋數據文件進行分類解析。在讀取正常數據文件時,解析分區的文件分配記錄表,從該表中解析已經使用的塊記錄,并讀取其中視頻數據;在讀取丟失數據文件時,解析分區的文件分配記錄表,從該表中解析未使用的塊記錄,并讀取其中視頻數據判斷其是否為空,不為空時按照WFS嵌入式監控設備的視頻數據結構提取有效的視頻數據;在讀取覆蓋數據文件時,解析分區的文件分配記錄表,從該表中解析已使用的塊記錄及已使用塊的字節數,然后讀取其中未使用字節的視頻數據,判斷其是否為空,不為空時按照WFS嵌入式監控設備的視頻數據結構提取有效的視頻數據。
WFS錄像機的真實視頻數據格式有如下的特征:
特征一:數據文件是以0x000001FC02192C24為文件特征頭;
特征二:相對數據文件特征頭偏移0x08~0x0B表示視頻數據起始時間;
特征三:相對數據文件特征頭偏移0x0D表示視頻數據記錄的通道編號;
特征四:相對數據文件特征頭偏移0x10~0x15記錄了視頻數據是否可播放的標記信息,且可播放標記的值是0x 000000016742;
本發明的恢復方法包括以下內容:
S1加載磁盤,并讀取磁盤0扇區信息;
S2檢測磁盤是否符合WFS監控設備在存儲文件時的基本結構,若符合則跳至S3,不符合跳至S1。具體地,判斷是否符合WFS監控設備在存儲文件時的基本結構的條件有以下兩條準則:
準則一:磁盤的0扇區中的包含0x574653302E34;
準則二:磁盤的20扇區和24扇區不全為0;
S3解析磁盤的引導扇區內容,跳至24扇區解析其中記錄的扇區大小,每塊扇區數,第一個數據區的塊號,位圖表的地址,首塊的扇區地址信息,具體地,相對扇區起始偏移0x2C~0x2F記錄的值表示磁盤扇區的大小,相對扇區起始偏移0x30~0x33記錄的值表示每塊的扇區數,相對扇區起始偏移0x38~0x3B記錄的值表示第一個數據區的塊編號,相對扇區起始偏移0x44~0x47記錄的值表示位圖表所在的扇區地址,相對扇區起始偏移0x48~0x4B記錄的值表示第一個塊所在的扇區地址;
S4根據磁盤使用的位圖表信息來解析磁盤的使用情況,讀取對應地址的相應數據;
S5讀取丟失數據和覆蓋數據;
S51解析磁盤的位圖表信息解析出磁盤的空閑塊,并計算出該塊對應的數據區地址,判斷該地址的內容是否為空,不為空時按照WFS嵌入式監控設備的視頻數據結構提取有效的視頻數據;
S52解析磁盤的位圖表信息,遍歷在磁盤的正常文件,計算出該塊對應的數據區地址,判斷該地址的內容中未使用的部分是否為空,不為空時按照WFS嵌入式監控設備的視頻數據結構提取有效的視頻數據;
S6按照正常數據、丟失數據、覆蓋數據三種類別讀取數據記錄后,結合視頻文件的格式結構,分類別提取其對應的有效數據;
S7數據提取完成后,按照類型給提取出的視頻數據進行標記。
其中,S4讀取正常數據的詳細流程如下所述:
S41跳至24扇區讀取磁盤的引導記錄信息;
S42讀取引導扇區記錄內容,主要包括扇區大小,每塊扇區數,第一個數據區的塊號,位圖表的地址,首塊的扇區地址等信息;
S43根據S42解析結果,跳至位圖表所在扇區地址,并讀取位圖表的信息,具體地,位圖表所在扇區地址的首字節開始,每0x20字節為一個塊的塊記錄表項,在每一個塊表項中,相對于塊表項記錄頭部偏移0x0C~0x0F記錄的值表示塊所對應視頻數據的起始時間,相對于塊表項記錄頭部偏移0x10~0x13記錄的值表示塊所對應視頻數據的結束時間,相對于塊表項記錄頭部偏移0x1F記錄的值表示該塊對應的視頻數據的通道號;
S44判斷位圖表中記錄的各塊的使用情況,從位圖表所在扇區地址的首字節開始,每0x20字節為一個塊的記錄表項,根據表項的記錄信息判斷其是否被使用,若塊表項中的前兩個字節為0x00FE或者塊表項的0x20字節全部為0x00,則表示該塊未被使用,否則表示該塊被使用,根據這一準則來判斷位圖表中各表項的使用情況,若任一塊均未被使用則跳至S412,否則跳至S45;
S45根據S44中解析的塊表項結構,讀取當前第n(n=0)塊的位圖表表項信息;
S46根據S45讀取的內容判斷塊是否被使用,其判斷準則有如下兩條:
規則一:表項中的前兩個字節為0x00FE;
規則二:塊表項的0x20字節全部為0x00;
若塊表項滿足其中之一則表示該塊未被使用,否則表示該塊已被使用,根據上述準則判斷當前快是否被使用,若該塊被使用則跳至S47,否則跳至S49;
S47根據公式塊所在扇區地址=第一個塊所在的扇區地址+塊編號n*每塊的扇區數,計算出該塊所記錄的扇區地址,并讀取扇區中所有數據;
S48創建已讀取的塊的集合Ni,并將該塊號n作為集合Ni的元素,寫入集合;
S49向當前讀取的位置向后跳轉0x20字節;
S410判斷S49所在的地址是否已經超出位圖表所在區域,判斷的標準是讀取當前偏移地址后的0x200字節的數據,判斷其是否全為0,若是則表示已超出位圖表所在的區域則跳至S411,否則跳至S45;
S411創建正常數據的集合N,將上述的Ni寫入集合N;
S412按照視頻數據的時間、通道等信息標記上述檢索到的文件,完成對正常數據的提取;
S51讀取丟失數據的詳細流程如下所述:
S511跳至24扇區讀取磁盤的引導記錄信息,讀取扇區大小,每塊扇區數,第一個數據區的塊號,位圖表的地址,首塊的扇區地址等信息,具體地,相對扇區起始偏移0x2C~0x2F記錄的值表示磁盤扇區的大小,相對扇區起始偏移0x30~0x33記錄的值表示每塊的扇區數,相對扇區起始偏移0x38~0x3B記錄的值表示第一個數據區的塊編號,相對扇區起始偏移0x44~0x47記錄的值表示位圖表所在的扇區地址,相對扇區起始偏移0x48~0x4B記錄的值表示第一個塊所在的扇區地址;
S512根據S511解析結果,跳至位圖表所在扇區地址,并讀取位圖表的信息,具體地,位圖表所在扇區地址的首字節開始,每0x20字節為一個塊的塊記錄表項,在每一個塊表項中,相對于塊表項記錄頭部偏移0x0C~0x0F記錄的值表示塊所對應視頻數據的起始時間,相對于塊表項記錄頭部偏移0x10~0x13記錄的值表示塊所對應視頻數據的結束時間,相對于塊表項記錄頭部偏移0x1F記錄的值表示該塊對應的視頻數據的通道號;
S513讀取當前第n(n=0)塊的位圖表表項信息;
S514根據S513讀取的內容判斷該塊所對應的區域是否被使用,如果該塊未被使用則跳至S515,否則跳至S518;
S515根據S513讀取的塊的位圖表項信息,根據公式塊所在扇區地址=第一個塊所在的扇區地址+塊編號n*每塊的扇區數,計算出該塊對應的區域所在的扇區地址,判斷所有扇區的內容是否全為0,若不是則跳至S516,否則跳至S518;
S516根據S515中計算的地址,結合WFS錄像機的視頻數據格式來讀取該區域扇區中的所有符合WFS錄像機的視頻數據格式且有效的數據;
S517創建已讀取的塊的集合Li,并將該塊號n作為集合Li的元素,寫入集合;
S518向當前讀取的位置向后跳轉0x20字節;
S519判斷S518所在的地址是否已經超出位圖表所在區域,判斷的標準是讀取當前偏移地址后的0x200字節的數據,判斷其是否全為0,若是則表示已超出位圖表所在的區域則跳至S5110,否則跳至S513;
S5110創建丟失數據的集合L,將上述的Li寫入集合L;
S5111按照視頻數據的時間、通道等信息標記上述檢索到的文件,完成 對丟失數據的提取;
S52讀取覆蓋數據的詳細流程如下所述:
S521讀取集合N中第n(n=0)個元素記錄的塊號;
S522根據S521解析結果,根據公式第n塊表項相對位圖表起始的偏移地址=(塊表項的編號n+1)*0x20,跳至位圖表中該塊的表項所在的地址,并讀取表項的信息;
S523根據塊的表項記錄信息,根據公式塊所在扇區地址=第一個塊所在的扇區地址+塊編號n*每塊的扇區數,計算出塊所在的扇區地址,并計算塊中的未使用區域;
S524根據S523計算結果讀取該塊中的未使用區域的數據;
S525判斷S524讀取的數據扇區內容是否全為0,若不是則跳至S526,否則跳至S528;
S526根據S524中讀取的數據,結合WFS錄像機的視頻數據格式來讀取該區域扇區中的所有符合WFS錄像機的視頻數據格式且有效的數據;
S527創建已讀取的塊的集合Fi,并將該塊號n作為集合Fi的元素,寫入集合;
S528讀取集合N中的下一個元素;
S529判斷S528所讀取下一個元素是否仍屬于集合N,即判斷(n+1)∈N是否成立,若成立則跳至S523,否則跳至S5210;
S5210創建覆蓋數據的集合F,將上述的Fi寫入集合F;
S5211按照視頻數據的時間、通道等信息標記上述檢索到的文件,完成對覆蓋數據的提取。