Poner a cero el contenido de un disco duro sin destruir el sistema de archivos

Poner a cero el contenido de un disco duro sin destruir el sistema de archivos

Copié muchas fotos en un disco duro externo de una computadora vieja que usaba una persona mayor y que probablemente estaba infectada con malware. He puesto las fotos en otro disco duro. Ahora mi disco duro externo está completamente vacío, pero estoy paranoico y me gustaría estar seguro de que no queda ningún malware o código malicioso en el disco.

Entonces me gustaría llenarlo con ceros pero sin destruir el sistema de archivos o la tabla de particiones. En cierto modo me gustaría recuperar mi disco como si lo acabara de comprar.

¿Es posible hacer eso? ¿Existe un comando de Linux para hacerlo?

Mi disco duro está formateado en NTFS con una tabla de particiones msdos(mbr).

Respuesta1

Respuesta fácil:

mount /dev/your/disk /some/free/mountpoint
dd if=/dev/zero of=/some/free/mountpoint/zero bs=512
sync # See edit below
rm /some/free/mountpoint/zero
umount /some/free/mountpoint

Esto hará exactamente lo que solicitó: sobrescribir todo el espacio disponible para los archivos en el sistema de archivos con ceros.

Respuesta más compleja:

  • Sin bombardear el MBR no puedes estar seguro de que no tienes un virus MBR
  • un sistema de archivos vacío no tiene valor

Así que te recomiendo que simplemente destruyas el dispositivo (es decir, pongas a cero el dispositivo, incluido el MBR y el sistema de archivos) y luego simplemente vuelvas a crear la tabla de particiones ymkfs.ntfs -f -L LABEL -I

EDITAR

Como @Nyos señaló en los comentarios, si el controlador NTFS no monta la sincronización (no conozco los valores predeterminados), es una buena idea insertar un archivo adicional syncantes del archivo rm. La versión actual (a partir de Ubuntu 18.04 completamente parcheada hasta el 2020-05-02) no asigna bloques retrasados, por lo que syncno es estrictamente necesario, ya que todos los bloques asignados se escribirán en umount, pero ni sabemos el futuro ni yo. lea el código fuente completo.

En la misma nota: si el controlador NTFS alguna vez obtiene soporte para archivos escasos, es posible que necesitemos usarlo /dev/urandomen lugar de /dev/zeropara evitar una escritura (casi) interminable.

Respuesta2

Aunque esto no responde en absoluto a tu pregunta... sin embargo:

Primero, es una muy, muy mala idea poner a cero un disco. Esto es cierto para los discos "tradicionales", y aún más para los discos de estado sólido. Poner a cero un disco es algo trivial (basta con crear un archivo y llenarlo, Eugen Rieck da la receta exacta) pero lleva mucho tiempo y desgasta el disco. Los ciclos de escritura no son infinitos en ningún tipo de disco duro.
Además, tenga en cuenta que ni siquiera tiene garantía de que la sobrescritura funcione según lo previsto. Para su propósito, la diferencia no será notable, pero para otros propósitos (piense en el borrado seguro de datos confidenciales) el enfoque es totalmente poco confiable. Esto se debe a que no tienes absolutamente ninguna forma de saber qué sucede cuando sobrescribes algo gracias a la nivelación de desgaste y la reasignación. Las unidades hacen muchas cosas sin que nadie (¡incluido el sistema operativo!) lo sepa o incluso tenga una forma de saberlo, y mucho menos cambiarlo. Si, por ejemplo, un sector ha sido reasignado porque el controlador no estaba satisfecho con la cantidad de reintentos, o el CRC o lo que sea, puede hacer lo que quiera en el futuro, simplemente ya no podrá acceder a ese sector. Nunca más. Aún así, los datos, o lo que queda de ellos (y no puedes saberlo) permanecen allí, y un ladrón potencial podría leerlos.

En segundo lugar, cuando se opera en modo paranoia total, es realmente una mala idea mantener el sistema de archivos (y el MBR), especialmente cuando el disco está "vacío". Aparte del UUID del sistema de archivos, no perderá nada simplemente creando un nuevo sistema de archivos (que posiblementepuede serun poco molesto en algunas situaciones, pero también es fácil de solucionar). Sin embargo, obtienes la certeza de que no queda nada en lugares donde no lo esperas (MBR, por ejemplo).

En tercer lugar, es una mala idea poner a cero y reutilizar un sistema de archivos "vacío" que en realidad no está vacío en absoluto. Es malo en términos de rendimiento cuando, en cambio, puede simplemente crear un nuevo FS (sin entradas de diario de cambios obsoletas, elementos invisibles, transmisiones olvidadas, atributos, MFT fragmentados...) desde cero. Recrear todo desde cero no sólo es mucho más seguro, sino que también es mucho más rápido y probablemente dará como resultado un mejor rendimiento general en el futuro.

tl; dr

La mayoría de los dispositivos tienen una opción dedicada de borrado seguro o "restablecimiento de fábrica" ​​(que es lo mismo) que es compatible con la herramienta de administración adjunta o con alguna otra herramienta a través de un comando ATA estándar. La unidad utilizará el método más eficiente y menos destructivo (algunas unidades de hecho sobrescriben el disco completo al no ser realmente compatibles con la función, pero la mayoría simplemente descartará la clave de cifrado o codificación de bits, que funciona casi instantáneamente independientemente del tamaño del disco).

hdparmque está disponible en casi todas las distribuciones de Linux listas para usar, tiene una opción --security-erasepara ese propósito exacto.

Esto te dará un disco."como recién comprado"a excepción de haber sido usado por un tiempo. Lo hará de la forma más rápida (dentro de lo técnicamente posible) y que afecte menos al disco. Después de eso, particionelo y cree un sistema de archivos, listo.

información relacionada