本发明属于数据恢复领域,涉及一种嵌入式安防设备的数据提取方法。
背景技术:
国内经济的蓬勃发展带动了不少行业的发展,安保行业正是受益于经济发展过程之中增长趋势最为明显的行业之一。尤其是视频监控技术不断发展的今天,高清监控视频、多角度视频技术等专业的监控设备在各个行业多种场所都得到了有效地推广。视频监控设备在为实现安定和谐安全的社会环境上做出了巨大的贡献。监控探头所拍摄下来的视频显得尤其重要。
嵌入式系统是一种完全嵌入受控器件内部,为特定应用而设计的专用的操作系统,嵌入式系统监控机则是一个控制程序存储在只读存储器中的嵌入式处理器控制板,用于控制和监视摄像探头的装置。从整体性能上来看,嵌入式硬盘录像机表现出来了无比强大的优越性能,并且从目前的市场占有率上看,已经成为安防界的主流产品。
在发达国家,不少监控设备上面存储的数据都是经过多重备份以便确保其数据存储具备高度的安全性。然而,为了节省企业的开支以及降低管理上的难度,很多的持有监控设备的单位并没有做过多的数据安全措施,这就意味着一旦设备上存储的视频资料一旦丢失或出现其他故障,将使得安防功能并无法起到相关的作用。此外,在部分情况下,也为不少案件提供了最真实,最可靠的视频证据,成为了法院决断的依据。因此对监控设备的数据提取与恢复具有重大意义。
由于监控视频的存储是设备厂商自定义的存储格式,不同于任何一种传统意义上的文件系统,这导致传统的数据恢复技术无法应用到监控机的 视频数据提取与恢复中。目前,在针对嵌入式监控机的删除后产生的碎片文件、覆盖后的残余文件无法恢复,而且恢复出来的视频文件的状态属性不能加以区分。
本发明涉及到的部分专业术语:
磁盘分区:在磁盘上划分几个逻辑部分,每一部分都称之为分区;
正常数据:是指在磁盘分区的文件分配表中有已使用的标记和已使用字节数的块中可正常播放的视频数据;
丢失数据:是指磁盘分区的文件分配表中标识为未使用区域的块所对应的地址中保存的可播放的有效视频数据;
覆盖数据:是指在磁盘分区的文件分配表中有已使用的标记的块中标记为未使用的中可正常播放的视频数据。
技术实现要素:
本发明针对现有技术的不足,提供了一种嵌入式安防设备的数据提取方法,能够有效的解决现有技术无法恢复监控机的未使用区域的丢失文件、已使用区域中未被覆盖的碎片文件;即使能进行视频数据的恢复,但也无法对文件属性加以区分等问题。
为解决以上问题,本发明采用的技术方案如下:一种嵌入式安防设备的数据提取方法,包括以下步骤:
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按照视频数据的时间、通道等信息标记上述检索到的文件,完成对覆盖数据的提取。