Экспертиза iOS с восстановлением данных SQLite: глубокое погружение и сравнение

опубликованный обновленный
Cover image for: Экспертиза iOS с восстановлением данных SQLite: глубокое погружение и сравнение

Есть много методов, которые мы используем, когда речь идет о помощи людям в восстановлении их данных с помощью наших продуктов, и большая часть умов, которые мы создали за последнее десятилетие, лежит под поверхностью. Сегодня мы собираемся погрузиться в один из подходов, которые мы используем для восстановления удаленных сообщений: судебное восстановление данных SQLite.

В любом случае, как iPhone хранит данные?

Проще говоря, многие приложения хранят свои данные в базах данных, и большинство из них используют формат SQLite . SQLite - это аккуратный небольшой серверный формат базы данных, который хорошо подходит для нужд Apple и поставщиков приложений. Поскольку SQLite работает без отдельного сервера баз данных, есть несколько отличий от других баз данных. В частности, для того, чтобы доступ был быстрым, он не может регулярно поддерживать себя во время использования. Пользователи не хотят, чтобы приложение замедлялось, пока база данных выполняет обычное обслуживание, такое как, например, очистка индексов.

Эти операции очистки или оптимизации могут выполняться с SQLite, но они, как правило, выполняются нечасто. Для пользователей это правильный баланс: ваш iPhone будет достаточно быстрым, а ваши данные - надежными. И, если возникнет такая необходимость, у вас будет больше, чем в среднем, шансов на восстановление удаленных данных iOS из-за нечастого характера этого процесса обслуживания.

Не вдаваясь в технические подробности, все довольно просто. Думайте об этих базах данных как о больших шкафах для хранения документов:

  • Когда пришло время добавить к ним информацию, вы бы добавили файл с аккуратной меткой, объясняющей, что находится в файле, и именно так работает ваш телефон.
  • Но когда вы удаляете данные, а не вынимаете файл из шкафа, телефон просто снимает этикетку. Таким образом, старые данные не удаляются, они просто остаются без метки (или «осиротевшими», как мы это называем технически). Это означает, что при удалении данных ваш телефон не должен проходить относительно медленный процесс освобождения пространство в шкафу. Он просто говорит «да, забудь об этом» и идет дальше.
  • Когда дело доходит до добавления дополнительных данных, если есть место, ваш телефон будет добавлять дополнительные файлы. Если нет места для добавления дополнительных данных, он увидит, есть ли какие-либо из этих немеченых файлов, и, если таковые имеются, он будет отбрасывать любые их части, необходимые для освобождения места.

Что вы можете извлечь из этого, так это то, что быстро удалить данные на вашем телефоне и довольно быстро добавить их, при условии, что есть место. И - неинтуитивно - это процесс добавления новых данных, который действительно приводит к удалению более старой информации.

Восстановление удаленной информации из SQLite на iOS

Скажем, вы использовали свой телефон пару месяцев. Базы данных на нем похожи на шкафы для хранения документов, которые мы описали ранее. В них есть куча файлов, и там, где вы удалили данные, эти файлы все еще будут там, но с двумя оговорками: они могут быть частично или полностью перезаписаны, и они не будут помечены.

В таком случае метод восстановления в значительной степени соответствует вашим ожиданиям: он находит эти потерянные файлы - полные или нет - и пытается найти, где они подходят, и достаточно ли данных для них, чтобы иметь смысл. Как и следовало ожидать, все это немного сложно, и есть ряд других технических особенностей, которые могут усложнить задачу. В частности, базы данных размером более нескольких мегабайт и базы данных, содержащие двоичные данные, могут значительно усложнить процесс.

Тем не менее, вернуть данные немного не сложно, поэтому вы видите на рынке большое количество инструментов, претендующих на то, что они могут это сделать. В общем, вы можете разделить эти инструменты на три категории:

  • Хорошо. Они используют множество различных методов, которые были созданы и протестированы на тысячах различных примеров удаления или повреждения.
  • Плохо. Они только восстанавливают оставшееся содержимое, которое идеально сформировано и содержит ряд подсказок относительно того, где оно принадлежит.
  • Мерзкий Они сканируют потерянный контент и отмечают любой старый мусор, который выглядит так, как будто он соответствует контексту. Если вы посмотрите на это, пока щуритесь. «NSMutableArray» - это может быть имя вашей пропавшей записи контакта? Хммм.

Восстановление SQLite и восстановление с iOS в реальном мире

Теперь, когда мы немного поговорили о том, как это работает, давайте рассмотрим, насколько это эффективно в реальном мире. В конце концов, мы хотим предоставить обычным пользователям возможность возвращать свои данные без необходимости быть экспертами. Нам это удается? Мы проведем сравнение четырех ведущих инструментов восстановления SQLite с iPhone Backup Extractor. На момент написания последней версии этих инструментов являются:

Name Version & release date Platforms Price
Reincubate iPhone Backup Extractor 7.6.1.2201, May ‘18 Windows & macOS $34.95
SQLabs’ SQLite Doctor 1.3.0, Aug ‘13 Windows & macOS $49
SysTools' Sqlite Database Recovery 1.2, no release date shown Windows only $149
Stellar Data Recovery’s Stellar Phoenic Repair For Sqlite 1.0, no release date shown Windows only $599
GetData’s Forensic Explorer (FEX) 4.3.5.7364, May '18 Windows only $1,695
Acquire Forensics’ Sqlite Forensics Explorer 2.0, no release date shown Windows only $149

Чтобы настроить этот тест, мы собираемся использовать большую базу данных, полную реальных данных. В данном случае это база данных «Сообщения» объемом 169 МБ, взятая с iPhone под управлением iOS 11. Давайте посмотрим на это: следующие команды показывают его размер файла и результаты запроса, чтобы подсчитать, сколько сообщений он содержит ,

$ 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

Итак, более 220 000 сообщений. Это те, которые не были удалены. Но сколько удаленных сообщений могут найти инструменты восстановления?

Восстановление данных SQLite с iOS: результаты в

Мы запустили все инструменты, показанные выше, в одном файле и отметили результаты в таблице ниже. Мы бы с удовольствием использовали Mac, но поскольку не все инструменты поддерживают macOS, мы использовали ПК с 16 ГБ ОЗУ под управлением Windows 10 Pro (версия 1803 , сборка 17134.48 ).

Reincubate Acquire Forensics SQLabs SysTools Stellar Data Recovery GetData
Number recovered 342 56 (but mostly junk) 0 0 (After a lengthy scan, it found 220,261, which is the same number of valid records already present!) 0 (Each time we ran it, it counted up to 37 deleted messages, but crashed with error 0x40000015, before it finished the process. It wasn’t possible to export or save any.) 0 (We reached out multiple times to purchase a license, but never heard back.)
“Junk” recovered? None; all appear to be valid undeleted messages. Emojis, dates, times and sender / recipient numbers are all recovered. Most of those recovered are junk 😕 We needed to manually input max ROWID values a few times to try different parameters. None recovered at any point. Only found pre-existing messages. Crashed every time, so couldn’t tell. Wasn’t possible to get it running.
Effective cost per message recovered (in this example) $0.10 $2.66 >$49 >$149 >$599 >$1,695

ХОРОШО. Так что это было немного удивительно, так как мы ожидали, что они все хотя бы восстановят некоторые данные. Turns Оказывается, наш скромный инструмент лидирует на рынке восстановления данных SQLite, несмотря на то, что он не является специализированным инструментом восстановления данных SQLite. (Если вам интересно, именно поэтому мы также лицензируем наши технологии для других компаний. Это сложно.)

Восстановление данных SQLite на разных версиях iOS

С каждым новым выпуском iOS у Apple есть возможность изменить то, как операционная система обрабатывает базы данных SQLite. Это включает оптимизацию того, как часто выполняются операции очистки и технического обслуживания и когда они запускаются.

По мере того как устройства становятся более мощными, эти операции могут использоваться более свободно, поскольку их влияние на пользовательский опыт становится меньше. Поэтому, с каждым новым поколением, база данных SQLite, вероятно, будет очищаться чаще, что позволяет быстрее использовать базу данных для обычных операций. Это согласуется с целью Apple повысить защиту и конфиденциальность пользовательских данных, поскольку на устройстве не остается ненужных данных. Тем не менее, это делает невозможным восстановление данных с помощью метода SQLite.

В iOS 11 мы начали наблюдать увеличение активности очистки базы данных для SMS и iMessages. Восстановление все еще возможно, и более вероятно для более свежих сообщений, которые были впоследствии удалены, но не гарантированы.

В iOS 12 произошло значительное увеличение частоты очистки базы данных для базы данных SMS и iMessages. Поскольку в этом выпуске говорилось, что он уделяет большое внимание улучшению обслуживания и скорости, это изменение имеет смысл, поскольку, скорее всего, оно приведет к снижению производительности для более распространенных операций.

Что мне нужно сделать, чтобы воспользоваться этим при восстановлении данных iOS?

Возможно, это самое лучшее: эта технология интегрирована с Reincubate iPhone Backup Extractor и используется с первых дней. Когда вы используете приложение, оно будет применять эту технологию при предварительном просмотре или экспорте ваших сообщений и ряда других типов данных. В зависимости от данных, которые вы просматриваете, и того, как вы их просматриваете, приложение будет указывать, какие части данных были восстановлены, а какие - нет. Это все включено.

Об авторе

Эйдан Фитцпатрик основал Reincubate в 2008 году после создания первого в мире инструмента для восстановления данных iPhone, iPhone Backup Extractor. Он говорит в Google по вопросам предпринимательства и является выпускником Академии лидерства Организации предпринимателей.

Генеральный директор Reincubate в Букингемском дворце

На снимке выше - встреча членов команды Reincubate Ее Величества Королевы Елизаветы Ⅱ в Букингемском дворце, после того как она была удостоена высшей бизнес-награды Великобритании за нашу работу с технологиями Apple. Прочитайте нашу позицию о конфиденциальности, безопасности и сохранности .

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

I have a question. When apple release new ios , do they provide any information about schema change? or we can get them from ios backup. Thanks in advance.

Hey Jon. Apple don't, and it's not just them changing things: any time a third-party app gets updates things can change. We have a set of tools and a team testing these things every day.


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

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

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