FingerprintLa extracción de archivos es una técnica utilizada en la computación forense para extraer información de un disco duro, sin la necesidad de utilizar el sistema de archivos original con él cual se creo el archivo.

Normalmente, la computación forense requiere equipo y software especiales para poder analizar evidencia sin alterar la estructura de la información. Por ejemplo, cuando los departamentos policiales atrapan a pornógrafos infantiles y éstos en su desesperación queman su disco duro para "borrar" la evidencia, se hace uso de la extracción de archivos del disco duro, aunque el sistema de archivos se haya corrompido.

En el caso anterior, la policía se centra en la extracción de contenido multimedia, especialmente imágenes y vídeos. En el caso de las imágenes, el proceso de extracción es muy sencillo, es tan sencillo que incluso lenguajes de alto nivel como PHP son capaces de analizar y extraer contenido multimedia de sistemas de archivos corruptos.

Cabe resaltar, que la extracción de archivos no es lo mismo que la recuperación de archivos. La diferencia radica que en la extracción de archivos, te permite ignorar el sistema de archivos por completo, porque para tu programa dichos archivos no existen. Tu programa lo "alimentas" con un blob de información binaria, detecta patrones y extrae los archivos de ese blob de información.

Retomando el caso de las imágenes, una de las técnicas mas sencillas de extracción de archivos es el análisis de encabezados y pies de archivos, ya que los archivos tienen patrones bien definidos e universales. Por ejemplo:

Extensión Encabezado Pie de Archivo
JPG \xFF\xD8 \xFF\xD9
GIF \x47\x49\x46\x38\x37\x61 \x00\x3B

Con ésta información podemos escribir un programa en PHP que:

  1. Lea una cadena de texto
  2. Convierta el input en su respectivo código hexadecimal
  3. Identifique el encabezado y el pie del archivo
  4. Escriba ese blob de información a un archivo JPG

Para demostrar el concepto de que éste proceso funciona para cualquier cadena de texto, puedes crear un documento word e insertar una imagen en el documento, por ejemplo:

Screen Shot 2013-10-11 at 11.19.41 PM

Y escribir el siguiente programa en PHP:

Si te sale el error "hex2bin function not found" es porque estás utilizando una versión anterior a PHP 5.4, por lo que vamos a tener que implementarla a mano.

Si inspeccionamos el código fuente de PHP, nos vamos a dar cuenta que PHP 5.4 implementa la función hex2bin de la siguiente manera en C:

Para tú suerte, no tienes que buscar la manera de transcribir ese código en C en PHP, porque aquí te pongo la versión de hex2bin en PHP:

Si corres este programa en PHP, ya sea desde la línea de comandos o en tu navegador, te podrás percatar que PHP extrae la imagen del archivo de word satisfactoriamente:

extraccion de imagenes con php

 

Y listo! Acabas de escribir satisfactoriamente tu primer programa de computación forense.

Quieres darle otros usos?

Puedes descargar escáners de tráfico de red como Wireshark, y escribir el mismo programa que analice la información enviada a través de tu red y extraer imágenes transferidas por tu red, sin que tus usuarios se den cuenta.

Por ejemplo, si sospechas que tú mujer le está enviando fotos "sexys" a un "amigo" a tus espaldas.... usando esta técnica la puedes atrapar in fraganti.

El cielo es el límite ;)