Pull to refresh

iPhone — восстановление удаленных контактов, заметок и sms в отсутствии резервной копии

[Свеже]удаленные из iPhone контакты, заметки и sms можно восстановить, даже если нет их резервной копии.

Это возможно благодаря тому, что все они хранятся в iPhone в файлах БД SQLite, которая при удалении данных не затирает их, а только помечает использованные для хранения записей страницы БД как свободные. Если пользователь удалил контакт/заметку/sms и больше не создавал контактов/заметок/не отправлял или не получал sms — вероятность успешного восстановления удаленного очень высока. К примеру, я собственноручно восстановил удаленные ошибочной синхронизацией ~700 контактов и около 20 заметок. Джейлбрейк не требуется.

Прочитать/восстановить заметку или sms не сложнее пересылки двух байтов, восстановление контактов намного сложнее.

Технические подробности

Места хранения данных в iPhone относительно /var/mobile/ (или /var/root/ — в зависимости от версии прошивки):

Контакты — Library/AddressBook/AddressBook.sqlitedb
Заметки — Library/Notes/notes.db
sms — Library/SMS/sms.db

Делаем резервную копию средствами iTunes. После этого на компьютере под управлением Windows получаем папку %APPDATA%\Apple Computer\MobileSync\Backup\[UID резервной копии из 40 символов]\. В этой папке:

31bb7ba8914766d4ba40d6dfb6113c8b614be442.mddata = AddressBook.sqlitedb
740b7eaf93d6ea5d305e88bb349c8e9643f48c3b.mddata = notes.db
3d0d7e5fb2ce288813306e4d4636395e047a3d28.mddata = sms.db

Если хотим получить общее представление о том, как организованно хранение — смотрим эти файлы с помощью SQLite Expert. Разумеется, удаленных данных там не увидим. Зато увидим, что, например, в sms.db номера телефонов лежат в одной таблице с телом. Что существенно упрощает жизнь. А в AddressBook имена и номера телефонов — в разных таблицах. Что усложняет, и очень сильно.

Чтобы попытаться увидеть удаленные данные — просто открываем нужный файл по F3 в FAR, Shift+F8 — UTF-8. Или в любом вьюере по вкусу с поддержкой UTF.

Смотрим. Понимаем, что скопировать в буфер обмена прямо из окна FAR (Alt+Space, Изменить — Пометить… Enter) заметку или смс — совсем не то же самое, что вычислить «помеченные незанятыми» страницы БД AddressBook, восстановить связи между таблицами ABPerson и ABMultivalue, достать связанные данные… Я предупреждал.

Выводы:
  • Удаленные из iPhone контакты, заметки и sms могут быть доступны для восстановления неопределенное время. До тех пор, пока они не будут перезаписаны новыми данными.
  • Удаление одной записи, а затем создание нескольких новых не гарантирует недоступность удаленной записи — нет гарантии, что SQLite выберет для новых записей место, освободившееся от удаленной.
  • Для гарантированного удаления записей можно применять команду VACUUM (удалить на iPhone «чувствительные данные»; сделать резервную копию; SQLite Expert — открыть базу в бэкапе — закладка Database — кнопка VACUUM справа внизу; повторить для каждой очищаемой базы; восстановить iPhone из резервной копии)
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.