Certains utilisateurs peuvent souhaiter manipuler directement les fichiers bruts stockés dans leurs sauvegardes avec le mode Expert. Il s’agit souvent de bases de données SQLite (.sqlite3, .sqllitedb et .db) ou de fichiers Plist (généralement .plist).
iPhone Backup Extractor intègre un éditeur de Plist, et ses utilisateurs peuvent exporter automatiquement leurs données aux formats PDF, HTML, VCard, ICAL, VCF ou CSV pour y accéder facilement. Toutefois, pour extraire des données de ces fichiers, il faut un client de base de données SQLite.
Comment travailler avec des bases de données SQLite ?
Vous pouvez essayer l’une de ces trois applications :
- SQLiteFlow (payant, macOS et iOS). SQLiteFlow est notre outil SQLite de prédilection sur macOS.
- Base 2 (payant, macOS). Base est l’un de nos outils SQLite préférés sur macOS, juste après SQLiteFlow ; il est disponible en téléchargement direct et sous forme d’app de l’App Store.
- DB Browser for SQLite (gratuit, macOS et Windows). DB Browser s’appelait autrefois SQLite Database Browser. C’est l’outil que nous recommandons sous Windows, et il est gratuit. Une version pour macOS est également proposée.
Puis-je me fier à ces informations ?
Reincubate n’est affilié à aucun de ces produits et ne reçoit aucune rémunération pour les mentionner.
Comment travailler directement avec les fichiers de base de données d’Apple ?
Par exemple, pour accéder manuellement aux données des contacts, extrayez Libray/AddressBook/AddressBook.sqllitedb, puis ouvrez le fichier extrait avec un lecteur SQLite. Dans l’onglet « Execute SQL », collez ceci dans le champ « SQL string » :
SELECT ABPerson.first, ABPerson.last, ABMultiValue.value
FROM ABPerson, ABMultiValue
WHERE ABMultiValue.record_id = ABPerson.ROWID
En cliquant sur le bouton Execute Query, vous devriez obtenir la liste complète des contacts dans le champ « Data returned ».
Pour accéder aux données des SMS, extrayez Libray/SMS/SMS.db, ouvrez le fichier extrait avec le lecteur SQLite, choisissez l’onglet Browse data, puis sélectionnez message dans le menu déroulant Table. En cliquant sur le bouton en forme de loupe, vous devriez voir l’historique complet de vos SMS dans le champ « Data returned ».
L’un de nos utilisateurs a trouvé la requête ci-dessous utile ; nous l’incluons donc ici pour nos utilisateurs. Gardez à l’esprit que les formats de base de données changent d’une version d’iOS à l’autre : ces requêtes doivent donc souvent évoluer au fil du temps.
SELECT ROWID,
ABPerson.first,
ABPerson.last,
ABPerson.Organization AS organization,
ABPerson.Department AS department,
DATETIME(ABPerson.Birthday + STRFTIME('%s', '2001-01-01 00:00:00'), 'unixepoch', 'localtime') AS Birthday,
ABPerson.JobTitle as jobtitle,
ABPerson.Organization,
ABPerson.Department,
ABPerson.Note,
ABPerson.Nickname,
DATETIME(ABPerson.CreationDate + STRFTIME('%s', '2001-01-01 00:00:00'), 'unixepoch', 'localtime') AS Created,
DATETIME(ABPerson.ModificationDate + STRFTIME('%s', '2001-01-01 00:00:00'), 'unixepoch', 'localtime') AS Modified,
( SELECT value FROM ABMultiValue
WHERE property = 3 AND record_id = ABPerson.ROWID AND label = (
SELECT ROWID FROM ABMultiValueLabel
WHERE value = '_$!<Work>!$_'
)
) AS phone_work,
( SELECT value FROM ABMultiValue
WHERE property = 3 AND record_id = ABPerson.ROWID AND label = (
SELECT ROWID FROM ABMultiValueLabel
WHERE value = '_$!<Mobile>!$_'
)
) AS phone_mobile,
( SELECT value FROM ABMultiValue
WHERE property = 3 AND record_id = ABPerson.ROWID AND label = (
SELECT ROWID FROM ABMultiValueLabel
WHERE value = '_$!<Home>!$_'
)
) AS phone_home,
( SELECT value FROM ABMultiValue
WHERE property = 4 AND record_id = ABPerson.ROWID AND label IS null
) AS email,
( SELECT value FROM ABMultiValueEntry
WHERE parent_id IN (
SELECT ROWID FROM ABMultiValue WHERE record_id = ABPerson.ROWID
) AND key = (
SELECT ROWID FROM ABMultiValueEntryKey WHERE lower(value) = 'street'
)
) AS address,
( SELECT value FROM ABMultiValueEntry
WHERE parent_id IN (
SELECT ROWID FROM ABMultiValue WHERE record_id = ABPerson.ROWID
) AND key = (
SELECT ROWID FROM ABMultiValueEntryKey WHERE lower(value) = 'city'
)
) AS city
FROM ABPerson
ORDER BY ABPerson.first
Nous tenons à jour ici une liste des fichiers clés de diverses apps.
Les champs de date et d’heure s’affichent sous forme de nombres : comment les interpréter ?
Vous aurez peut-être du mal à interpréter plusieurs champs des bases de données. N’oubliez pas qu’iPhone Backup Extractor peut extraire automatiquement les données pour vous. Mais si vous procédez seul, vous constaterez que les dates sont représentées soit par le nombre de secondes écoulées depuis 2001-01-01, soit par 1970-01-01, selon la position du champ de date. Dans Excel, vous pouvez utiliser une formule comme =1/1/2001 + A1/60/60/24, où A1 correspond à vos données de temps. Vous devrez peut-être aussi ajuster la valeur en fonction de votre fuseau horaire.
