Восстановление видеозаписей из системы видеонаблюдения, использующей WFS0.4

Недорогие системы видеонаблюдения получили достаточно широкое распространение. В качестве хранилища данных системы используют один или несколько накопителей на жестких магнитных дисках для записи видеопотоков с нескольких камер. Организация дискового пространства в этих устройствах весьма специфическая. Там Вы не увидите классических файловых систем, которые привыкли видеть в домашнем ПК (FAT32, ExFAT, NTFS, Ext 2, Ext 3, Ext 4, XFS и т.п.) Диск с WFS0.4 в LBA 0 содержит маркер файловой системы в виде ее названия по смещению 0x0 и маркер 58h 4Dh по смещению 0x1FE (вместо привычного 55h AAh). Различные версии ОС Windows, Linux считают данный диск не содержащим какой-либо информации, посему не стоит пытаться увидеть содержимое дисков посредством функционала данных операционных систем.

LBA 0 WFS0.4 file system

LBA 0 файловой системы WFS0.4

В данной файловой системе нет имен файлов. Есть лишь область, например с 0x17e00 (LBA 191), в которой даются описания фрагментов видеопотоков, на описание каждого фрагмента отводится 32 байта, в которых описывается, что расположено в блоке 2 мегабайта. В записи присутствуют две метки времени (timestamp) по 4 байта (в специфическом формате), которые содержат начальное и конечное время записи. В записи содержится ссылка на номер другой записи, если при записи видеопотока одного двухмегабайтного блока оказалось недостаточно. В описании блоков, которые выступают в роли продолжения записи видеопотока метки времени указываются для фрагмента видеоролика, который в них содержится. В начальной записи метки времени отображают весь временной интервал полного видеоролика, состоящего из нескольких блоков. Также в записи содержится информация о номере камеры.

Описание индексной записи
Смещение Длина(байт) Описание
0х1 1 байт Байт атрибутов. Известны следующие значения: 0x1 - блок является продолжением видеозаписи, 0x2 - блок является началом видеозаписи, 0xFE - зарезервированная или удаленная запись
0х2 2 байта В зависимости от состояния байта атрибутов отображает, или количество фрагментов следующих за началом записи, или номер фрагмента.
0х4 4 байта Указатель на номер предыдущего фрагмента записи. Обращаем внимание на то, что номерами блоков могут служить не все значения из множества 0x0 - 0xFF
0х8 4 байта Указатель на номер следующего фрагмента. Если фрагментации нет, то 0. Обращаем внимание на то, что номерами блоков могут служить не все значения из множества 0x0 - 0xFF
0xC 4 байта Метка времени начала записи видео.
0x10 4 байта Метка времени окончания записи видео.
0x18 4 байта Номер первого фрагмента видео.
0x1E 1 байт Номер камеры

 

Index writes WFS file system

Индексные записи файловой системы WFS0.4

В вышеуказанном примере точка начала отсчета области данных 0x8F60000 (LBA 293 632). С этого места начинается отсчет пространства для видеопотоков. При наличии корректной информации в области описания фрагментов (в индексных записях) скопировать файлы видеопотоков с разбивкой по камерам не составит труда. Существуют программные средства от производителей видеорегистраторов, позволяющие просматривать и копировать видеоролики, подключив диск к Вашему ПК. В случае повреждения области с индексными записями либо выполнения операции удаления записей, инициализации диска или форматирования задача существенно усложняется.

Video Stream Data h264

Образец данных видеопотока

Так как никаких иных метаданных у этой файловой системы нет, то данные в таких случаях возможно восстанавливать лишь методом анализа регулярных выражений. В фрагментах видеопотока нет информации о номере камеры. Видеопоток у подобных регистраторов состоит из видеофрагментов, начинающихся с регулярного выражения 0x00 0x00 0x01 0xFC 0x02 0x0C 0x74 0x48 далее следует четырехбайтная метка времени данного фрагмента. Каждый видеофрагмент, принадлежащий данному видеоролику будет идти последовательно с монотонным возрастанием метки времени. В рамках двухмегабайтного блока необходимо произвести поиск всех регулярных выражений и проверить окончилась ли запись в этом блоке. Если запись не завершена, то следует выполнять поиск регулярного выражения в начале последующих блоков видеопотоков и анализировать соседствующие с ними метки времени для установления блока, который является продолжением записи. По окончании записи в остаток блока записываются нули. По этому признаку несложно определять конец записи.

Особого внимания в данном случае заслуживают метки времени. Метка времени состоит из 4 байт (от 0 до 31 бит). В данной метке биты 0-5 отображают секунды (используемые значения от 000000 до  111011), биты 6-11 отображают минуты (используемые значения от 000000 до  111011), биты 12-16 отображают часы (используемые значения от 00000 до 10111), биты 17-21 отображают дни (используемые значения от 00001 до 11111), биты 22-25 отображают месяцы (используемые значения от 0001 до 1100), биты 26-31 отображают года. Метка показывает смещение от 0 часов 0 минут 1 января 2000 года.

После уточнения особенностей строения метки времени становится возможным поиск видеофрагментов и установление даты съемки. Определить номер камеры можно по графической надписи в видеопотоке (если была включена соответствующая опция в видеорегистраторе).

 

 

Павел Янчарский

 

Перепечатка материалов разрешена только с указанием активной ссылки на оригинал статьи

Поделиться
|