11 votes

Comment iOS supprime-t-il techniquement un fichier et peut-il potentiellement être restauré ?

Nous avons ici une discussion intéressante sur la suppression de fichiers sur les appareils iOS. La question était la suivante : si je supprime un fichier en utilisant NSFileManager, que se passe-t-il en coulisse ?

De ce que je comprends, la suppression est effectuée en retirant l'entrée du fichier correspondant du tableau du système de fichiers.

L'argument contraire est qu'une poignée de fichiers reste d'une manière ou d'une autre et qu'un seul drapeau est défini pour marquer le fichier comme supprimé. Si l'utilisateur avait un accès root à l'appareil iOS, il pourrait potentiellement réinitialiser ce drapeau et récupérer le contenu du fichier.

Dans les deux cas, nous sommes d'accord sur le fait que le contenu réel du fichier ne sera pas écrasé et que les octets bruts existent toujours sur la mémoire flash/le disque jusqu'à ce que le bloc soit occupé par un autre fichier.

L'idée maintenant est la suivante : si la deuxième version est vraie, nous pourrions écraser le fichier avec un contenu d'un octet avant la suppression (même si cet octet est écrit à un nouvel emplacement sur le disque flash sans écraser réellement l'ancien contenu). Si ensuite le fichier est récupéré, seul le contenu écrasé d'un octet est disponible.

Notez que nous ne parlons pas de l'analyse légale du disque flash qui pourrait peut-être récupérer le contenu du fichier original.

Donc pour récapituler :

  • Comment fonctionne la suppression d'un fichier sur iOS en interne ?
  • L'approche d'écrasement empêche-t-elle la récupération ?

3voto

Gabriel Points 2433

Je crois qu'en Unix, le système de fichiers est modifié comme vous le suggérez (l'entrée est supprimée du tableau du système de fichiers). Sur Windows, le tableau du système de fichiers est modifié et le fichier est simplement marqué comme supprimé - les outils de récupération de données peuvent restaurer le fichier. Après avoir examiné les applications de récupération de fichiers Windows, je pense que le nom du fichier est également modifié, donc lors de la récupération, vous devez fournir le nom de fichier correct. Modifier le nom du fichier signifierait que si vous créiez un fichier avec le même nom que celui que vous venez de supprimer, le système d'exploitation n'aurait pas à concilier le fait qu'il existe deux fichiers avec le même nom.

MacOSX et Windows ont une corbeille (poubelle de recyclage) que je pense est implémentée dans un dossier spécial dans lequel les fichiers supprimés sont copiés. Lorsque vous videz la corbeille, ce dossier est purgé - en modifiant le tableau du système de fichiers. Si vous utilisez NSFileManager, cela contourne la corbeille (qui n'existe de toute façon pas sur iOS) donc c'est une véritable suppression. De même si vous utilisez "rm" depuis une fenêtre de terminal.

Si vous créez un nouveau fichier avec le même nom que l'ancien, en Unix c'est juste une nouvelle entrée dans le tableau du système de fichiers, mais puisque l'ancienne entrée a été supprimée du tableau, il n'y aurait pas d'avantage à créer la nouvelle entrée.

C'est ma croyance, et je suis prêt pour la vague de votes négatifs ;-)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X