Как стать автором
Поиск
Написать публикацию
Обновить

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 из резервной копии)
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.