In che modo iOS elabora un file tecnicamente e potrebbe non essere potenzialmente eliminato?

11

Qui abbiamo un'interessante discussione sulla cancellazione dei file sui dispositivi iOS. La domanda era: se cancello un file usando NSFileManager, cosa sta succedendo sotto il cofano?

La mia comprensione è che la cancellazione viene eseguita rimuovendo la voce corrispondente dalla tabella del file system.

L'argomento contatore è che un handle di file rimane in qualche modo e viene impostato solo un flag che contrassegna il file come cancellato. Se l'utente ha avuto accesso root al dispositivo iOS, potrebbe potenzialmente ripristinare quel flag e recuperare il contenuto del file.

In entrambi i casi siamo d'accordo sul fatto che il contenuto del file reale non verrà sovrascritto e che i normali byte esistano ancora nella memoria flash / disco finché il blocco non sarà occupato da un altro file.

L'idea è ora: se la seconda versione è vera, potremmo sovrascrivere il file con un contenuto di un byte prima dell'eliminazione (anche se quel byte viene scritto in una nuova posizione sull'unità flash senza sovrascrivere il vecchio contenuto) . Se il file viene ripristinato, è disponibile solo il contenuto di un byte sovrascritto.

Si noti che non stiamo parlando di analisi forensi del flash drive che potrebbero forse recuperare il contenuto del file originale.

Quindi per riassumere:

  • In che modo la cancellazione di un file su iOS funziona internamente?
  • L'approccio di sovrascrittura previene il fenomeno del disequilibrio?
posta Krumelur 20.08.2013 - 10:11
fonte

1 risposta

3

Credo che in Unix il file system sia modificato come suggerito (la voce viene rimossa dalla tabella del file system). Su Windows, la tabella del file system viene modificata e il file viene semplicemente contrassegnato come cancellato - gli strumenti di recupero dati possono ripristinare il file. Dopo aver esaminato le applicazioni di undelete di Windows, penso che anche il nome del file sia stato modificato, quindi, quando si sta annullando l'eliminazione, è necessario fornire il nome file corretto. Modificare il nome del file significherebbe se avessi creato un file con lo stesso nome di quello appena eliminato, il sistema operativo non avrebbe dovuto riconciliare due file con lo stesso nome.

MacOSX e Windows hanno un cestino (cestino) che penso sia implementato una cartella speciale in cui vengono copiati i file cancellati. Quando si svuota il cestino, questa cartella viene eliminata, modificando la tabella dei file di sistema. Se si utilizza NSFileManager, circonda il cestino (che non esiste comunque su iOS), quindi è una vera eliminazione. allo stesso modo se "rm" da una finestra di terminale.

Se crei un nuovo file con lo stesso nome di quello vecchio, in Unix è solo una nuova voce nella tabella dei file di sistema, ma dato che la vecchia voce è stata rimossa dalla tabella, non ci sarebbe un vantaggio per creare la nuova voce.

Questa è la mia convinzione, e sono pronto per l'assalto dei voti bassi; -)

    
risposta data 21.08.2013 - 00:32
fonte

Leggi altre domande sui tag