作者简介: 李子川,讲师,博士研究生,研究方向为电子物证。 E-mail: lizic008792@126.com
近些年来多数生产视频监控设备的厂商采用非通用型视频监控系统,导致视频数据恢复困难,本文选取了市场占有率较大的大华视频监控系统进行深入分析,通过解析其视频监控DHFS文件系统的关键参数以及帧格式等信息,实现了在大华监控视频数据被误格式化或者部分覆盖的情况下残缺大华视频监控数据的通道分离与重组,进而完成了对大华视频监控数据的恢复工作。实验结果证明了该技术方法的高效性和准确性,同时也为其它类型的非通用型视频监控文件系统的电子数据取证工作提供建设性的取证鉴定思路。
As surveillance video detection technology is playing an increasingly important role in almost all kinds of cases in the process of probing in recent years, the criminal suspects often use a variety of means to forge or tamper their surveillance videos. Thus, in the field of electronic evidence research, data recovery of non-universal video surveillance system is a hot issue. This paper analyzes a kind of video surveillance system with large market share. Firstly, the critical parameters were resolved, together with the obtainment of the size and arrangement of the video surveillance data block. Secondly, the video frame structure was analyzed in-depth in order to determine which channel a data block belongs to or to acquire video record starting time in the data block. Two corresponding algorithms were presented. Eventually, for the mistakenly formatted or partially covered data, the video surveillance data channel was separated and reorganized, leading to the restoration of the type of video surveillance data. Through the analysis of the data block of arbitrary selection, it confirmed that the key parameters were read out correctly. By comparison of the frame format of the readout channel number with the actual display of the channel number in the monitoring video, the correctness of the frame format was verified. Combined with actual case, the results of the two algorithms proposed in this paper were given and briefly analyzed of their implementation, showing the efficiency and accuracy of the technology, providing some reference for forensic work about electronic data of other non-universal video surveillance. For data search and recovery from non-universal video surveillance, the in-depth study is still necessary, in particular on data fragmentation.
在各类案件的侦办过程中, 由于监控视频侦查技术的作用越来愈突出, 嫌疑人千方百计伪造或篡改不利的监控视频, 因此视频监控系统的文件恢复成为电子取证领域研究的热点问题。尤其是一些市场占有率大的视频监控系统, 如大华视频监控系统, 视频监控数据的恢复就显得更为重要。嵌入式视频监控系统多采用非通用型视频监控存储的文件系统[1], 用常规的取证工具无法解析, 如Encase、X-ways等, 视频监控文件的恢复取证工作只能通过分析视频监控底层数据进行。对于非通用型视频监控系统的取证技术有一些取证经验的总结以及检验技术方法的设计[2, 3, 4], 但是仍然有较多问题值得深入研究。通过分析嵌入式非通用型视频监控系统提出了通过特征关键字底层搜索的技术方法[5], 找到视频监控文件结构特征, 实现对视频监控文件内容进行底层恢复的目的, 但是这种技术方法仍然没能有效确认文件的通道信息。恢复出的视频监控文件会出现视频监控文件结构不完整, 视频内容通道混乱的问题, 还会出现多个通道的视频内容。本文通过深入分析嵌入式大华视频监控DHFS文件系统, 对视频监控数据进行了通道分离, 实现了该类视频监控文件的较为完整数据的恢复。
大华视频监控文件系统属于典型的非通用型文件系统, 其视频监控数据存储结构均由厂商自己定义, 在存有大华视频监控的磁盘中可以在0扇区偏移量为0x0000位置发现文件系统关键字“ DHFS” 标识信息, 十六进制表示为0x44484653342E31, 后面接着存有文件系统的版本信息, 如DHFS4.1。DHFS文件系统的1扇区至33扇区为保留扇区, 34扇区为系统启动扇区。第34扇区能够发现引导扇区的标识0x55AA55AA, 并且在相对扇区头偏移量为0x30的位置能够读出DHFS文件系统的块大小信息0x0000000000001000, 占用8个字节, 十进制表示为4096, 单位为扇区, 即DHFS文件系统的块大小为2 MB, 块是DHFS文件系统为视频文件分配的最小存储单位, 块内理论上只能存在单一通道的视频监控文件。块的存在为优化DHFS视频监控恢复算法起到了十分重要的作用。值得注意的是, DHFS属于自定义的视频监控系统, 即便同一个版本由于配置的不同底层数据存储的格式也会出现一些差别, 这时需要调查人员根据具体情况加以分析。
帧是视频监控数据组成的基本单位, 视频监控数据是由许多帧按照一定的顺序组合而成, 帧存在多种类型, 而且帧的大小不固定, 每个帧的起始位置不一定只出现在扇区或块的起始地址, 它可以出现在任何合理的物理地址范围内。大华视频监控文件中视频帧是由其自定义的网络通讯协议封装RTP载荷的H.264码流组成, 大华视频帧与一般的H.264编码的视频帧是不同的, 它对原始H.264视频数据进行了多次封装。
由于大华视频每帧中都含有特定的网络通讯协议头部信息和尾部信息, 通过分析帧中网络通讯协议头或尾部的数据特点可以实现对视频帧进行搜索和定位, 经过大量实验发现其帧起始特定标志为大写字母DHAV, 十六进制表示为0x44484156, 帧结束标志为小写字母dhav, 十六进制表示为0x64686176(见图1)。大华帧头部结构中记录了基本的视频属性信息, 例如帧的编号、帧所属通道号、帧长度以及帧的创建时间等等。这些属性是视频监控数据进行通道分离与重组的关键信息, 其中与视频监控恢复相关的属性信息, 如表1所示, 头部结构中相对DHAV标识偏移量为0x04描述的是帧类型; 如图1中偏移0x06位置描述通道号, 此帧的通道号是0x0005, 具体含义表示为6通道, 因为通道号是0作为基数表示1通道; 0x08描述的是此帧编号, 考虑到大小端表达形式, 十六进制表示为0x47D0; 相对DHFS偏移0x0C是此帧的长度, 此帧长度是0x00000F80, 十进制表示为3698字节; 相对DHAV偏移0x10是描述此帧的创建时间信息, 十六进制表示为0x39308EBB。如图1中 dhav后四个字节为帧长度, 十六进制表达式为0x20F8, 转换成十进制为8840字节, 用于校验。尾部结束标志为小写字母dhav, 具体帧尾部结构见表2。
视频监控采用实时文件顺序存储方式, 整体的基本布局结构如图2上所示, 从文件系统数据区可以分析出大华视频监控文件系统的标识, 视频监控存储块大小等信息, 这些参数对于大华视频监控数据的恢复有十分重要的作用, 例如DHFS会实时分配给各个视频通道2 MB存储空间, 该值由启动扇区中相应参数定义, 各通道的视频片段以2 MB为分割, 在磁盘中顺序交替存储, 但是有些情况下也存在连续存放单一通道2 MB视频片段的情况, 假设CHn表示所属通道的2 MB视频片段, 在只有3个通道的视频监控系统中, DHFS文件系统中各通道视频片段存储排列情况如图2下所示, 视频片段代表视频存储过程中一个2 MB的视频数据块, 其中编号为1~6的视频片段为正常录制视频监控的情况, 各个通道视频片段交替存储。编号6~10属于连续录制同一通道监控视频的情况。如果DHFS文件系统误格式化或部分视频覆盖的情况下, 视频监控系统的文件系统遭到破坏, 视频监控的恢复需要通过通道分离与重组进行还原, 即分离出1、4、8编号的视频片段, 重组成通道一的视频监控文件, 分离出2、5、9、10编号的视频片段, 重组成通道二的视频监控文件, 分离出3、6、7编号的视频片段, 重组成通道三的视频监控文件。因此对于DHFS文件系统数据取证问题, 将转化成如何确定2 MB块对齐, 以及如何确定2 MB大小的块属于哪个通道的视频监控文件的问题, 这两问题将在2.2和3中进一步讨论。
一般情况下, DHFS4.1数据块内全部存储视频数据, 但某些DHFS4.1系统中数据块采用了自定义索引结构, 在块的起始部分加入了关键帧时间索引信息, 起始标识为DHII, 目的是为了方便用户查找特定时间点上的视频监控信息(见图3左)。相对DHII偏移量为0x6AFAF位置上的十六进制底层数据如图3右上所示, 从图中可以看出通过索引信息可以实现通过时间信息定位查找到对应关键帧的存储位置。多数的嵌入视频监控系统中采用的时间格式多种多样, 大华视频监控系统中也不例外, 大华监控系统时间采用32位格式, 起始时间为2000年1月1日0时0分0秒。其中32位二进制数中, 从高到低, 分别用6位表示年, 4位表示月, 5位表示天, 5位表示小时, 6位表示分钟, 6位表示秒。以图4中的时间0xA648DF38为例, 首先转换成大端字节序0x38DF48A6, 转换过程见图3右下。值得注意的是转换后的年需要加上2000年, 才能得到最终的时间2014年3月15日20时34分22秒。此外通过解析时间格式可以在待检验的检材中进行视频监控碎片级数据搜索。需要明确此时间为大华视频监控中帧创建的时间, 这与视频中显示的起始录制时间会稍有差别, 但是在大多数情况下, 帧创建时间与视频中显示的时间具有对应关系。
块对齐的目的是为了正确分离通道和重组视频, 因为基于DHFS视频监控系统的存储方式分析, 单一块中只能存放某一个通道的视频内容, 如果待恢复视频监控系统中磁盘内容进行了部分的覆盖, 块内信息不完整, 应对剩余未被覆盖的存储空间进行结构还原, 确定块与块间的分割关系, 从而正确的分离通道重组视频文件。视频监控系统中原始数据未被破坏的情况下, 可以在待检磁盘中找到视频监控数据录制的起始位置作为分块的起始地址, 0x8F60000正常情况下是大华监控录像录制的起始地址。若是原始数据被破坏的情况下, 应找到具有特征的标识作为起始地址, 例如DHFS4.1中的“ DHII” , 可以作为视频分块的依据。此外还可以通过找到连续存储空间出现帧中含有不同的通道号的地址范围, 如图4所示, 选取偏移量0x8F60000至0x9360000地址空间为分析对象, 0x915F0CC位置出现DHFS帧头信息, 在0x06偏移量位置, 显示的通道号为0x00, 表示通道1, 同时在接着连续的存储空间0x9160000中发现DHFS帧头信息, 在偏移量0x06的位置, 显示的通道号为0x01, 表示为通道2, 取两帧之间物理地址整数兆位置0x9160000作为块分割的标识地址。即取磁盘物理地址整数兆地址作为块分割的标识物理地址。
DHFS视频监控通道分离与数据重组是建立在视频文件的顺序存储以及视频监控文件存储空间的按块分配的基础之上的, 假设待检验DHFS视频监控总存储空间为S, 起始地址为0x8F60000, 将S划分为2 MB为大小的视频存储分片空间, 每块起始地址的集合表示为A, A={a0, a1, …, an}, 其中元素an表示为相对于视频存储起始地址2n MB处的磁盘物理地址, 那么对于通道分离的过程, 最终是将A集合中的各元素按通道分配给各个重组视频监控数据块列表, 通过算法1中给出通道分离的方法函数, 其基本想法是在于在大华视频监控系统中每个块中只能存放一个通道的视频文件。算法1如下:
Require:
ai某块首地址;
NOF 表示没有发现DHAV帧标识;
Method: ChannelNum返回该块所含的通道值K
1:Goto ai
2:{
3:设定ai至ai+2mb为一选块
4:Find “ DHAV” down BlockOnly 寻找大华帧标识
5:Iffound
6:Move 7 偏移到相应的存储通道号的位置
7:Read k 2 读出2字节内容赋值与K
8:else
9:k← NOF
10:Endif
11:Return k
12:}
将块首地址集合划分成所属通道后, 接下来可以进行按通道号的重组工作, 在根据要求设定一个文件的最大容量2 LMB的同时, 将每个文件对应块的首地址记录在队列中, 并将各个队列的首地址记录在恢复文件的列表中。在重组文件时, 同一通道的视频文件在时间上可能出现不连续的现象, 如果时差超过2 s, 则认为应该为不同的视频监控文件, 依照上述算法, 易得函数ChannelTime, 用于获得数据块内的帧创建时间, 依次来判别同一通道视频监控文件是否连续。整个通道分离与重组技术方法, 见算法2:
Require:
A={a0, a1, …an}按块大小分割后块首地址集合;
CH 视频监控系统通道数量
L 恢复视频文件的包含块的最大数量
T 同一通道录制时间差
K 数据块中帧所代表的通道号
Ensure: 恢复DHFS视频监控文件
1:List< QueuePtr> List_dhfile 定义返回恢复文件队列首地址列表
2:for j=0 to CH do
3:initQueue(Qj) 初始化各通道临时队列
4:for i=0 to n do
5:{
6:k← ChannelNum(ai)返回该块帧中包含的通道号
8:if k==NOF
9:Continue 不含大华视频信息跳出本次循环
7:T← |ChannelTime(ai)-ChannelTime(Qk.end())|
9:if Qk.length< L and T< 2
10:Qk← EnQueue(ai) 将ai插入到相应通道号的队列
11:else
12:List_dhfile.push_back(Qk)
13:initQueue(Qk)
14:Qk← EnQueue(ai) 将ai插入到相应通道号的队列
15:Endif
16:}
值得注意的是在某些版本的DHFS文件系统中进行块内属性的查找时应注意到帧类型, 因为这时一些帧中由于帧类型的不同, 表示通迅命令的含义也不同, 通道号标识位没有任何意义, 此时就需要通过综合分析待检数据确定哪些帧类型后面接有表示通道号的信息。
任意选取集合A={a0, a1, …, an}中元素ax, ay, az为研究对象, 其中ax, ay, az表示为视频存储块的磁盘物理地址。假定x=0, y=1, z=4。ax的起始地址为0x8F6000, ay的起始地址为0x916000, az的起始地址为0x976000, 分块的起始录制时间与结束录制时间的截图, 如图5所示, 块内并没有跳通道, ax, ay作为在物理地址上相邻存储的数据块, 分别表示两个不同通道的视频文件。az作为起始地址的视频块中也没有出现跳通道的现象。
任意选取集合A={a0, a1, …, an}中元素ax为研究对象, 假定x=2其对应底层二进制数据与视频截图的对比, 如图6所示, 帧标识DHAV偏移0x06位置通道号显示为0x02, 因此通道号为3通道, 与画面中显示一致, 帧创建时间0x2B0D526F表示时间为2010年12月6日21时9分47秒, 相对应的视频中记录的起始时间为2010年12月6日21时9分49秒, 相差2 s, 这是由于数据传输过程中延时导致, 属于正常情况。
选取文件系统标识为DHFS4.1的大华监控录像检材, 制作从物理起始开始1.66 GB的磁盘镜像文件, 目的是便于数据分析, 部分实验结果截图, 如图7所示。实验结果显示该算法按通道号正确区分了各个数据块, 并对连续时间的通道进行了重组, 共恢复出了1.52 GB的视频文件, 共80个。
大华视频监控系统作为嵌入式视频监控设备的代表, 其文件系统分析对于其它类型的视频监控系统的分析有较高的借鉴意义, 例如雄迈嵌入式视频监控系统也是采取类似的文件系统存储结构, 但是由于不同品牌嵌入式硬盘录像机的存储结构有较大区别, 如存储起始地址, 帧头标志、结构, 通道、时间的表示多种多样, 因此对于视频监控文件的分类仍然有比较细致的工作可以进行研究。本文设计的数据恢复思路重点在于通过分析视频监控数据块存储结构以及视频监控帧格式, 以此对嵌入式视频监控数据进行通道分离与重组, 进而更加有效地进行数据恢复和电子取证工作。
The authors have declared that no competing interests exist.
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|