¿Cómo elimina iOS técnicamente un archivo y puede potencialmente recuperarse?

11

Aquí tenemos una interesante discusión sobre la eliminación de archivos en dispositivos iOS. La pregunta era: si elimino un archivo con NSFileManager, ¿qué sucede debajo del capó?

Entiendo que la eliminación se realiza eliminando la entrada de archivo correspondiente de la tabla del sistema de archivos.

El argumento del contador es que un identificador de archivo permanece de alguna manera y solo se establece un indicador que marca el archivo como eliminado. Si el usuario tuviera acceso de root al dispositivo iOS, podría restablecer ese indicador y recuperar el contenido del archivo.

En ambos casos, estamos de acuerdo en que el contenido del archivo real no se sobrescribirá y que los bytes sin formato todavía existen en la memoria flash / disco hasta que el bloque esté ocupado por otro archivo.

La idea es ahora: si la segunda versión es cierta, podríamos sobrescribir el archivo con un contenido de un byte antes de eliminarlo (incluso si ese byte se escribe en una nueva ubicación en la unidad flash sin sobrescribir el contenido anterior) . Si el archivo se recupera, solo estará disponible el contenido sobrescrito de un byte.

Tenga en cuenta que no estamos hablando de un análisis forense de la unidad flash que podría recuperar el contenido del archivo original.

Para recapitular:

  • ¿Cómo funciona la eliminación de un archivo en iOS internamente?
  • ¿El enfoque de sobrescritura evita la eliminación de datos?
pregunta Krumelur 20.08.2013 - 10:11

1 respuesta

3

Creo que en Unix el sistema de archivos se modifica como usted sugiere (la entrada se elimina de la tabla del sistema de archivos). En Windows, la tabla del sistema de archivos se modifica, y el archivo solo se marca como eliminado: las herramientas de recuperación de datos pueden recuperar el archivo. Habiendo examinado las aplicaciones de recuperación de Windows, creo que el nombre del archivo también se modificó, por lo que cuando se recupera, debe proporcionar el nombre de archivo correcto. Modificar el nombre del archivo significaría que si creaste un archivo con el mismo nombre que el que acabas de eliminar, el sistema operativo no tendría que conciliar los dos archivos con el mismo nombre.

MacOSX y Windows tienen un bote de basura (papelera de reciclaje) que creo que está implementado en una carpeta especial en la que se copian los archivos eliminados. Cuando vacía la papelera, se purga esta carpeta modificando la tabla de archivos del sistema. Si usa NSFileManager, elude la papelera (que de todos modos no existe en iOS) por lo que es una eliminación real. Del mismo modo, si "rm" de una ventana de terminal.

Si crea un nuevo archivo con el mismo nombre que el anterior, en Unix es solo una nueva entrada en la tabla de archivos del sistema, pero como la entrada anterior se eliminó de la tabla, no habría ninguna ventaja para crear la nueva entrada.

Eso es lo que creo, y estoy listo para la avalancha de votos negativos ;-)

    
respondido por el Derek Knight 21.08.2013 - 00:32

Lea otras preguntas en las etiquetas