Expertise judiciaire iOS avec récupération de données SQLite: analyse approfondie et comparaison

Aidan Fitzpatrick

By Aidan Fitzpatrick

Published

Mis à jour

See how I'm qualified to write this article

Il existe de nombreuses techniques que nous utilisons pour aider les personnes à récupérer leurs données avec nos produits, et l'intelligence que nous avons construite au cours de la dernière décennie tient en grande partie sous la surface. Aujourd'hui, nous allons plonger dans l'une des approches que nous utilisons pour récupérer les messages supprimés: la récupération judiciaire de données SQLite.

Comment les iPhones stockent-ils leurs données?

En termes simples, de nombreuses applications stockent leurs données dans des bases de données et la plupart d’entre elles utilisent le format SQLite . SQLite est un petit format de base de données sans serveur et convient parfaitement à ce que Apple et les fournisseurs d’applications ont besoin. SQLite étant exécuté sans serveur de base de données distinct, il diffère des autres bases de données de plusieurs manières. En particulier, pour que l'accès soit rapide, il ne peut pas se maintenir régulièrement lorsqu'il est utilisé. Les utilisateurs ne veulent pas qu'une application ralentisse pendant que la base de données effectue une maintenance de routine telle que le nettoyage des index, par exemple.

Il est possible que ces opérations de nettoyage ou d'optimisation se produisent avec SQLite, mais elles ont tendance à être exécutées rarement. Pour les utilisateurs, c'est le bon équilibre: votre iPhone sera raisonnablement rapide et vos données robustes. Et, si le besoin s’en fait sentir, la probabilité de récupérer vos données iOS supprimées est supérieure à la moyenne, en raison de la nature peu fréquente de ce processus de maintenance.

Sans être trop technique, la procédure est simple. Pensez à ces bases de données comme de grands classeurs:

  • Lorsqu'il est temps d'ajouter des informations, vous ajoutez un fichier avec une étiquette soignée, expliquant le contenu du fichier et le fonctionnement de votre téléphone.
  • Mais lorsque vous supprimez des données plutôt que de sortir le fichier du classeur, le téléphone retire simplement l'étiquette. Ainsi, les anciennes données ne sont pas supprimées, elles sont simplement laissées sans étiquette (ou "orphelines", comme on pourrait l'appeler techniquement.) Cela signifie que lorsque vous supprimez des données, votre téléphone n'a pas besoin de passer assez lentement l'espace dans l'armoire. Il dit simplement «hein, oublie ça» et passe à autre chose.
  • Quand il s'agit d'ajouter plus de données, s'il y a de la place, votre téléphone ajoutera des fichiers supplémentaires. S'il n'y a pas d'espace pour ajouter plus de données, il verra s'il y a des fichiers non étiquetés qui traînent, et s'il y en a, il supprimera toutes les parties nécessaires pour créer de l'espace.

Ce que vous pourriez en déduire, c'est qu'il est rapide de supprimer des données sur votre téléphone et de l'ajouter rapidement, en supposant qu'il y ait de la place. Et - de manière peu intuitive - c'est le processus d'ajout de données plus récentes qui conduit réellement à la suppression d'informations plus anciennes.

Récupération des informations supprimées de SQLite sur iOS

Supposons que vous utilisez votre téléphone depuis quelques mois. Les bases de données qui y figurent ressemblent aux classeurs décrits plus haut. Ils contiennent un tas de fichiers et, là où vous avez supprimé des données, ils seront toujours là, mais avec deux réserves: ils ont peut-être été partiellement ou totalement remplacés et ils seront sans étiquette.

La technique de récupération correspond alors à peu près à ce que vous attendez: il faut trouver ces fichiers orphelins - complets ou non - et essayer de trouver leur place, et s’il reste suffisamment de données pour qu’ils aient un sens. Comme vous vous en doutez, tout est un peu fastidieux et plusieurs autres problèmes techniques peuvent apparaître pour rendre les choses plus difficiles. En particulier, les bases de données de plus de quelques mégaoctets et les bases de données contenant des données binaires peuvent rendre le processus beaucoup plus difficile.

Cela dit, il n’est pas difficile de récupérer des données, c’est pourquoi bon nombre d’outils sur le marché prétendent pouvoir le faire. En général, vous pouvez diviser ces outils en trois catégories:

  • Le bon. Ils utilisent de nombreuses techniques différentes qui ont été conçues et testées contre des milliers d'exemples de suppression ou de corruption.
  • Le mauvais. Ils ne récupèrent que le contenu restant, qui est parfaitement formé et comprend un certain nombre d'indices sur leur localisation.
  • Le moche. Celles-ci recherchent le contenu orphelin et signalent toute ancienne ordure qui semble correspondre au contexte. Si vous le regardez en plissant les yeux. "NSMutableArray" - pourrait-il s'agir du nom de votre enregistrement de contact manquant? Hmmm.

Annulation et récupération de SQLite à partir d'iOS dans le monde réel

Maintenant que nous avons un peu parlé de la façon dont cela fonctionne, voyons à quel point il est efficace dans le monde réel. Après tout, nous voulons donner aux utilisateurs ordinaires le droit de récupérer leurs données sans être des experts. Est-ce que nous gérons cela? Nous allons comparer les quatre principaux outils de récupération SQLite - par rapport à iPhone Backup Extractor. Au moment de la rédaction de ce manuel, la dernière version de ces outils est la suivante:

prénom Version et date de sortie Plateformes Prix
Reincubate iPhone Backup Extractor 7.6.1.2201, 18 mai Windows et macOS 34,95 $
SQLites Doctor de SQLabs 1.3.0, août '13 Windows et macOS 49 $
Récupération de la base de données SQLite de SysTools 1.2, pas de date de sortie indiquée Windows uniquement 149 $
Stellar Phoenic Repair de Stellar Data Recovery pour SQLite 1.0 Windows uniquement 599 $
Forensic Explorer (FEX) de GetData 4.3.5.7364, mai '18 Windows uniquement 1,695 $
Acquérir Sqlite Forensics Explorer de Forensics 2.0, pas de date de sortie affichée Windows uniquement 149 $

Pour configurer ce test, nous allons utiliser une belle base de données volumineuse, remplie de données réelles. Dans cet exemple, il s'agit d'une base de données «Messages» de 169 Mo, issue d'un iPhone sous iOS 11. Voyons-le: les commandes suivantes affichent la taille du fichier et les résultats d'une requête pour compter le nombre de messages qu'il contient. .

$ ls -l sms.db
-rw------- 1 afitzpatrick 177565696 Oct  2  2017 sms.db

$ sqlite3 sms.db
SQLite version 3.19.3 2017-06-27 16:48:08
Enter ".help" for usage hints.
sqlite> SELECT COUNT(*) FROM message;
220261

Donc, il y a plus de 220 000 messages. Ce sont ceux qui n'ont pas été supprimés. Mais combien de messages supprimés les outils de récupération peuvent-ils trouver?

Récupération de données SQLite depuis iOS: les résultats sont en cours

Nous avons exécuté tous les outils présentés ci-dessus dans le même fichier et noté les résultats dans le tableau ci-dessous. Nous aurions adoré utiliser un Mac, mais comme tous les outils ne prennent pas en charge MacOS, nous avons utilisé un PC doté de 16 Go de RAM sous Windows 10 Pro (version 1803 , version 17134.48 ).

Réincuber Acquérir la criminalistique SQLabs SysTools Récupération de données stellaires GetData
Nombre récupéré 342 56 (mais surtout des cochonneries) 0 0 (Après un long balayage, il a trouvé 220 261, ce qui correspond au même nombre d’enregistrements valides déjà présents!) 0 (Chaque fois que nous l'avons exécuté, il comptait jusqu'à 37 messages supprimés, mais s'est écrasé avec l'erreur 0x40000015 avant la fin du processus. Il n'était pas possible d'exporter ou d'en enregistrer.) 0 (Nous avons tendu la main à plusieurs reprises pour acheter une licence, mais nous n'avons jamais eu de réponse.)
"Junk" récupéré? Aucun; tous semblent être des messages non supprimés valides. Les émoticônes, les dates, les heures et les numéros d'expéditeur / destinataire sont tous récupérés. La plupart de ceux qui ont été retrouvés sont de la malbouffe Nous avons dû saisir manuellement plusieurs fois le maximum de valeurs ROWID pour essayer différents paramètres. Aucun récupéré à aucun moment. Seuls les messages préexistants ont été trouvés. Crashed à chaque fois, donc je ne pouvais pas dire. Ce n'était pas possible de le faire fonctionner.
Coût effectif par message récupéré (dans cet exemple) 0,10 USD 2,66 USD > 49 $ > 149 $ > 599 $ > 1 695 $

D'ACCORD. C'était donc un peu surprenant, car nous nous attendions à ce qu'ils récupèrent tous au moins certaines données. Hum Il s'avère que notre modeste outil est en tête du marché de la récupération de données SQLite, même s'il n'est pas un outil de récupération de données SQLite dédié. (Si vous vous posez la question, c’est la raison pour laquelle nous cédons également notre technologie à d’autres sociétés. C’est très difficile.)

Récupération de données SQLite sur différentes versions d'iOS

À chaque nouvelle version d'iOS, Apple a la possibilité de changer la manière dont le système d'exploitation gère les bases de données SQLite. Cela inclut des optimisations concernant la fréquence des nettoyages et autres opérations de maintenance et le moment où elles sont déclenchées.

Au fur et à mesure que les périphériques deviennent plus puissants, ces opérations peuvent être utilisées plus librement car leur impact sur l'expérience utilisateur devient plus petit. Par conséquent, à chaque nouvelle génération, une base de données SQLite est susceptible d'être nettoyée plus fréquemment, ce qui présente l'avantage de rendre la base de données plus rapide à utiliser pour des opérations normales. Cela va dans le sens de l'objectif d'Apple d'accroître la protection et la confidentialité des données utilisateur, car il ne reste aucune donnée indésirable sur le périphérique. Cependant, cela a pour inconvénient de rendre impossible la récupération de données via la méthode SQLite.

Dans iOS 11, nous avons constaté une augmentation de l'activité de nettoyage de la base de données pour SMS et iMessages. La récupération est toujours possible et plus probable pour les messages plus récents qui ont ensuite été supprimés, mais non garantis.

Dans iOS 12, la fréquence de nettoyage de la base de données SMS et iMessages a considérablement augmenté. Comme cette version a été présentée comme étant fortement axée sur la maintenance et l'amélioration de la vitesse, cette modification est logique car elle entraînera probablement des performances plus homogènes pour les opérations plus courantes.

Que dois-je faire pour en tirer parti lors de la récupération de données iOS?

C’est peut-être le meilleur atout : cette technologie est intégrée à Reincubate iPhone Backup Extractor depuis le début. Lorsque vous utilisez l'application, cette technologie sera appliquée lors de la prévisualisation ou de l'exportation de vos messages et de plusieurs autres types de données. En fonction des données que vous visualisez et de la manière dont vous les visualisez, l'application indique les données non supprimées et celles qui ne l'ont pas été. Tout est inclus.

About the author

Aidan Fitzpatrick founded Reincubate in 2008 after building the world's first iPhone data recovery tool, iPhone Backup Extractor. He's spoken at Google on entrepreneurship, and is a graduate of the Entrepreneurs' Organisation's Leadership Academy.

Reincubate's CEO at Buckingham Palace

Pictured above are members of Reincubate’s team meeting HM Queen Elizabeth Ⅱ at Buckingham Palace, after being awarded the UK’s highest business award for our work with Apple technology. Read our position on privacy, safety and security.

Can we improve this article?

We love hearing from users: why not drop us an email, leave a comment, or tweet @reincubate?

© 2008 - 2019 Reincubate Ltd. Tous droits réservés. Registered in England and Wales #5189175, VAT GB151788978. Reincubate® is a registered trademark. Confidentialité et modalités. Nous recommandons l'authentification multi-facteurs. Construit avec à Londres.