Экспертиза iOS с восстановлением данных SQLite: глубокое погружение и сравнение
Есть много методов, которые мы используем, когда речь идет о помощи людям в восстановлении их данных с помощью наших продуктов, и большая часть умов, которые мы создали за последнее десятилетие, лежит под поверхностью. Сегодня мы собираемся погрузиться в один из подходов, которые мы используем для восстановления удаленных сообщений: судебное восстановление данных SQLite.
В любом случае, как iPhone хранит данные?
Проще говоря, многие приложения хранят свои данные в базах данных, и большинство из них используют формат SQLite . SQLite - это аккуратный небольшой серверный формат базы данных, который хорошо подходит для нужд Apple и поставщиков приложений. Поскольку SQLite работает без отдельного сервера баз данных, есть несколько отличий от других баз данных. В частности, для того, чтобы доступ был быстрым, он не может регулярно поддерживать себя во время использования. Пользователи не хотят, чтобы приложение замедлялось, пока база данных выполняет обычное обслуживание, такое как, например, очистка индексов.
Эти операции очистки или оптимизации могут выполняться с SQLite, но они, как правило, выполняются нечасто. Для пользователей это правильный баланс: ваш iPhone будет достаточно быстрым, а ваши данные - надежными. И, если возникнет такая необходимость, у вас будет больше, чем в среднем, шансов на восстановление удаленных данных iOS из-за нечастого характера этого процесса обслуживания.
Не вдаваясь в технические подробности, все довольно просто. Думайте об этих базах данных как о больших шкафах для хранения документов:
- Когда пришло время добавить к ним информацию, вы бы добавили файл с аккуратной меткой, объясняющей, что находится в файле, и именно так работает ваш телефон.
- Но когда вы удаляете данные, а не вынимаете файл из шкафа, телефон просто снимает этикетку. Таким образом, старые данные не удаляются, они просто остаются без метки (или «осиротевшими», как мы это называем технически). Это означает, что при удалении данных ваш телефон не должен проходить относительно медленный процесс освобождения пространство в шкафу. Он просто говорит «да, забудь об этом» и идет дальше.
- Когда дело доходит до добавления дополнительных данных, если есть место, ваш телефон будет добавлять дополнительные файлы. Если нет места для добавления дополнительных данных, он увидит, есть ли какие-либо из этих немеченых файлов, и, если таковые имеются, он будет отбрасывать любые их части, необходимые для освобождения места.
Что вы можете извлечь из этого, так это то, что быстро удалить данные на вашем телефоне и довольно быстро добавить их, при условии, что есть место. И - неинтуитивно - это процесс добавления новых данных, который действительно приводит к удалению более старой информации.
Восстановление удаленной информации из SQLite на iOS
Скажем, вы использовали свой телефон пару месяцев. Базы данных на нем похожи на шкафы для хранения документов, которые мы описали ранее. В них есть куча файлов, и там, где вы удалили данные, эти файлы все еще будут там, но с двумя оговорками: они могут быть частично или полностью перезаписаны, и они не будут помечены.
В таком случае метод восстановления в значительной степени соответствует вашим ожиданиям: он находит эти потерянные файлы - полные или нет - и пытается найти, где они подходят, и достаточно ли данных для них, чтобы иметь смысл. Как и следовало ожидать, все это немного сложно, и есть ряд других технических особенностей, которые могут усложнить задачу. В частности, базы данных размером более нескольких мегабайт и базы данных, содержащие двоичные данные, могут значительно усложнить процесс.
Тем не менее, вернуть данные немного не сложно, поэтому вы видите на рынке большое количество инструментов, претендующих на то, что они могут это сделать. В общем, вы можете разделить эти инструменты на три категории:
- Хорошо. Они используют множество различных методов, которые были созданы и протестированы на тысячах различных примеров удаления или повреждения.
- Плохо. Они только восстанавливают оставшееся содержимое, которое идеально сформировано и содержит ряд подсказок относительно того, где оно принадлежит.
- Мерзкий Они сканируют потерянный контент и отмечают любой старый мусор, который выглядит так, как будто он соответствует контексту. Если вы посмотрите на это, пока щуритесь. «NSMutableArray» - это может быть имя вашей пропавшей записи контакта? Хммм.
Восстановление SQLite и восстановление с iOS в реальном мире
Теперь, когда мы немного поговорили о том, как это работает, давайте рассмотрим, насколько это эффективно в реальном мире. В конце концов, мы хотим предоставить обычным пользователям возможность возвращать свои данные без необходимости быть экспертами. Нам это удается? Мы проведем сравнение четырех ведущих инструментов восстановления SQLite с iPhone Backup Extractor. На момент написания последней версии этих инструментов являются:
название | Версия и дата выпуска | платформы | Цена |
---|---|---|---|
Переинкубировать iPhone Резервный Экстрактор | 7.6.1.2201, май 18 | Windows и macOS | $ 34,95 |
SQLabs 'SQLite Doctor | 1.3.0, август '13 | Windows и macOS | $ 49 |
SysTools 'Sqlite Database Recovery | 1.2, дата выхода не указана | Только для Windows | $ 149 |
Stellar Data Recovery для Sqlite 1.0, дата выхода не указана | Только для Windows | $ 599 | |
Криминалистический Эксперт GetData (FEX) | 4.3.5.7364, май 18 г. | Только для Windows | $ 1695 |
Приобрести Sqlite Forensics Explorer | 2.0, дата выхода не указана | Только для Windows | $ 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 | Приобрести криминалистику | SQLabs | SysTools | Звездное Восстановление Данных | Получить данные | |
---|---|---|---|---|---|---|
Номер восстановлен | 342 | 56 (но в основном мусор) | 0 | 0 (После длительного сканирования было обнаружено 220 261, то есть столько же действительных записей, что уже есть!) | 0 (Каждый раз, когда мы его запускали, он считал до 37 удаленных сообщений, но вылетал с ошибкой 0x40000015 до завершения процесса. Невозможно было экспортировать или сохранить любое.) | 0 (Мы обращались несколько раз, чтобы купить лицензию, но так и не получили ответ.) |
«Хлам» восстановлен? | Никто; все кажутся действительными восстановленными сообщениями. Emojis, даты, время и номера отправителя / получателя все восстановлены. | Большинство из тех, кто выздоровел, являются мусором 😕 | Нам нужно было вручную ввести несколько значений ROWID несколько раз, чтобы попробовать разные параметры. Ни один не восстановлен в любой момент. | Только найденные ранее сообщения. | Сбой каждый раз, поэтому не мог сказать. | Не было возможности запустить его. |
Эффективная стоимость восстановленного сообщения (в этом примере) | $ 0,10 | $ 2,66 | > $ 49 | > $ 149 | > $ 599 | > $ 1695 |
ХОРОШО. Так что это было немного удивительно, так как мы ожидали, что они все хотя бы восстановят некоторые данные. Turns Оказывается, наш скромный инструмент лидирует на рынке восстановления данных SQLite, несмотря на то, что он не является специализированным инструментом восстановления данных SQLite. (Если вам интересно, именно поэтому мы также лицензируем наши технологии для других компаний. Это сложно.)
Восстановление данных SQLite на разных версиях iOS
С каждым новым выпуском iOS у Apple есть возможность изменить то, как операционная система обрабатывает базы данных SQLite. Это включает оптимизацию того, как часто выполняются операции очистки и технического обслуживания и когда они запускаются.
По мере того как устройства становятся более мощными, эти операции могут использоваться более свободно, поскольку их влияние на пользовательский опыт становится меньше. Поэтому, с каждым новым поколением, база данных SQLite, вероятно, будет очищаться чаще, что позволяет быстрее использовать базу данных для обычных операций. Это согласуется с целью Apple повысить защиту и конфиденциальность пользовательских данных, поскольку на устройстве не остается ненужных данных. Тем не менее, это делает невозможным восстановление данных с помощью метода SQLite.
В iOS 11 мы начали наблюдать увеличение активности очистки базы данных для SMS и iMessages. Восстановление все еще возможно, и более вероятно для более свежих сообщений, которые были впоследствии удалены, но не гарантированы.
В iOS 12 произошло значительное увеличение частоты очистки базы данных для базы данных SMS и iMessages. Поскольку в этом выпуске говорилось, что он уделяет большое внимание улучшению обслуживания и скорости, это изменение имеет смысл, поскольку, скорее всего, оно приведет к снижению производительности для более распространенных операций.
Что мне нужно сделать, чтобы воспользоваться этим при восстановлении данных iOS?
Возможно, это самое лучшее: эта технология интегрирована с Reincubate iPhone Backup Extractor и используется с первых дней. Когда вы используете приложение, оно будет применять эту технологию при предварительном просмотре или экспорте ваших сообщений и ряда других типов данных. В зависимости от данных, которые вы просматриваете, и того, как вы их просматриваете, приложение будет указывать, какие части данных были восстановлены, а какие - нет. Это все включено.
от jon
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.
ответить: Reincubate Support
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.