李子川
(中国刑警学院 辽宁 沈阳 110035)
WFS视频监控系统数据搜索与恢复技术研究
李子川
(中国刑警学院 辽宁 沈阳 110035)
通过对WFS嵌入式视频监控系统H.264编码的数据分析,实现了在WFS非通用型文件系统中按录制时间对视频监控数据进行碎片级的搜索技术。同时并通过分析WFS非通用型视频监控文件存储规律实现了对该类型视频监控文件在格式化或删除的情况下的数据恢复工作。
WFSH.264时间戳 通道分离
WFS嵌入式视频监控系统是目前安防行业常用的视频存储文件系统,由于该文件系统的特殊性导致它不能被Encase、X-ways等专业的电子取证平台所解析,视频监控文件的恢复取证工作只能通过分析视频监控底层数据进行。同时由于视频监控系统的应用范围越来越广泛,存储视频监控设备的容量越来越大,一般在1TB以上,视频监控文件成千上万,即便是在视频监控文件系统没有被破坏的情况下,想找到某一特定时间的视频也是相当费时费力的,鉴于此如何针对底层数据在文件索引缺失情况下快速定位某一时间段的视频文件,以此来确定检材是否含有涉案时间段的内容,成为研究此类数据恢复工作的焦点问题之一。此外由于视频监控系统是一种实时多通道并发的文件系统,造成其视频监控文件存储碎片化,因此对视频监控文件的通道分离与数据重组技术,成为研究此类数据恢复工作的焦点问题之二。本文基于安防系统中常见的WFS文件系统,分析其H.264编码数据信息,解析了其时间属性表示方法,实现了基于录制时间的快速定位视频监控文件的搜索技术,同时利用其文件系统存储特点,分离各个通道的数据信息,进而重组视频文件碎片。
2.1 WFS文件系统解析
WFS文件系统的1扇区至23扇区为保留扇区,24扇区为系统启动扇区。在第24扇区相对扇区头偏移量为0x10的位置能够读出该视频监控系统最后一次录制视频的起始时间0x5520D939,转换成时间类型为2014年7月12日18点01分21秒,由于该时间类型是系统自定义类型,在3.2中将进一步地说明。在偏移量0x30位置能读出该文件系统的块大小信息0x0000000000001000,占用8个字节,十进制表示为4096,单位为扇区,因此WFS文件系统的块大小为2MB,它是WFS文件系统为视频文件分配的最小存储单位,块内理论上只能存在单一通道的视频监控文件。在其它的监控系统文件系统中也多采用2MB为块大小。
2.2 WFS视频监控系统存储方式研究
WFS视频监控采用文件顺序存储方式,实时的为每个通道分配2MB的存储空间,在磁盘中顺序交替存储,假设CHn表示各个通道的视频片断信息,在只有3个通道的视频监控系统中,WFS文件系统中各通道视频片断存储情况如图1所示。
图1 WFS文件存储方式
编号为1至6的视频片断为正常录制视频监控的情况,各个通道视频片断交替存储。进一步分析发现,在按通道重组文件的过程中只要知道通道的数量,顺序向前移动2nMB的地址空间,依次导出即为同一通道的视频文件,但是在视频监控系统重新启动的情况下各个通道存储的顺序可能发生改变,由于在WFS的帧格式中没有关于通道说明的信息,这就要求在分离通道的过程需要根据录制时间进一步判断两个视频监控块是否能够连续,才能判断是否是同一通道的视频监控数据块,此外当视频通道录制结束时,会在块中写入大量0xFFFF的结束标识,如图2所示,调查人员应该意识到视频监控文件的结束标识不会填满整个数据块,一块中仍会留下部分数据残留,视频监控文件的块内残留数据区,虽然不属于文件系统中正常数据,但其中任然可能存放涉案视频,如图3所示。
图2 WFS文件存储方式
对于如何进行块对齐,以及如何确定块是否属于同一通道的视频监控,将在第4部分中进一步说明。
3.1 WFS通讯协议数据包分析
WFS视频监控系统实时传输通讯协议存在两种数据报文负载封装格式,其头标识分别为“0x000001FC”与“0x000001FD”后面封装标准的H264编码NAL网络抽象层数据格式报文。WFS视频监控系统网络通讯报文与H264视频帧编码之间均采用0x000001进行分割。
图3 块内数据残留区的视频监控图像
图4 “0x000001FC”关键帧头标识
其中“0x000001FC”后面封装H.264视频中关键帧数据信息,如图6所示。“0x000001FC”封装关键帧报文的头长度为16字节,相对偏移地址的具体含义见表1所示。
根据上文讨论的信息经济分层,考虑数据的可取性和适用性,本文构建了一个信息经济发展水平测度指标体系,以准确定位西部各省区发展信息经济的机遇和挑战。该体系包括了基础层、传输层、融合层、新生层和福利层5个一级指标,共28个二级指标(见表1)。
表1 “0x000001FC”数据报文头格式
图4中“000001FC”为数据包头标识,0x02为固定值,0x19表示帧率为25帧/秒,0x2C表示视频宽度1/8,因此该监控视频宽度为352;0x24表示该视频的高度,因此该监控视频宽度为288,0xCAE7D839表示该关键帧数据包的生成时间,表示为2014年7月12日14点31分10秒,0x325B0000表示从“0x00000167”开始的负载长度。
其中“0x000001FD”起始标识后面封装H.264视频中非关键帧信息,封装报文的头长度为8字节,前4节表示起始标识,后4字节表示负载长度。
需要说明上述十六进制表达仅为底层数据显示顺序,并没有考虑大小端编码,因此取数据仍需要进行数据大小端的转换。
3.2 WFS通讯协议中时间戳解析
“000001FC”数据包封装有关键帧的数据信息,其头部结构中有关键帧生成的时间戳,这个时间对于碎片级搜索视频监控数据信息是十分重要的,通过对底层数据分析发现“000001FC”数据报文与视频监控关键帧信息具有对应关系,而关键帧数据信息中含有视频录像中的基本图像数据单元,其它帧都是对基本图像单元进行动态修正,同时“000001FC”数据报文中的时间戳也是视频片段帧起始录制的时间点,因此搜索某一个时间点上的视频监控录像,可以通过搜索“000001FC”数据报文中的时间戳信息实现,值得注意一点是并不能说视频录像信息都存放在“000001FC”数据报文中,但是只有“000001FC”数据报文含有关键帧中的基本图像信息单元,“000001FD”中也含有视频监控数据信息,但不足以进行有效解码为视频文件。根据以上信息可以在底层数据抽离最小的可视化的视频单元,如图5所示,该视频文件仅为22.8KB其中只含有效一帧图像信息。图4为该帧的底层数据表达形式。
WFS视频监控系统中的时间存储格式定义为非常见的时间格式定义,与Unix32位时间戳和windows32位时间戳有很大的区别,在分析其时间格式之前必须先介绍WFS32位时间戳的字节顺序,以图4中时间戳为例,底层数据显示为0xCAE7D839,首先必须先转成大端字节序形式,转换过后十六进制表示为0x39D8E7CA,基本上转换过后0x39字节高6位表示年,0xCA低6位表示秒,具体的二进制位含义见表2。
图4 WFS文件存储方式
图5 关键帧截图信息
表2 WFS视频监控系统时间格式
视频监控系统时间格式中的起始时间为2000年1月1日0时0分0秒,因此14需要加上2000才是真实的年份,同时应注意到表示年份只有6位二进制位,因此它只能取值在0-63之间。掌握的时间格式可以根据指定的时间在底层数据中进行搜索,准确定位,当然同样包含在块内残留区中的数据。下面以上述时间0xCAE7D839信息为例,使用Encase取证软件中Grep语法关键字搜索方法定位某个具体时间点视频监控,设置关键字的Grep表达式为“x00x00x01xFC.{4,4}xCAxE7xD8x39”,其中.{4,4}表示可以出现任何4个字节的数据,图6显示为搜索的结果截图。
图6 基于视频录制时间点的encase软件搜索命中
从图6中可以看出,共有31个命中信息,分别对应视频监控中31个通道的视频文件,进一步可以说明为,在该时间起点上同有31个通道的视频在同时录制。如果段信息在块内残留区,此方法仍然可以搜索到。
基本时间戳的数据搜索方法能够精确定位到最小的可视视频单元,实现了底层数据更为细致的数据搜索,但是调查人员也应注意,视频监控中的时间信息本质是来源于系统时间,如果系统时间设置错误,那么指定时间搜索可能不会得到令人满意的结果,因此在数据搜索之前,应该充分的对时间进行可参照的校验工作,确定视频监控系统时间信息与真实时间的偏差,矫正后进行相关的数据搜索工作。
基于视频监控文件系统的存储规律单一块内只能存放一个通道的视频内容,块对齐与块重组的目的是为形成较长时间段的同一通道的视频文件,便于分析检验,2MB存储空间大约只能录制几十秒的视频记录。根据2.2以及3.2中介绍内容当命中指定时间点的视频文件后将对其进行块对齐与块重组的数据分析,因为0x000001FC与0x000001FD在视频录制的传输过程中并不一定是在块首的地址的位置,但是在视频监控录制最开始的位置上块首地址应该为0x000001FC或0x000001FD开头,而且块分割的磁盘物理地址一般在整数MB或者整数扇区的物理地址位置上,依此找到视频监控块的分割地址,如图7所示。
图7 块分割起始地址
图7中标识的是视频监控中0通道的起始地址,依次的1通道的起始地址应为0xA0A0000,通道2的地址应为0xA2A0000的物理位置上依此类推,如图8所示。
图8 通道1、2块起始地址
下面介绍通道分离的方法,首先查看命中数据块最后一个数据报文的长度,这个报文可能是000001FC开头,也可能是000001FD开头,但是都能读出该数据报文的长度,如图9所示,为0x050D长度为1293个字节,但是到该块末尾只有695字节。
图9 块内最后一个数据包截图
图10 连续块头部部分数据截图
合理预期在下一个连续块的开始部分存放有598个字节上一个数据报文剩下的部分字节,然后出现000001F C或是000001F D数据分割标识。依据块的分割地址规律求出下一个在偏移598字节后出现000001F C或是000001F D数据块地址,如图10所示。
然后判断该块中首关键帧的数据包生成时间是否与上一个块中最后一个关键帧的生成时间是否有连续性,最终确认两块是否为同一通道的视频监控文件。上一个数据块最后一个关键帧000001FC数据包中包含的时间信息为0xECE6D839,如图11所示,表示的时间为2014年7月12日14点27分44秒,接续它的块地址中首关键帧000001FC数据包中包含的时间0xEEE6D839,如图12所示,表示为2014年7月12日14点27分46秒,时差仅相差2秒,依此两规则一直找到不能形成连续视频的数据块或者遇到大量0xFFFF视频文件结束标识。
图11 块内最后一个时间戳信息
图12 接续块内首个时间戳信息
区分通道后可以将连续的视频块按顺序存放在一个文件,这样播放时就会是时间较长的视频片段,减少检验的工作量,提高工作效率。
基于录制时间的关键帧定位数据搜索方法,解决了视频监控碎片精确定位问题。虽然在WFS文件系统底层数据中没能发现有关于通道号的信息,但是通过接续数据包长度与接续录制时间的判断方法,仍能有效的区分通道,实现文件按的重组,提供完整的视频监控文件信息。
[1]徐炼,张国臣.非通用存储格式数字监控录像的鉴定技巧[J].刑事技术,2010,(2):52-53.
[2]段成阁,张国臣,楚川红.汉邦监控录像时间信息研究[J].刑事技术,2013,(3):42-43.
[3]姚波,贾永生,宋润.运用关键字搜索法进行硬盘录像的底层恢复[J].刑事技术,2012,(5):12-14.
[4]郭丽莉,康艳荣,龙源,等.一类视频监控录像数据恢复的新方法[J].刑事技术,2015,(2):170-172.
(责任编辑:孟凡骞)
DF793.2
A
2095-7939(2015)04-0042-04
2015-05-18
东穗科技创新基金项目(编号:2014-11);网络安全执法与公安技术信息化协同创新中心资助项目。
李子川(1979-),男,辽宁沈阳人,中国刑警学院网络犯罪侦查系讲师,硕士,主要从事电子物证检验研究。