У нас тут цікава дискусія щодо видалення файлів на пристроях iOS. Питання: якщо я видаляю файл за допомогою NSFileManager, що відбувається під кришкою?
Я розумію, що видалення виконується шляхом видалення відповідного запису файлу з таблиці файлової системи.
Аргумент зустрічного полягає в тому, що ручка файлу залишається якимось чином, і встановлюється лише прапор, який позначає файл як видалений. Якщо користувач мав кореневий доступ до пристрою iOS, він може потенційно скинути цей прапор і відновити вміст файлу.
В обох випадках ми погоджуємось, що фактичний вміст файлу не буде перезаписаний, а прості байти все ще існують на флеш-пам'яті / диску, поки блок не буде зайнятий іншим файлом.
Зараз ідея: якщо друга версія є істинною, ми можемо перезаписати файл з вмістом в один байт перед видаленням (навіть якщо цей байт буде записаний на нове місце на флеш-диску, фактично не перезаписуючи старий вміст). Якщо потім файл буде відновлено, доступний лише перезаписаний вміст на один байт.
Зауважте, що ми не говоримо про криміналістичний аналіз флешки, який, можливо, може відновити вихідний вміст файлу.
Отже, резюмувати:
- Як видалення файлу на iOS працює внутрішньо?
- Чи перешкоджає перезаписати підхід?