15 de julio de 2012

Foremost para recuperar ficheros borrados en linux

Lo típico..., despues de horas de programación el script php no parece por ningún sitio. Especialmente ya que he metido la pata y remachacado el directorio donde estaba.

Para recuperar ficheros borrados en linux se puede usar la aplicacion foremost.

Foremost rastrea el disco duro en busca de achivos y los identifica mediante cadenas de datos hexadecimales propios del tipo de ficheros que estamos buscando.

Es posible configurar a foremeost para que busque los ficheros que contengan la cadena exadecimal que queramos.

Por ejemplo, en mi caso que he perdido un script en php que comenzaba con:

#!/usr/bin/php

configuraré a foremost para que encuentre los archivos que comiencen con estos caracteres, a ver si hay suerte.

1) Hay que pasar el texto a buscar a hexadecimal. Podemos usar xxd desde la consola de linux

echo "#!/usr/bin/php" | xxd
0000000: 2321 2f75 7372 2f62 696e 2f70 6870 0a    #!/usr/bin/php.

Quitamos el 0a que es el retorno de carro y ponemos \x

 \x23\x21\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x70\x68\x70

2) Vamos al fichero de configuracion de foremost en /etc/foremost.conf
y añadimos la linea:

php  y  100000   \x23\x21\x2f\x75\x73\x72\x2f\x62\x69\x6e\x2f\x70\x68\x70

3) Ejecutamos foremost que buscara los ficheros que contengan la cadena especificada y los ficheros encontrados los guardará en el directorio ./recuperados

# foremost  -i /dev/sda1 -o ./recuperados

4) Cafe, siesta o peli ... ya que esto puede tardar.

5) Y en el directorio tendremos todos los ficheros que ha encontrado en el disco duro indicado que tienen la cadena especificada. Muchos puede no ser válidos o estar corruptos; ... que es lo mas frecuente.

6) Para encontrar lo que buscamos podemos usar:

# cat * | grep -l textoabuscar

aunque como hay ficheros binarios este comano NO me ha funcionado.

7) Finalmente he hecho un pequeño bash-script que me soluciona el problema y que me dice los ficheros que tienen contienen el textoabuscar:


#!/bin/bash/
for file in $(ls); do
   if grep -q 'textoabuscar' $file
      then
      echo $file
   fi
done
exit 0
Ejecutar el bash-script en el directorio donde esten los archivos recuperados y os dirá los archivos que contienen el textoabuscar.

Y ahora solo queda abrir los archivos y ver si es el script que tanto tiempo habia costado programar y que se habia borrado por error.

En mi caso ha habido suerte !!!

No hay comentarios:

Publicar un comentario