Некоторые пользователи могут захотеть напрямую работать с необработанными файлами в своих резервных копиях в экспертном режиме. Чаще всего это базы данных SQLite (.sqlite3, .sqllitedb и .db) или файлы Plist (обычно .plist).
В iPhone Backup Extractor есть встроенный редактор Plist, а его пользователи могут автоматически экспортировать данные в форматы PDF, HTML, VCard, ICAL, VCF или CSV для удобного доступа. Однако тем, кто хочет извлечь данные из этих файлов, понадобится клиент баз данных SQLite.
Как работать с базами данных SQLite?
Можно попробовать любое из этих трёх приложений:
- SQLiteFlow (платное, macOS и iOS). SQLiteFlow — наш выбор среди инструментов SQLite для macOS.
- Base 2 (платное, macOS). Base — один из наших вторых по предпочтению инструментов SQLite для macOS, его можно скачать напрямую или получить как приложение из App Store.
- DB Browser for SQLite (бесплатное, macOS и Windows). Раньше DB Browser назывался SQLite Database Browser. Это наш рекомендуемый инструмент для Windows, и он бесплатный. Для macOS у него тоже есть версия.
Можно ли доверять этой информации?
Reincubate не связана ни с одним из этих продуктов и не получает вознаграждения за их упоминание.
Как напрямую работать с файлами баз данных Apple?
Например, чтобы вручную получить доступ к данным контактов, нужно извлечь Libray/AddressBook/AddressBook.sqllitedb, а затем открыть извлечённый файл в программе просмотра SQLite. Выберите вкладку «Execute SQL» и вставьте в поле «SQL string» следующее:
SELECT ABPerson.first, ABPerson.last, ABMultiValue.value
FROM ABPerson, ABMultiValue
WHERE ABMultiValue.record_id = ABPerson.ROWID
После нажатия кнопки Execute Query в поле «Data returned» должен отобразиться полный список контактов.
Чтобы получить доступ к данным SMS, нужно извлечь Libray/SMS/SMS.db, открыть извлечённый файл в программе просмотра SQLite, выбрать вкладку Browse data, а затем выбрать message в раскрывающемся списке Table. После нажатия кнопки с лупой в поле «Data returned» отобразится вся история SMS.
Один из наших пользователей счёл полезным приведённый ниже запрос, поэтому мы включили его сюда. Помните, что форматы баз данных меняются от одной версии iOS к другой, поэтому такие запросы часто приходится со временем менять.
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
Мы ведём здесь список ключевых файлов различных приложений.
Поля даты и времени отображаются просто как числа. Как их интерпретировать?
Интерпретировать некоторые поля в базах данных может быть непросто. Не забывайте, что iPhone Backup Extractor может извлечь данные автоматически! Но если вы действуете самостоятельно, учтите, что даты представлены либо как количество секунд, прошедших с 2001-01-01, либо как 1970-01-01, в зависимости от положения поля даты. В Excel можно использовать формулу вроде =1/1/2001 + A1/60/60/24, где A1 — ваши данные о времени. Возможно, значение также придётся скорректировать с учётом местного часового пояса.
