Este es un método para borrar datos de un disco duro.
El método DoD5220.22-M (Departamento de Defensa de EE. UU.)
Este es un método para escribir 0, 1 y números aleatorios en todo el HDD. Se realizan un total de tres escrituras.
Esta es la versión inicial de DoD5220.22-M, y ahora se ha creado una guía diferente.
Historia
En , se emitió la primera versión. Esta versión especificó un procedimiento para sobrescribir datos en un disco duro (HDD) con patrones de cero y uno tres veces. Esto se conoció como el método de saneamiento DoD 5220.22-M.
En , el Departamento de Defensa designó el método de saneamiento DoD 5220.22-M ECE como una extensión de DoD 5220.22-M. Este método requería siete pasadas de sobrescritura.
En , se emitió la última versión de DoD 5220.22-M. En esta versión, el patrón de sobrescritura ya no se especificaba como un método de borrado de datos para los HDD. En su lugar, se recomendaban otros métodos de saneamiento como el borrado, la desimantación y la destrucción física.
En , DoD 5220.22-M fue revisado. En esta versión, las pautas del método de saneamiento se actualizaron para acomodar nuevas tecnologías como el almacenamiento basado en flash y dispositivos móviles.
En , el Departamento de Defensa dejó de referirse a DoD 5220.22-M y en su lugar cumplió con las pautas de saneamiento de medios del Instituto Nacional de Estándares y Tecnología (NIST SP 800-88).
Comandos
En Linux, puedes usar el comando dd para eliminar datos.
Escribir 0
|
1 2 |
dd if=/dev/zero of=/dev/sdb bs=4096 |
ddes un comando para copiar datos¹.if=/dev/zeroespecifica/dev/zerocomo el archivo de entrada./dev/zeroes un archivo especial que produce ceros indefinidamente.of=/dev/sdbespecifica/dev/sdbcomo el archivo de salida./dev/sdbes un archivo de dispositivo para discos duros, memorias USB, etc.¹.bs=4096especifica 4096 bytes como el tamaño del bloque. El tamaño del bloque es la unidad de datos para leer y escribir a la vez.
Este comando copia ceros desde /dev/zero a /dev/sdb en incrementos de 4096 bytes, sobrescribiendo y borrando los datos en /dev/sdb.
Confirmar
Comprobar el inicio del disco
|
1 2 |
dd if=/dev/sdb bs=512 count=1 | hexdump -C |
Muestra los primeros 512 bytes del dispositivo, como un disco duro o una memoria USB, en hexadecimal.
ddes un comando para copiar datos.if=/dev/sdbespecifica/dev/sdbcomo el archivo de entrada.bs=512especifica 512 bytes como el tamaño del bloque.count=1especifica 1 como el número de bloques a leer. Esto lee solo los primeros 512 bytes.hexdump -Ces un comando para mostrar los datos recibidos por la tubería en código hexadecimal y ASCII.-Ces una opción para mostrar el código hexadecimal y ASCII en columnas.
A partir de este resultado, puedes ver que el inicio del disco duro está lleno de ceros.
Si especificas of=output.bin o algo así como un parámetro del comando dd, puedes escribir los primeros 512 bytes en el archivo output.bin.
Comprobar el final del disco
|
1 |
dd if=/dev/sdb bs=512 skip=(((blockdev --getsz /dev/sdb) - 1)) | hexdump -C |
Muestra los últimos 512 bytes del dispositivo, como un disco duro o una memoria USB, en hexadecimal. Este comando pasa el valor obtenido restando 1 al número total de sectores del disco duro a
skip y lee solo el último bloque.
- Como se mencionó anteriormente,
ddes un comando para copiar datos. if=/dev/sdbespecifica/dev/sdbcomo el archivo de entrada.bs=512especifica 512 bytes como el tamaño del bloque.-
skip=(((blockdev --getsz /dev/sdb) - 1))especifica el número de bloques a saltarblockdev --getsz /dev/sdbes un comando para obtener el número total de sectores del disco duro.$(())es una notación para operaciones aritméticas.
Escribir 1
|
1 |
tr '\0' '\377' < /dev/zero > /dev/sdb |
tres un comando que convierte caracteres.-
'0','377'convierte los caracteres de entrada de\0(0 en octal) a\377(255 en octal). Esto convierte 0 bits en 1 bits.- ((3 x 8) + 7) x 8 + 7 = 255
< /dev/zeroespecifica/dev/zerocomo la fuente de entrada estándar.> /dev/sdbespecifica/dev/sdbcomo el destino de salida estándar.
Este comando lee 0 de /dev/zero, lo convierte en 1 en tr, y lo sigue escribiendo en 1 en /dev/sdb Al continuar escribiendo , los datos en /dev/sdb se sobrescribirán y borrarán.
Confirmar
Lo verifiqué de la misma manera que cuando escribí 0.
Comprobar el inicio del disco
|
1 |
dd if=/dev/sdb bs=512 count=1 | hexdump -C |
Comprobar el final del disco
|
1 |
dd if=/dev/sdb bs=512 skip=$(($(blockdev --getsz /dev/sdb) - 1)) | hexdump -C |
Escribir números aleatorios
|
1 |
dd if=/dev/urandom of=/dev/sdb bs=4096 |
Lee datos aleatorios del dispositivo /dev/urandom y los escribe en /dev/sdb.
El uso de /dev/urandom lleva más tiempo que el uso de /dev/zero. Esto se debe simplemente a que generar números aleatorios lleva tiempo. /dev/urandom genera números aleatorios a partir de ruido ambiental (condiciones relacionadas con el dispositivo como el ratón, el teclado, etc.).
Confirmar
Lo verifiqué de la misma manera que cuando escribí 0.
Comprobar el inicio del disco
|
1 |
dd if=/dev/sdb bs=512 count=1 | hexdump -C |
Comprobar el final del disco
|
1 |
dd if=/dev/sdb bs=512 skip=$(($(blockdev --getsz /dev/sdb) - 1)) | hexdump -C |