Información blog

Linux, tutoriales, noticias, sistemas, redes y seguridad informática, entre otras cosas.

viernes, 30 de septiembre de 2016

Cómo recuperar archivos borrados en Linux

En más de una ocasión he hablado de la importancia de la salvaguarda de datos y de diferentes métodos de prevención de borrados accidentales o recuperación de datos; tales como el uso del shred para borrar del todo un archivo o de cómo evitar que el comando rm sea tan "destructivo". Ambos conceptos son muy útiles en determinadas circunstancias, pero imaginemos que no hemos aplicado ningún método de prevención para que rm no borre como lo hace habitualmente, es decir que hemos ejecutado el comando rm y que éste ha hecho lo que debe, es decir borrar el archivo o al menos hacer que este no sea un recurso accesible... Los bytes de dicho archivo siguen estando allí a menos que sean sobrescritos, con lo que en caso de que un archivo haya sido borrado recientemente, tenemos altas posibilidades de recuperarlo, cosa que haremos en este artículo de hoy... Hay dos herramientas particularmente famosas que realizan tareas de recuperación; una de ellas es llamada photorec, mientras que la otra, que ha ido ganando popularidad estos últimos años, se trata de de foremost.

Portada_foremost

Foremost es una herramienta basada en consola cuya principal virtud es su facilidad de uso pues apenas requiere de curva de aprendizaje alguna... Además

 y si bien no es una utilidad que se encuentre instalada por defecto en el sistema, se puede instalar muy rápidamente mediante los repositorios oficiales tal que así:

apt-get install foremost

Esta instalación incluirá todos los binarios necesarios para la recuperación de archivos, binarios que usarán una técnica llamada File Carving, que buscará archivos que hayan sido "eliminados" de la indexación del disco duro pero que físicamente se encuentre presentes en el disco, siempre y cuando éstos se encuentre íntegros; es por eso que cuanto más reciente haya sido la eliminación del archivo, más posibilidades habrán de que el archivo sea recuperado. Los formatos de archivo soportados son: jpg, gif, png, bmp, exe, rar, riff, wmv, mov, pdf, ole, doc, zip, htm y cpp; con lo que generalmente tendremos bastantes posibilidades de poder recuperar el archivo borrado en cuestión, si bien obviamente podemos tener la mala suerte de haber borrado un fichero en un formato "no reconocido".

A la hora de usar esta herramienta hay una recomendación muy importante, que es que el destino donde se guarde el archivo restaurado se guarde en una partición diferente a la del origen; es decir que si hemos borrado un archivo en un la partición /dev/sda1, lo suyo sería restaurarlo en una partición diferente que puede ser perfectamente una unidad USB, por ejemplo.

Imaginemos que cumplimos todas las recomendaciones; es decir que hemos borrado uno o varios ficheros y que tenemos una partición diferente a mano... Para ponerlo en un caso real, supongamos que teníamos varios archivos en un USB y que los hemos borrado y que deseamos restaurarlos en nuestro disco duro; la unidad USB siempre se encuentra en una partición distinta, con lo que jamás causaría conflicto con el resto, ya sea como partición de origen o de destino. Generalmente el disco duro sería /dev/sda1 y la unidad USB /dev/sdb1.

Para realizar esa restauración lo primero que haríamos sería crear un directorio donde almacenar nuestros archivos recuperados; tal y como hemos dicho antes, el destino de restauración sería el disco duro con lo que crearíamos un directorio en este. Un directorio de ejemplo podría llamarse recuperado, con lo que crearemos un directorio tal que así:

mkdir /tmp/recuperado

El destino estaría preparado, solamente quedaría conocer el origen, que sería el USB. Simplemente habría que conectar el USB y conocer el nombre de su "partición" escribiendo el comando:

fdisk -l

Ahí aparecerán todas las particiones, incluyendo por supuesto nuestro USB... En nuestro caso sería /dev/sdb1

Con todos los requisitos cumplidos, lo primero que habría que conocer es la estructura usada en foremost, la cual es muy sencilla:

foremost -t ${formato} -i ${origen} -o {destino}

Al hacer referencia al formato estaríamos diciendo si queremos recuperar los archivos de un formato en concreto o no... En caso de querer recuperar todos los archivos de todos los formatos disponibles, simplemente habría que poner all en el formato de recuperación, cosa que se suele hacer a menudo. En caso de querer poner un formato en concreto simplemente habría que poner uno de los mencionados anteriormente, tales como jpg, gif, rar... Para nuestro caso en concreto el comando de recuperación sería:

foremost -t all -i /dev/sdb1 -o /tmp/recuperado

El comando tardará cierto tiempo en realizar el proceso de recuperación, tiempo que generalmente variará dependiendo del tamaño del origen... Pasados unos minutos, el proceso finalizará y simplemente tendremos que desplazarnos al directorio de destino para disfrutar de nuestro contenido recuperado; aquí veremos que se han creado diferentes subdirectorios, uno por cada formato distinto que se ha restaurado, además de un fichero llamado audit.txt que contiene toda la información resumida de los ficheros restaurados . En mi caso por ejemplo tengo el siguiente listado:

Lista_recuperados

Cada directorio tendrá sus correspondientes ficheros, pero veréis que, desgraciadamente el nombre de cada uno de éstos es ininteligible... Esto se debe a que, cuando se borra el archivo, su nombre pasa a ser su número de inodo, tal y como también ocurre con los archivos recuperados en lost+found. Aún así, esto no supone un problema demasiado grande, pues estos ficheros conservan sus metadatos, con lo que si consultamos cualquier de los ficheros con la utilidad exiftool, podremos datos muy informativo, entre ellos su título, el cual nos dará una idea muy aproximada de las características del fichero, tal y como podemos ver en el fichero de a continuación:

exiftool_resultado

Gracias a la combinación de estas dos herramientas: Foremost y exiftool; la recuperación de archivos borrados es muy sencilla, y si bien obviamente la efectividad de esta técnica depende en gran parte de que los bytes del fichero no se hayan sobrescrito, podemos recuperar archivos borrados recientemente sin demasiadas complicaciones.

Espero que os haya resultado útil.

Saludos.

2 comentarios :