HIKVISION es un fabricante chino líder en el mercado de equipos de videovigilancia (cámaras, grabadores de vídeo, etc.). Los equipos de grabación de videovigilancia tienen características especiales que los diferencia de los “discos duros que graban vídeos” que solíamos tener en casa. Los equipos de videovigilancia funcionan de forma ininterrumpida (24×7), disponen de múltiples y variadas entradas (entradas analógicas, conexión a cámaras IP, etc.), también permiten la grabación de varias cámaras simultáneamente, certifican la fecha y hora de las grabaciones, incluyen protección contra la manipulación de las imágenes, añaden marcas de agua dinámicas, etc etc etc. Las especiales necesidades y características de estos aparatos acaban “degenerando” en soluciones propietarias, mal documentadas e inaccesibles “en principio” a herramientas diferentes de las suministradas por el fabricante. Las herramientas del fabricante se convierten en el único mecanismo disponible para extraer las imágenes y convertirlas en un formato estándar cuando hay que presentarlas ante un tribunal.
En este caso, tenemos una grabadora HIKVISION (modelo DS-7204HFI-ST) que contiene imágenes de un delito (un atraco a un establecimiento). La grabadora tiene un disco duro (500GB en nuestro caso) donde se almacenan, de forma continua, las imágenes tomadas por las cámaras del establecimiento (4 cámaras, en total). Las cámaras tienen detección de movimiento por lo que las imágenes presentan “saltos” en el tiempo. Con esta configuración, el equipo almacena, aproximadamente, las imágenes de un mes (30 días) en modo “round robin”: las secuencias nuevas van sobreescribiendo las secuencias más antiguas.
Si todo hubiese ido bien, el equipo tenía que permitir recuperar, codificar y exportar las imágenes del atraco utilizando simplemente la aplicación de gestión del fabricante. Por desgracia, en este caso el software original de HIKVISION no permitía recuperar las imágenes, por lo que había que sacar las imágenes de alguna otra manera.
¿por qué no se pueden sacar las imágenes de la forma “normal” con el software del fabricante o el interfaz WEB de la propia grabadora?
Sin desvelar los detalles de este caso concreto, aún pendiente de juicio, existen varias posibles causas que pueden entorpecer el proceso. Por ejemplo, esta es una lista de problemas que me he encontrado en casos similares:
- Los responsables del equipo no recuerdan la clave de acceso. Esto no es tan raro si tenemos en cuenta que, muchas veces, se contrata la instalación del equipo, pero no su mantenimiento. El instalador pone una clave, deja el equipo funcionando, cobra el trabajo y se va sin dejar documentado nada.
- Los atracadores intentan destruir la grabadora imposibilitando su posterior uso. No es raro encontrar equipos totalmente destrozados después de un atraco; golpeados, aplastados, quemados, sumergidos en agua o llenos de pintura.
- Los responsables del equipo no habían intentado nunca sacar las imágenes y la primera vez que lo intentan (después de un atraco) se dan cuenta de que no hay manera de recuperar ninguna imagen, llegando a dudar de que el grabador realmente funcionase. En ocasiones, el equipo durante la instalación se configura para que almacene sólo la última hora de grabación, o sólo una de las cámaras, o simplemente que envíe las imágenes a un almacenamiento en la nube… ¡que no existe!
- Los responsables intentan sacar las imágenes de forma no estándar, conectando el equipo a un ordenador, desmontando el disco duro o entregando el equipo a un profesional no suficientemente cualificado o cuidadoso. La mayoría de las veces, estas manipulaciones acaban con el formateo del disco duro.
EL FORMATO DE VOLUMEN HIKVISION
HIKVISION utiliza un formato de sistema de archivos similar a “FAT32” pero con marcas propias que lo hacen irreconocible. El disco se divide en particiones, según el número de cámaras a grabar simultáneamente. Aunque esta medida parece orientada a grabar en paralelo las imágenes de las cámaras, la realidad es que muchas veces aparecen imágenes simultáneas de varias cámaras en la misma partición. En la siguiente imagen se ve el sector de arranque de un disco formateado por HIKVISION comparado con un disco FAT32 normal.
Esta “inconsistencia” entre un volumen estándar FAT32 y un disco HIKVISION es el responsable del proverbial mensaje “El disco conectado no está formateado, ¿desea formatearlo ahora (y perder todos los datos)?”.
En nuestro caso, hicimos una imagen del disco completo (500GB) desde un equipo LINUX en modo “forense” (montando todas las particiones en modo “solo lectura”). A partir de aquí todo el trabajo se hizo sobre la imagen generada, SALVAGUARDANDO EL ESTADO ORIGINAL DE LA EVIDENCIA OBJETO DEL ANÁLISIS (tal y como recomienda la ISO 27042, “Directrices para el análisis y la interpretación de evidencias electrónicas”).
EL FORMATO DE LOS NO-ARCHIVOS HIKVISION
HIKVISION no utiliza archivos para guardar las imágenes por lo que, si conseguimos conectar el disco duro a un ordenador, no veremos archivos o directorios… ¡porque no hay archivos! HIKVISION graba las secuencias de video utilizando “escritura directa a disco”: sin archivos. Para poner la cosa aún más difícil, HIKIVISION va grabando las nuevas secuencias sobre las secuencias más antiguas con lo que los discos de HIKVISION después de unos días de uso (un mes en el caso analizado) siempre están llenos. Imagino que los programadores de HIKVISION aplican la misma lógica que cuando se graban imágenes en cinta, se van volcando los datos y cuando se acaba la cinta, se rebobina automáticamente y, así, se van sobreescribiendo las imágenes más antiguas con las nuevas.
Así que nuestro disco no tiene archivos y, al leerlo con un editor hexadecimal, encontramos datos aparentemente desestructurados. Aparentemente porque, si nos fijamos bien, veremos que hay marcas características del formato MPEG: cabeceras de bloque (“00 00 01 BA” HEX) y más adelante bloques de video (“00 00 01 E0” HEX).
Tras extraer, manualmente, una secuencia de vídeo de prueba, el programa “MEDIAINFO” nos reveló la verdadera naturaleza del formato propietario de HIKVISION (que no es más que una variante de MPEG).
LAS SECUENCIAS DE VIDEO DE HIKVISION
Entonces para extraer las secuencias de vídeo, sólo tenemos que localizar la cabecera de MPEG ( “00 00 01 BA” HEX) y seguir leyendo hasta el final de la secuencia. Pero no podemos (ni queremos) hacer este proceso manualmente con un archivo de 500GB, así que hay que automatizar el proceso. El proceso descrito es muy parecido a lo que hacen herramientas como “foremost” o “scalpel” para recuperar archivos borrados. Sin embargo, estas herramientas no funcionan con los discos de HIKVISION. En primer lugar, no todos los “00 00 01 BA” coinciden con secuencias de vídeo, sólo nos interesan estas marcas si en los siguientes 16 bytes nos encontramos con un bloque de vídeo (“00 00 01 E0”). En segundo lugar, no hay marcas de final de archivo, ni hay un tamaño fijo de archivo, simplemente hay bloques de vídeo secuenciales hasta que comienza una nueva secuencia. Por último, hay tantas cabeceras que “foremost” generaría, literalmente, cientos de miles de archivos de tamaño minúsculo (2 o 3 segundos de vídeo) imposibles de analizar.
El PROGRAMA HIKEXTRACT
Descartada la opción de usar “foremost”, hubo que hacer un pequeño programa que procesara los 500GB y extrajera las secuencias de video. Opté por “el viejo C” frente al “moderno Python” o Perl por aquello del rendimiento y preparé un pequeño programa que recorriera el fichero con la imagen del disco y extrajera secuencias de video de un tamaño fijado mediante configuración.
Et voilá, ya tenemos un directorio con 10000 archivos de 50MB cada uno con todas las secuencias grabadas por las cuatro cámaras del establecimiento en el último mes. Ahora sólo queda localizar las imágenes del día del atraco para lo cual tenemos que decodificar la parte “de texto” de los vídeos (el TEXTO RLE que mostraba MEDIAINFO) o tener paciencia y revisar todos los vídeos uno a uno.