Сказ о том, как восстановить удаленные контакты из Iphone. Моя версия квеста
Ожидает приглашения
Началось с того, что коллега на работе сказал, что не может разобраться с SQL файлом. Я, будучи в этом более-менее разбирающимся, предложил помощь.
Выяснилось, что он перед продажей на mac book удалил все контакты, что сказалось через icloud и на iphon'е.
Первый достойный вариант, попавшийся ему на просторах интернета был соседский по ветке.
Пройдя тот самый квест до пункта 6 (Натыкаемся на файл содержащий нечто типа) он столкнулся с проблемами.
Первое и основное, у него отсеилось более ста файлов и каждый из них смотреть — как-то накладно. Я скопировал эти файлы себе и принялся за изучение этой же статьи.
Скажу сразу, что вариант с SQLexpert и прочими читалками sql не прокатывал. Почему — толком не знаю. То ли виной 64х битная ОС, то ли кривые руки, но ни на одной машине и программе прочитать этот файл корректно не получалось.
Пришлось искать другие пути. Зацепился я за то, что было написано в статье чуть ниже, а именно:
Глядя на это, ясно, что файл должен содержать имя таблицы «ZWACONTACT», что я, собственно, и стал искать по всем файлам средствами midnight commander'a.
Тут же был найден файл весом 204Кб. Открыв его, я нашел искомую строку…

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

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

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

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

Потом совмещаем новые данные с выгруженными в один файл и льем обратно в мобильник с пунктом «marge», тем самым говоря, что одинаковые имена с разными телефонами надо совмещать, т.е. несколько контактов у одного человека. Осталось только порадоваться, попивая кофе.
Но, как говорится, без ложки дёгтя никуда:
все контакты были сохранены в исходном файле в виде
А в экспортированном из телефона новые контакты были вида
По сему пришлось сохранять данные в таком виде:
Далее на телефоне уже можно ручками все подправить.
На этом, все. Всем удачных окончаний квестов!
Выяснилось, что он перед продажей на 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Кб. Открыв его, я нашел искомую строку…

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

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

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

… пишем следующий запрос в 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]
… и получаем данные в виде:

Потом совмещаем новые данные с выгруженными в один файл и льем обратно в мобильник с пунктом «marge», тем самым говоря, что одинаковые имена с разными телефонами надо совмещать, т.е. несколько контактов у одного человека. Осталось только порадоваться, попивая кофе.
Но, как говорится, без ложки дёгтя никуда:
все контакты были сохранены в исходном файле в виде
«Имя», «полное имя»(содержащее в одной строке полностью ФИО), прочие данные.
А в экспортированном из телефона новые контакты были вида
«Имя», «Фамилия», прочие данные.
По сему пришлось сохранять данные в таком виде:
«Имя», №полное имя (ФИО)", прочие данные.
Далее на телефоне уже можно ручками все подправить.
На этом, все. Всем удачных окончаний квестов!