Как запросить данные из резервной копии файлов 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 - ваши данные времени. Вам также может потребоваться изменить значение для учета вашего местного часового пояса.

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

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

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

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

Наша отличная команда поддержки

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

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

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

Можем ли мы улучшить эту статью?

Нам нравится слышать от пользователей: почему бы не написать нам электронное письмо, оставить комментарий или написать в Твиттере @reincubate?

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