Как стать автором
Обновить

Сказ о том, как восстановить удаленные контакты из Iphone. Моя версия квеста

Началось с того, что коллега на работе сказал, что не может разобраться с SQL файлом. Я, будучи в этом более-менее разбирающимся, предложил помощь.

Выяснилось, что он перед продажей на mac book удалил все контакты, что сказалось через icloud и на iphon'е.
Первый достойный вариант, попавшийся ему на просторах интернета был соседский по ветке.
Пройдя тот самый квест до пункта 6 (Натыкаемся на файл содержащий нечто типа) он столкнулся с проблемами.

Первое и основное, у него отсеилось более ста файлов и каждый из них смотреть — как-то накладно. Я скопировал эти файлы себе и принялся за изучение этой же статьи.

Скажу сразу, что вариант с SQLexpert и прочими читалками sql не прокатывал. Почему — толком не знаю. То ли виной 64х битная ОС, то ли кривые руки, но ни на одной машине и программе прочитать этот файл корректно не получалось.

Пришлось искать другие пути. Зацепился я за то, что было написано в статье чуть ниже, а именно:

Открываем её в SQLexpert, в окно запроса вводим SELECT * FROM ZWACONTACT as a LEFT OUTER JOIN ZWAPHONE as b on b.[ZCONTACT]=a.[Z_PK]


Глядя на это, ясно, что файл должен содержать имя таблицы «ZWACONTACT», что я, собственно, и стал искать по всем файлам средствами midnight commander'a.
Тут же был найден файл весом 204Кб. Открыв его, я нашел искомую строку…

image

… а так же, все телефоны…

image

… и стало ясно, что это он.

Далее, необходимо было его прочитать как базу данных. В начале самого файла было написано «SQLite format 3». Формат очевиден. На помощь пришла программка Sqliteman.
Файл
171b11a9861861624f4681d61751ca7d6c7a2bf7

был переименован в
1.sqlite3

для читабельности программой. Открылся он на ура! Очень порадовало, что все контакты на месте и прекрасно сохранили свои параметры и доп. поля.
Введя в ней указанный выше SQL запрос, ней все было достаточно ясно:

image

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

Для корректного формата, выгруженного из телефона…

image

… пишем следующий запрос в sql lite:

SELECT a.ZFIRSTNAME, a.ZFULLNAME, 'mobile', b.ZPHONE, b.ZLABEL FROM ZWACONTACT as a LEFT OUTER JOIN ZWAPHONE as b on b.[ZCONTACT]=a.[Z_PK]


… и получаем данные в виде:

image

Потом совмещаем новые данные с выгруженными в один файл и льем обратно в мобильник с пунктом «marge», тем самым говоря, что одинаковые имена с разными телефонами надо совмещать, т.е. несколько контактов у одного человека. Осталось только порадоваться, попивая кофе.

Но, как говорится, без ложки дёгтя никуда:

все контакты были сохранены в исходном файле в виде
«Имя», «полное имя»(содержащее в одной строке полностью ФИО), прочие данные.

А в экспортированном из телефона новые контакты были вида
«Имя», «Фамилия», прочие данные.

По сему пришлось сохранять данные в таком виде:
«Имя», №полное имя (ФИО)", прочие данные.

Далее на телефоне уже можно ручками все подправить.

На этом, все. Всем удачных окончаний квестов!
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.