Недорогие системы видеонаблюдения получили достаточно широкое распространение. В качестве хранилища данных системы используют один или несколько накопителей на жестких магнитных дисках для записи видеопотоков с нескольких камер. Организация дискового пространства в этих устройствах весьма специфическая. Там Вы не увидите классических файловых систем, которые привыкли видеть в домашнем ПК (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
В данной файловой системе нет имен файлов. Есть лишь область, например с 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 байт | Номер камеры |

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

Образец данных видеопотока
Так как никаких иных метаданных у этой файловой системы нет, то данные в таких случаях возможно восстанавливать лишь методом анализа регулярных выражений. В фрагментах видеопотока нет информации о номере камеры. Видеопоток у подобных регистраторов состоит из видеофрагментов, начинающихся с регулярного выражения 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 года.
После уточнения особенностей строения метки времени становится возможным поиск видеофрагментов и установление даты съемки. Определить номер камеры можно по графической надписи в видеопотоке (если была включена соответствующая опция в видеорегистраторе).
Павел Янчарский
Перепечатка материалов разрешена только с указанием активной ссылки на оригинал статьи








