
Herramienta para limpiar de forma segura y eficiente dispositivos y particiones para Linux
| Característica | dwipe | nwipe | shred | dd |
|---|
| Limpiezas de firmware (borrado seguro SATA/NVMe) | ✓ | ✗ | ✗ | ✗ |
| Limpiezas de software (Cero, Pseudo Aleatorio) | ✓ | ✓ | ✓ | ✗ |
| TUI interactiva | ✓ | ✓ | ✗ | ✗ |
| Múltiples limpiezas simultáneas | ✓ | ✗ | ✗ | ✗ |
| Estado de limpieza persistente | ✓ | ✗ | ✗ | ✗ |
| Detección / liberación de intercambio en caliente | ✓ | ✗ | ✗ | ✗ |
| Bloqueo de dispositivo/partición | ✓ | ✗ | ✗ | ✗ |
| Reanudar limpiezas de software interrumpidas | ✓ | ✗ | ✗ | ✗ |
| Registro de operaciones de limpieza | ✓ | ✗ | ✗ | ✗ |
| Detección/prevención de montaje | ✓ | ✓ | ✗ | ✗ |
| Verificación rápida de muestreo estadístico | ✓ | ✗ | ✗ | ✗ |
| Destrucción certificada (estándares DoD/Gutmann, verificación completa, certificados) | ✗ | ✓ | ✗ | ✗ |
- Las limpiezas de firmware (SATA/NVMe) son las más completas y rápidas: El borrado acelerado por hardware opera a nivel del controlador (segundos a minutos), borra todos los mapeos del disco, pero requiere borrado de todo el dispositivo sin informes de progreso ni verificación visible.
- Las limpiezas de software con un solo paso de ceros son suficientes: Los discos modernos (posteriores a 2001) se limpian de manera confiable con un solo paso de ceros (NIST SP 800-88). Los modos multipaso están disponibles para mayor confianza pero no proporcionan ninguna garantía de seguridad adicional.
- La verificación utiliza muestreo estadístico inteligente: Incluso un 1 % de muestras de verificación en todo el disco a través de 100 secciones, proporciona una cobertura completa sin una lectura secuencial completa.
/dev/, /sys/, /proc/)Opcional (para copiar al portapapeles en la pantalla de historial):
apt install xclip o xsel)apt install wl-clipboard)pipx install dwipedwipe --helppipx uninstall dwipedwipedwipe desde una terminal (sudo se solicitará automáticamente)w para limpiar un disco, debes escribir la abreviatura (ej., Rand, Zero, Crypto); las limpiezas se presentan de menor a mayor recomendación, y la última está marcada con *. Normalmente, elige la última opción, pero ...Rand o Zero (interrumpible, muestra progreso).dwipe detecta automáticamente la reanudación y vuelve a escanear. O presiona r para volver a escanear manualmente. El disco debería volver sin congelación.dwipe lo bloqueó, la contraseña es NULL; de lo contrario, usa la contraseña que lo bloqueó.DEL para desconectar, intercambia físicamente los discos, luego r para volver a escanear (si es necesario).dwipe proporciona capacidades completas de limpieza de discos con funciones de seguridad:
Nota:
dwipemuestra las etiquetas del sistema de archivos, y si no están disponibles, la etiqueta de la partición. Es una buena práctica etiquetar bien las particiones y sistemas de archivos para facilitar la selección.
Simplemente ejecuta dwipe desde la línea de comandos sin argumentos: dwipe
Nota: Todas las opciones de preferencia usan tus últimos valores guardados como predeterminados. Estos valores predeterminados se muestran en --help y se pueden cambiar de forma interactiva con atajos de teclado. Los argumentos de línea de comandos anulan las preferencias guardadas.
--mode {-V,+V} - Modo de verificación (predeterminado: tu última preferencia)
-V - Limpiar sin verificación automática+V - Verificar dispositivo después de que la limpieza se complete--passes {1,2,4} - Número de pasadas para limpiezas de software (predeterminado: tu última preferencia)
--verify-pct {1,3,10,30,100} - Porcentaje de verificación (predeterminado: tu última preferencia)
--dense {True,False} - Modo de vista compacta (predeterminado: tu última preferencia)
True - Espaciado compacto (menos líneas en blanco entre discos)False - Vista espaciada (líneas en blanco entre discos para legibilidad)--port-serial {Auto,On,Off} - Visualización de puerto/serie del disco (predeterminado: tu última preferencia)
Auto - Mostrar puerto/serie solo para discos completos (recomendado)On - Mostrar siempre puerto y número de serieOff - Nunca mostrar puerto y número de serie--slowdown-stop {0,4,16,64,256} - Detener si el disco se ralentiza (predeterminado: tu última preferencia, milisegundos)
0 = Deshabilitado--stall-timeout {0,60,120,300,600} - Tiempo de espera por parada en segundos (predeterminado: tu última preferencia)
0 = Deshabilitado (sin tiempo de espera)--firmware-wipes o -F - Habilitar limpiezas de firmware
--dump-lsblk - Volcar información analizada del dispositivo y salir (para depuración)--help - Mostrar mensaje de ayuda con todas las opciones disponiblesdwipe utiliza codificación de colores para proporcionar retroalimentación visual instantánea sobre el estado del dispositivo y la operación:
dwipe soporta múltiples temas de color para mejorar la visibilidad y la estética.
Temas disponibles:
default - Terminal Predeterminado (colores ANSI básicos)dark-mono - Mono Oscuro (casi blanco sobre casi negro con colores brillantes)light-mono - Mono Claro (casi negro sobre casi blanco con colores brillantes)solarized-dark - Paleta Solarized Oscurasolarized-light - Paleta Solarized Clara (para fondos de terminal claros)gruvbox - Paleta Gruvbox Oscuranord - Paleta NordCambiar temas:
Características del tema:
La columna ESTADO muestra el estado actual de cada dispositivo:
| Estado | Significado |
|---|---|
| - | El dispositivo está listo para limpiar |
| ^ | El dispositivo está listo para limpiar Y fue añadido después de que dwipe inició (intercambiado en caliente) |
| Mnt | La partición está montada o el disco tiene particiones montadas - no se puede limpiar |
| N% | La limpieza está en progreso (muestra porcentaje completado, 0-100%) |
| vN% | La verificación está en progreso (muestra porcentaje completado, v0-v100%) |
| STOP | La limpieza o verificación se está deteniendo |
| s | La limpieza fue detenida - el dispositivo está parcialmente limpiado (puedes reiniciar o verificar) |
| W | La limpieza se completó con éxito (puedes limpiar de nuevo o verificar) |
| Blk | El disco está bloqueado manualmente - las particiones están ocultas y no se pueden limpiar |
| Unbl | El disco acaba de ser desbloqueado (estado transitorio) |
La línea superior muestra las acciones disponibles. Algunas son sensibles al contexto (solo disponibles para ciertos dispositivos):
| Tecla | Acción | Descripción |
|---|---|---|
| w | limpiar | Limpiar el dispositivo seleccionado (requiere confirmación) |
| v | verificar | Verificar un dispositivo limpiado o detectar patrón en disco sin marcar (sensible al contexto) |
| s | detener | Detener la limpieza seleccionada en progreso (sensible al contexto) |
| S | Detener Todo | Detener todas las limpiezas en progreso |
| DEL | eliminar | Eliminar disco del sistema (solo discos completos, sensible al contexto) |
| b | bloquear/desbloquear | Bloquear o desbloquear un disco para evitar limpiezas accidentales |
| / | filtrar | Filtrar dispositivos por patrón regex (muestra dispositivos coincidentes + todas las limpiezas activas) |
| r | reescanear | Reescanear todos los dispositivos y restablecer detección de capacidades de hardware |
| h | historial | Mostrar registro de historial de limpiezas |
| t | temas | Abrir pantalla de vista previa de temas para ver y cambiar temas de color |
| q o x | salir | Salir de la aplicación (detiene todas las limpiezas primero) |
| ? | ayuda | Mostrar pantalla de ayuda con todas las acciones y teclas de navegación |
| ESC | limpiar filtro | Limpiar el filtro y saltar al principio de la lista |
| ESC | atrás | Volver a la pantalla anterior si estás en una pantalla anidada |
| a | formato de hora | Alternar formato de visualización de tiempo del historial de limpiezas (hace+tiempo, hace, tiempo) |
Presiona h para ver el registro del historial de limpiezas. La pantalla de historial muestra todas las operaciones de limpieza y verificación con marcas de tiempo, información del dispositivo y resultados.
Acciones de la pantalla de historial:
/ para búsqueda JSON profunda)Métodos de copia al portapapeles (detectados automáticamente):
| Entorno | Método | Notas |
|---|---|---|
| Sesión SSH | OSC 52 | Secuencia de escape de terminal; requiere soporte del terminal (iTerm2, kitty, alacritty, Windows Terminal, tmux con set-clipboard on) |
| Wayland | wl-copy | Requiere paquete wl-clipboard |
| X11 | xclip/xsel | Requiere paquete xclip o xsel |
| Alternativa | Terminal | Sale al shell, imprime la entrada para copia manual |
Nota: Si OSC 52 no funciona con tu terminal, el texto aún aparece en pantalla para selección manual. Para tmux, habilita el portapapeles con
set -g set-clipboard onen tu.tmux.conf.
dwipe soporta limpiezas de firmware (aceleradas por hardware) y limpiezas de software. Las limpiezas de firmware requieren la bandera --firmware-wipes o -F. Las tablas a continuación listan los métodos de limpieza desde el más deseable (Rango 1) hasta el menos.
| Rango | Abrev | Nombre Oficial | Observaciones |
|---|---|---|---|
| 1 | Crypto | Sanitize Cryptographic Erase | Más rápido; borra claves de cifrado; invalidación instantánea de datos |
| 2 | Block | Sanitize Block Erase | Rápido; restablece todos los bloques al estado desasignado |
| 3 | FCrypto | Format with Crypto Erase | Rápido; reformatea el espacio de nombres con borrado de claves |
| 4 | FErase | Format with User Data Erase | Rápido; reformatea con borrado simple de datos; menos completo que crypto |
| 5 | Ovwr | Sanitize Overwrite | Minutos; escribe patrón en todos los bloques; más completo pero rara vez necesario |
| 6 | Rand | Software Random Write | Alternativa; escribe datos aleatorios mediante software; horas para unidades grandes |
| 7 | Zero | Software Zero Write | Alternativa; escribe ceros mediante software; verificable pero más lento |
| Rango | Abrev | Nombre Oficial | Observaciones |
|---|---|---|---|
| 1 | SCrypto | Sanitize Cryptographic Erase | Más rápido; borra claves de cifrado; requiere función SANITIZE |
| 2 | Enhanced | ATA Security Erase Enhanced | Rápido; borrado profundo específico del proveedor con destrucción de claves de cifrado |
| 3 | SBlock | Sanitize Block Erase | Rápido; restablece bloques al estado de fábrica; requiere función SANITIZE |
| 4 | Erase | ATA Security Erase Normal | Minutos; escribe ceros en todos los sectores; ampliamente soportado |
| 5 | SOverwrite | Sanitize Overwrite | Minutos; sobrescribe con patrón; requiere función SANITIZE |
| 6 | Rand | Software Random Write | Alternativa; no puede alcanzar bloques desgastados por nivelación o reasignados |
| 7 | Zero | Software Zero Write | Alternativa; no puede alcanzar bloques desgastados por nivelación o reasignados |
| Rango | Abrev | Nombre Oficial | Observaciones |
|---|---|---|---|
| 1 | Rand | Software Random Write | Preferido; interrumpible, reanudable, muestra progreso |
| 2 | Zero | Software Zero Write | Preferido; interrumpible, reanudable, verificación rápida |
| 3 | Enhanced | ATA Security Erase Enhanced | Lento (horas); no interrumpible; sin progreso; mismo resultado que software |
| 4 | Erase | ATA Security Erase Normal | Lento (horas); no interrumpible; sin progreso; mismo resultado que software |
Nota: Los HDDs no tienen nivelación de desgaste ni bloques ocultos, por lo que las limpiezas de software son igual de completas que las de firmware pero ofrecen mejor control (progreso, pausa/reanudación, interrumpibilidad).
| Rango | Abrev | Nombre Oficial | Observaciones |
|---|---|---|---|
| 1 | Rand | Software Random Write | Preferido; patrón impredecible; verificación estadística |
| 2 | Zero | Software Zero Write | Más simple; verificación rápida (falla en el primer byte no cero) |
Notas:
- Las limpiezas de firmware muestran solo los métodos soportados por cada unidad (ver columna FwCAPS).
- Las limpiezas de firmware incluyen verificación spotcheck automática.
- El sufijo
+Vhabilita la verificación automática después de las limpiezas de software. Sin+V, presiona v para verificar manualmente.- Las limpiezas de software multipaso (2 o 4) alternan patrones cero/aleatorios, terminando en el modo seleccionado.
- Las unidades USB y particiones carecen de borrado de firmware—solo limpiezas de software disponibles.
Las limpiezas detenidas (estado s) pueden reanudarse presionando w en el dispositivo. Elige el mismo tipo de limpieza o comenzará de nuevo al 0% completado.
Cómo Funciona la Reanudación:
Ejemplos de Reanudación:
| Detenido al | Pasadas Actuales | Qué Sucede |
|---|---|---|
| 50% | 1 pasada | Reanuda: escribe el 50% restante |
| 150% (1.5 de 4 pasadas) | 1 pasada | Ya completado (150% > 100%) |
| 150% (1.5 de 4 pasadas) | 4 pasadas | Reanuda: escribe 2.5 pasadas más (150% → 400%) |
| 100% (1 pasada completada) | 2 pasadas | Reanuda: escribe la pasada 2 (100% → 200%) |
Beneficios:
Las limpiezas de software utilizan verificación inteligente con análisis estadístico y optimizaciones de fallo rápido. La verificación es configurable y opcional.
Muestreo Inteligente:
--verify-pct (guardado como preferencia)Detección de Patrones:
Modos de Verificación:
+V (Rand+V o Zero+V) y establece el % de verificación > 0Por qué el muestreo estadístico es mejor que el secuencial:
Los borrados de firmware (borrado seguro SATA/NVMe) utilizan una verificación por muestreo incondicional que se realiza automáticamente para todos los borrados de firmware. Esto verifica que el comando de borrado del hardware se haya ejecutado realmente.
Enfoque de muestreo:
Por qué el muestreo es efectivo:
Nota importante: Los borrados de firmware no muestran verificación basada en porcentajes como los borrados de software. El muestreo ocurre silenciosamente como parte de la operación de borrado, y el éxito/fracaso se registra en el marcador persistente de estado de borrado.
Al borrar un dispositivo por software, dwipe muestra:
Los estados W (borrado) y s (borrado parcial) son persistentes entre reinicios. Esto se logra escribiendo metadatos en los primeros 16KB del dispositivo:
Cuando se muestra un dispositivo con estado persistente, aparece información adicional:
Cuando se presiona ?, se pueden ver las teclas disponibles y las opciones de línea de comandos con su configuración actual.
Puedes navegar por la lista de dispositivos con:
La tecla / activa el filtrado de búsqueda incremental con comportamiento al estilo vim:
Cómo funciona:
Ejemplos de filtro:
El filtro admite patrones regex. Aquí hay algunos ejemplos útiles:``` /sda # Show only sda and its partitions /sd[ab] # Show sda, sdb and their partitions /nvme # Show all NVMe devices /nvme0n1p[12] # Show only partitions 1 and 2 of nvme0n1 /usb # Show devices with "usb" in their labels
Presiona **ESC** desde la pantalla principal para limpiar el filtro y volver a mostrar todos los dispositivos.
**Nota:** Los patrones regex no válidos se ignoran; el filtro se mantiene en el último patrón válido mientras escribes.
## Consideraciones de Seguridad
**Limitaciones importantes de los borrados por software:**
- `dwipe` soporta borrados multipaso con patrones alternantes, pero no implementa secuencias de patrones certificadas específicas de DoD 5220.22-M o Gutmann
- Es más que adecuado para **datos personales y empresariales** que no requieren destrucción certificada (anticuada)
- **NO es adecuado** para datos clasificados, ultrasecretos o altamente sensibles que requieren un borrado específico de patrones certificados con certificados de cumplimiento
- **Consideraciones sobre SSD**:
- Los SSD modernos usan nivelación de desgaste (wear-leveling) y pueden retener datos en bloques no asignados
- TRIM/DISCARD puede impedir el borrado completo de datos
- Para SSD, considera las utilidades de borrado seguro del fabricante para máxima seguridad
- El modo aleatorio puede no proporcionar seguridad adicional sobre ceros en SSD
**Mejores prácticas:**
- Verifica cuidadosamente las etiquetas y tamaños de los dispositivos antes de borrar
- Usa la función **Bloquear** para proteger discos críticos
- Considera el cifrado para datos sensibles como medida de seguridad primaria
---
---
## Solución de Problemas
### dwipe no se inicia
- **Error: "cannot find lsblk on $PATH"** - Instala el paquete `util-linux`
- **Permiso denegado** - `dwipe` solicita sudo automáticamente; asegúrate de poder usar sudo
### Problemas de visualización en la terminal
- **Pantalla corrupta después de un fallo** - Ejecuta el comando `reset` o `stty sane`
- **Los colores no funcionan** - Asegúrate de que tu terminal soporte colores (la mayoría de terminales modernas lo hacen)
### Problemas de borrado
- **No se puede borrar un dispositivo** - Revisa la columna ESTADO:
- **Mnt** - Desmonta la partición primero: `sudo umount /dev/sdXN`
- **Blk** - Presiona **b** para desbloquear
- **Busy** - Otra partición en el disco está siendo borrada
- **El borrado es muy lento** - Normal en discos grandes; verifica la tasa de escritura para monitorear el progreso
- **El borrado parece atascado** - Probablemente debido a discos defectuosos; la E/S directa hace que el progreso sea casi constante en discos buenos.
---
### Consideraciones sobre Borrado de Firmware
Los borrados de firmware (operaciones de borrado seguro SATA/NVMe) tienen características diferentes a los borrados por software:
**Unidades Congeladas:**
- Las unidades SATA suelen estar congeladas por la BIOS/UEFI durante el POST como medida de seguridad
- Esto es una característica de seguridad a nivel de unidad, no una limitación de `dwipe`
- **Solución**: Suspende brevemente tu sistema y reanúdalo; `dwipe` detecta automáticamente la reanudación y vuelve a escanear (o presiona **r** manualmente). La suspensión/reanudación cicla la alimentación del enlace SATA, lo que descongela la unidad.
- Si la unidad permanece congelada después de la suspensión/reanudación, prueba un apagado completo (10+ minutos para que los condensadores de la unidad se descarguen) seguido de arranque y nuevo escaneo
**Particularidades y Compatibilidad de Dispositivos:**
- Los dispositivos de almacenamiento tienen varias implementaciones de firmware y peculiaridades de hardware que afectan las operaciones de borrado seguro
- Algunas unidades pueden no soportar completamente ciertas operaciones de sanitización, tener problemas de temporización o mostrar un comportamiento inesperado
- `dwipe` no puede garantizar que todos los dispositivos se borren con éxito; algunos hardwares simplemente no cooperan con los comandos de borrado
- Siempre verifica una unidad después de borrarla (usa la tecla **v**) para confirmar que el borrado se haya completado realmente
- Para datos de misión crítica en hardware peculiar, considera usar herramientas de borrado seguro específicas del fabricante como alternativa
---
### Cómo Lidiar con Discos Defectuosos o Fallidos
dwipe incluye protecciones incorporadas para dispositivos de almacenamiento problemáticos:
**Manejo Automático de Errores.** Al encontrar errores de disco durante el borrado:
* Errores de escritura consecutivos: El borrado se aborta después de 3 escrituras fallidas consecutivas
* Umbral total de errores: El borrado se aborta después de 100 errores de escritura en total
* Reintento automático: En fallo de escritura, el dispositivo se cierra y reabre automáticamente (recuperación de errores transitorios)
* Recuperación de descriptores de archivo: Se detectan estados de FD malos y se refrescan los manejadores
**Detección de Estancamiento y Ralentización.** dwipe monitorea el rendimiento de escritura y puede abortar operaciones problemáticas:
* Detección de estancamiento: Aborta si no hay progreso durante 5 minutos (configurable)
* Detección de ralentización: Mide la velocidad base durante los primeros 5 segundos, aborta si la velocidad cae por debajo del umbral (p. ej., 1/4 de la velocidad base)
* Seguimiento de progreso: El monitoreo continuo asegura que las escrituras realmente lleguen al dispositivo
**Si un Borrado se Atasca...** Si un borrado parece congelado o no responde:
* Primer intento: Presiona s para detener de manera ordenada el borrado seleccionado
* Espera pacientemente: Algunas operaciones de disco pueden tardar minutos en expirar a nivel del kernel
* Si sigue atascado: Presiona S (Mayús+s) para DETENER todos los borrados
* Último recurso: Si la interfaz está completamente congelada:
* Presiona Ctrl-Z para suspender `dwipe`
* En la terminal, ejecuta: `sudo pkill -f "python.*dwipe" (solo apunta a procesos dwipe)`
* Ejecuta reset para restaurar la terminal si la pantalla está corrupta
**Previniendo Problemas con Medios Problemáticos.** Para discos conocidos como defectuosos o hardware cuestionable:
* Comienza con verificación: Presiona v primero para probar legibilidad
* Usa velocidades más bajas: Habilita la limitación de páginas sucias (tecla d) para reducir presión de E/S
* Monitorea los registros del sistema: Revisa dmesg -w en otra terminal para errores de disco
* Considera problemas de hardware: Los gabinetes USB, cables y controladores suelen causar problemas
**Patrones Comunes de Error de Disco**
* Caídas de conexión USB: dwipe detectará e intentará recuperarse
* Sectores defectuosos: Los errores se contarán; el trabajo se aborta si son excesivos
* Tiempos de espera del controlador: El kernel puede colgarse; la detección de estancamiento debería activarse
* Disco lleno: Los errores de escritura más allá del final del dispositivo se manejan correctamente
**Recuperación Después de un Aborto.** Si un borrado se aborta debido a errores de disco:
* El estado del dispositivo muestra s (detenido/parcial)
* Puedes intentar reanudar (w) - puede tener éxito si el error fue transitorio
* O verificar (v) para ver qué se escribió realmente
* Considera reemplazar el disco si los errores persisten
Nota: Algunos discos están fundamentalmente rotos y no pueden borrarse de manera confiable. dwipe se protegerá a sí mismo y a tu sistema, pero no puede reparar fallas de hardware.
---
#### Recomendaciones para Borrado SATA a través de USB
* Requisito 1: Soporte SAT (SCSI-ATA Translation)
* El puente USB debe ser capaz de "pasar" comandos ATA.
* La Prueba: Si la aplicación puede ver la sección "Seguridad" en los detalles de la unidad, el puente soporta SAT.
* Requisito 2: Alimentación Estable
* Los borrados de firmware (especialmente en HDD de 3.5") consumen una potencia pico significativa.
* El Riesgo: Si se usa un cable "solo bus" alimentado por USB, el voltaje puede caer durante el borrado, causando que el puente se reinicie y "bloquee" la unidad en un estado bloqueado.
* La Recomendación: Usa siempre un dock USB con alimentación externa para unidades de 3.5".
* Requisito 3: Integridad del Tiempo de Espera de Comandos
* El puente no debe tener un "Watchdog Timer" agresivo.
* El Riesgo: Algunos puentes se desconectan si no ven "datos" durante 60 segundos. Durante un borrado de firmware, la unidad está ocupada internamente y no envía datos.
* La Recomendación: Usa conjuntos de chips de alta calidad como ASMedia (1153E) o JMicron (JMS578).
##### Desbloquear Dispositivo Bloqueado```
sudo hdparm --user-master u --security-unlock NULL /dev/sdX
sudo hdparm --user-master u --security-disable NULL /dev/sdX
Los Issues y Pull Requests son bienvenidos en github.com/joedefen/dwipe
Licencia MIT - consulte el archivo LICENSE para obtener más detalles.