Ситуация — нарочно не придумаешь.
У блондинки 2 телефона на одной учётке в iСloud. Локальных копий скорее всего нет. За свежесть копий в облаках не ручаюсь. Блондинка решает подарить один из телефонов подруге. Что двигало в её светлой голове — не знаю, но она по одному стёрла более 200 контактов. Вручную. И получила девственно чистую телефонную книжку на втором аппарате. Слёзы, истерика, звонок — выручай.
Первым делом изолируем аппарат от внешнего мира. Вынимаем SIM-карту, отключаем WiFi и прочие коммуникации.
Решение настолько простое и очевидное, что мне даже стало немного обидно за ребят из Купертино. Возможно мне повезло, что телефон был не запаролен.
Я исходил из того, что по данным Google Apple хранит свою книгу контактов в SQLite.
1) Штатными средствами iTunes делаем бэкап телефона.
2) Из каталога %UserDir%AppDataRoamingApple ComputerMobileSyncBackup[многострашныхбуквицифр] копируем ВСЕ файлы в отдельную папочку. Желательно сделать 2 копии, на всякий случай.
3) Far-ом ищем в скопированной папке все файлы в кодировке UTF-8, содержащие строку SQLite
4) Отсеиваем найденные файлы в отдельную папочку
5) Начинаем их просматривать.
6) Натыкаемся на файл содержащий нечто типа
переименовываем его в нечто, более понятное.
7) Эпилогом открываем этот файл.
8) Копируем записи в любой текстовый редактор, чистим дубли, сохраняем, отдаём заказчику.
Profit!
Как оказалось, Контакты не удаляют физически данные из базы, а просто маркируют запись в БД как удалённую.
PS: Если установлен WhatsApp всё еще проще. Этот просто копирует все контакты в свою базу, независимую от базы Контактов, которая так же лежит в бэкапах. Опознать её можно по характерным названиям полей и, конечно же, номерам телефонов лежащим в ОТКРЫТОМ виде.
Открываем её в SQLexpert, в окно запроса вводим SELECT * FROM ZWACONTACT as a LEFT OUTER JOIN ZWAPHONE as b on b.[ZCONTACT]=a.[Z_PK]
И вуаля.
Возможно кому-то это поможет. Успехов в наступающем!
Автор: LumberJack