Hoy o mas bien dicho ayer por la noche, me entró la curiosidad de saber como borrar un archivo de forma segura. No, no os hablo de buscar un programa y ya está. Si no de buscar algún script en Python que haga lo que quiero, leer y entender el código para aprender. Bueno, estuve rebuscando un poco y encontré un blog que hablaba de archivos de TrueCrypt y del borrado seguro de estos utilizando el método Gutmann.
"El método Gutmann es un algoritmo para borrar de forma segura el contenido de computación discos duros , tales como archivos . Ideado por Peter Gutmann y Colin Plumb y presentado en el documento Eliminación segura de datos desde magnética y de estado sólido de memoria en julio de 1996, se trataba de escribir una serie de 35 patrones sobre la región que desea borrar."Este es el método que utiliza:
Aquí tenéis el Script y la fuente de esta entrada:
Lo único que hace es abrir el archivo que tu le pases y escribir el algoritmo en la parte binaria del mismo. Con lo que se consigue que, aunque se pueda extraer la foto o el documento con herramientas forenses, solo sean un montón de datos hexadecimales randoms con una extensión y nombre curioso.
Solo he añadido un d1=raw_input() un print y un os.remove(d1) al script para que pudiera pasarle cualquier archivo y al acabar de escribir el algoritmo, lo borrase. Os pego el código.
import os
#constantes
d1 = raw_input("Dame el archivo que he de destrozar: ")
FILE= d1
#Creacion de valores aleatorios
rnd = lambda : str(os.urandom(3))
print 'Generando datos de sobreescritura con la secuencia Gutmann...'
data = [ rnd(), rnd(), rnd(), rnd(), '\x55', '\xAA', '\x92\x49\x24', '\x49\x24\x92', '\x24\x92\x49', '\x00', '\x11', '\x22', '\x33', '\x44', '\x55', '\x66', '\x77', '\x88', '\x99', '\xAA', '\xBB', '\xCC', '\xEE', '\xFF', '\x92\x49\x24', '\x49\x24\x92', '\x24\x92\x49', '\x6D\x86\xD8', '\xD6\xDB\x6D', '\xDB\x6D\xB6', rnd(), rnd(), rnd(), rnd(), ]
print 'Abriendo el fichero...'
f = open(FILE, mode='r+b')
print 'Escribiendo datos...'
for loop in data:
f.seek(0)
f.write(loop*65536) if len(loop) == 1 else f.write(loop*21845)
print 'Cerrando fichero...'
f.close()
print 'Borrando fichero'
os.remove(d1)
print 'Done!'
He hecho la prueba con un par de archivos que tenia en una memoria USB. He pasado este script y luego he echado un vistazo con FTK imager, tras hacer una copia bit a bit para ver que pasaba.
Como es normal, los archivos siguen estando allí una vez borrados pero el contenido en binaro/hexadecimal ha sido cambiado mostrando el patrón haciendo imposible extraer nada de ellos.
Os aconsejo que lo proveis y mireis a ver si tiene algun fallo, Ponedlo en los comentarios que quiero leerlo. Así aprendo.
Sed Buenos y espero que os sirva.
No hay comentarios:
Publicar un comentario