Jak technicznie iOS usuwa plik i czy może zostać usunięty?

11

Mamy tutaj interesującą dyskusję na temat usuwania plików na urządzeniach z systemem iOS. Pytanie brzmiało: jeśli usunę plik za pomocą NSFileManager, co się dzieje pod maską?

Rozumiem, że usuwanie odbywa się poprzez usunięcie odpowiedniego wpisu z tabeli systemu plików.

Argument licznika polega na tym, że uchwyt pliku pozostaje w jakiś sposób i ustawiana jest tylko flaga oznaczająca plik jako usunięty. Jeśli użytkownik miał dostęp root do urządzenia z systemem iOS, mógł potencjalnie zresetować tę flagę i odzyskać zawartość pliku.

W obu przypadkach zgadzamy się, że rzeczywista zawartość pliku nie zostanie nadpisana, a zwykłe bajty nadal istnieją w pamięci flash / na dysku, dopóki blok nie zostanie zajęty przez inny plik.

Pomysł jest teraz taki: jeśli druga wersja jest prawdziwa, przed usunięciem możemy nadpisać plik treścią jednobajtową (nawet jeśli ten bajt zostanie zapisany w nowej lokalizacji na dysku flash bez faktycznego nadpisywania starej zawartości). Jeśli plik zostanie odzyskany, dostępna będzie tylko nadpisana zawartość jednobajtowa.

Pamiętaj, że nie mówimy o analizie kryminalistycznej dysku flash, która może odzyskać oryginalną zawartość pliku.

Podsumowując:

  • W jaki sposób usuwanie pliku na iOS działa wewnętrznie?
  • Czy podejście zastępujące zapobiega cofnięciu?
Krumelur
źródło

Odpowiedzi:

3

Wierzę, że w systemie Unix system plików jest modyfikowany zgodnie z sugestią (wpis jest usuwany z tabeli systemu plików). W systemie Windows tabela systemu plików jest modyfikowana, a plik jest oznaczony jako usunięty - narzędzia do odzyskiwania danych mogą cofnąć usunięcie pliku. Po obejrzeniu cofniętych aplikacji Windows myślę, że nazwa pliku jest również zmodyfikowana, więc podczas cofania przywracania należy podać poprawną nazwę pliku. Modyfikacja nazwy pliku oznaczałaby, że jeśli utworzyłeś plik o tej samej nazwie, którą właśnie usunąłeś, system operacyjny nie musiałby pogodzić się z tym, że istnieją dwa pliki o tej samej nazwie.

MacOSX i Windows mają kosz na śmieci (kosz), który moim zdaniem jest zaimplementowany w specjalnym folderze, do którego kopiowane są usunięte pliki. Po opróżnieniu kosza ten folder jest czyszczony - przez modyfikację tabeli plików systemowych. Jeśli używasz NSFileManager, omija on kosz na śmieci (który i tak nie istnieje na iOS), więc jest to prawdziwe usunięcie. podobnie, jeśli „rm” z okna terminala.

Jeśli utworzysz nowy plik o tej samej nazwie co stary, w Uniksie jest to tylko nowy wpis w tabeli plików systemowych, ale ponieważ stary wpis został usunięty z tabeli, nie byłoby korzyści z utworzenia nowe wejście.

To jest moje przekonanie i jestem gotowy na atak głosów ;-)

Derek Knight
źródło
Zdecydowanie masz rację co do kosza na OS X. To tylko specjalny folder, nic więcej. W rzeczywistości możesz zobaczyć go jako folder w katalogu domowym, gdy widoczne są niewidoczne pliki.
Can Sürmeli