Как запросить данные из резервной копии файлов SQLite и Plist для iPhone

обновленный
Cover image for: Как запросить данные из резервной копии файлов SQLite и Plist для iPhone

Некоторые пользователи могут напрямую манипулировать необработанными файлами, хранящимися в их резервных копиях, в экспертном режиме. Они часто состоят из базы данных SQLite ( .sqlite3 , .sqllitedb и .db ) или файлов Plist (обычно .plist ).

iPhone Backup Extractor включает встроенный редактор Plist, и его пользователи могут автоматически экспортировать свои данные в форматы PDF, HTML, VCard, ICAL, VCF или CSV для легкого доступа. Однако пользователям, желающим извлечь данные из этих файлов, потребуется клиент базы данных SQLite.

Как я могу работать с базами данных SQLite?

Пользователи могут захотеть попробовать любое из этих трех приложений:

  • SQLiteFlow (платный, macOS и iOS). SQLiteFlow - наш инструмент для MacOS SQLite.
  • База 2 (платная, macOS). Base - это один из наших любимых инструментов SQLite для macOS. Он доступен как для прямой загрузки, так и для приложения из App Store .
  • Браузер БД для SQLite (бесплатно, macOS и Windows). Обозреватель БД раньше назывался Обозреватель баз данных SQLite. Это наш рекомендуемый инструмент для Windows, и он бесплатный. Они также предоставляют версию для MacOS.

Как я могу работать с файлами базы данных Apple напрямую?

Например, чтобы вручную получить доступ к контактным данным, пользователи должны извлечь Libray/AddressBook/AddressBook.sqllitedb , а затем открыть извлеченный файл с помощью средства просмотра SQLite. Выбрав вкладку «Выполнение SQL», вставьте ее в поле «Строка SQL»:

SELECT ABPerson.first, ABPerson.last, ABMultiValue.value
FROM ABPerson, ABMultiValue
WHERE ABMultiValue.record_id = ABPerson.ROWID

Нажатие кнопки « Execute Query должно вернуть полный список контактов, показанный в поле «Данные возвращены».

Чтобы получить доступ к данным SMS, пользователи должны извлечь Libray/SMS/SMS.db , открыть извлеченный файл с помощью средства просмотра SQLite, выбрать вкладку « Browse data », а затем выбрать message в раскрывающемся Libray/SMS/SMS.db « Table . При нажатии кнопки с увеличительным стеклом пользователи должны увидеть свою полную историю 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 может извлечь данные автоматически для вас! Однако, если вы идете в одиночку, вы должны 1970-01-01 , что даты представлены в виде количества секунд с 2001-01-01 или 1970-01-01 зависимости от положения поля даты. В Excel вы можете использовать формулу, такую как =1/1/2001 + A1/60/60/24 где A1 - ваши данные времени. Вам также может потребоваться изменить значение для учета вашего местного часового пояса.

Aidan Fitzpatrick

Aidan Fitzpatrick

Как мы можем помочь?

Наша служба поддержки здесь, чтобы помочь!

Наш офис работает с понедельника по пятницу с 9:00 до 17:00 по Гринвичу. Время в настоящее время 5:16 ПП с GMT.

Мы стремимся отвечать на все сообщения в течение одного рабочего дня.

Комментарии (1)

You can use this to format the messages (SMS) date field:

datetime(date/1000000000 + 978307200,'unixepoch','localtime') as date

© 2008 - 2025 Reincubate Ltd. Все права защищены. Зарегистрировано в Англии и Уэльсе #5189175, VAT GB151788978. Reincubate® и Camo® являются зарегистрированными товарными знаками. Политика конфиденциальности & условия.

Помогите