¿Cómo elimina técnicamente un archivo iOS y puede ser recuperado?

11

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

Tengo entendido que la eliminación se realiza al eliminar la entrada de archivo correspondiente de la tabla del sistema de archivos.

El argumento contrario 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 esa marca y recuperar el contenido del archivo.

En ambos casos, aceptamos que el contenido real del archivo no se sobrescribirá y que los bytes simples aún 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 verdadera, 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 luego se recupera el archivo, solo está disponible el contenido sobrescrito de un byte.

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

Entonces para recapitular:

  • ¿Cómo funciona internamente la eliminación de un archivo en iOS?
  • ¿El enfoque de sobrescritura evita la recuperación?
Krumelur
fuente

Respuestas:

3

Creo que en Unix el sistema de archivos se modifica como 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 se marca como eliminado: las herramientas de recuperación de datos pueden recuperar el archivo. Después de haber examinado las aplicaciones de recuperación de Windows, creo que el nombre del archivo también se modifica, por lo que al recuperarlo, debe proporcionar el nombre de archivo correcto. Modificar el nombre del archivo significaría que si crea un archivo con el mismo nombre que acaba de eliminar, el sistema operativo no tendría que conciliar que haya dos archivos con el mismo nombre.

MacOSX y Windows tienen una papelera (papelera de reciclaje) que creo que está implementada en una carpeta especial en la que se copian los archivos eliminados. Cuando vacía la papelera, esta carpeta se purga modificando la tabla de archivos del sistema. Si usa NSFileManager, evita la papelera (que de todos modos no existe en iOS), por lo que es una eliminación real. igualmente si "rm" desde 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 dado que la entrada anterior se había eliminado de la tabla, no sería una ventaja crear el nueva entrada.

Esa es mi creencia, y estoy listo para la avalancha de votos negativos ;-)

Derek Knight
fuente
Definitivamente tiene razón acerca de la papelera en OS X. Es solo una carpeta especial, nada más. Y en realidad puedes verlo como una carpeta en tu directorio de inicio cuando haces visibles tus archivos invisibles.
Can Sürmeli