Пару недель назад пришлось нам восстанавливать список контактов из мобильного телефона Samsung Galaxy S4 . Занятие, в целом, довольно рутинное, если все идет нормально: удается правильно промаппить устройство, сделать хороший клон, найти в нем нужный файл и конвертировать его в нужный формат.
К сожалению, в описываемом случае все было сложнее. Во-первых, телефон уже был отремонтирован «ЦУМовскими» умельцами. А именно, был заменён родной NAND чип(жёсткий диск, как его любят называть) на новый — всё чинно, благородно. Я даже немного удивился, когда увидел, что IMEI на обратной стороне телефона соответствует IMEI по *#06#. Телефон работает, но он абсолютно чист, как младенец. И собственно говоря, поэтому к нам и пришёл его владелец, с аккуратно отпаянным чипом в целлофановом пакетике. Соответственно, маппить было нечего, и склонировать тоже. Предстояла распайка чипа на специальное устройство для чтения, заказчик был предупреждён, что нам неизвестно его ли это чип на самом деле, и может возникнуть момент, когда данные считаны, но оказывается, что данные не принадлежат заказчику, то есть перепутали или просто отдали чужой NAND чтобы отвязаться. А проделанную работу придётся оплатить. Заказчик долго размышлял, нужен ли ему список контактов по цене нового телефона, но в итоге решился.
Дело в том, что в случае с такими телефонами единственная надежда – прочитать данные напрямую с памяти и расшифровать полученный дамп. Естественно, сама процедура имеет несколько этапов: выпаивание микросхемы(за нас это уже сделали наши друзья); подготовка микросхемы к чтению (обычно заключается в полировке контактов и выравнивании их высоты); собственно чтение; дочитывание областей с битовыми ошибками; исправление битовых ошибок, которые не удалось дочитать (механизмы ЕСС); расшифровка дампа и реконструкция оригинальной файловой системы; извлечение данных. Выглядит сложно, не так ли?
В нашем же случае оказалось еще сложнее. На стадии вычитывания чипа оказалось, что он сильно пострадал и поменяли его не зря. «Отдался» чип — один единственный раз и как оказалось не без ошибок, потому что после монтирования образа выяснилось, что часть данных не работает, и как назло именно злополучный файл контактов. Однако, была и хорошая новость: чип памяти — принадлежал именно нашему заказчику, так как были найдены его фотографии, но фото нашего заказчика не интересовали, ему нужны только контакты. Было принято решение перечитать микросхему, но дальше-больше,и чип памяти начал постоянно «отваливаться» через 10-20 секунд после подачи питания. Что только не пробовали — повышали, понижали напряжения, подпаивали разные подтяжки в виде резисторов, паяли конденсаторы — но всё одно чип больше не хотел читаться.
В телефонах на базе Android контакты хранятся в виде файла базы данных, очень похожего по структуре на базы данных MySQL в файле contacts.db2 ,обычно конвертировать его в понятный любому приложению формат VCF (виртуальная визитная карта) при помощи бесплатного он-лайн конвертера www.gsmrecovery.ru не составляет труда. Но в нашем случае конвертер выдавал нам только часть контактов на букву А, и затыкался. Нужно было что-то решать! В сети есть целая куча сопособов решения проблемы — используя Plugin SQL для браузера FireFox, есть способ с использованием специального скрипта под Linux, однако, все эти способы не давали результата. «По-лёгкому» кейс сделать не получилось и заказчик был предупреждён, что нужно разбираться, и скорее всего писать программку для «ремонта» битого файла контактов. Разница между двумя форматами значительная: файл базы данных может занимать мегабайты, тогда как виртуальная визитная карта – килобайты. Соответственно, масса данных в файлах базы данных контактов для использования не нужна. Мы решили, что раз она не нужна – то надо ее убрать, и посмотреть, что останется. Таким образом, была поставлена задача: написать программу, которая конвертирует контакты из базы данных в визитную карточку, убрав все «лишнее». Анализ обоих форматов (все гениальное просто – создали в телефоне контакты, скопировали базу данных и средствами телефона сохранили те же контакты в виде визитной карты) показал, что первоначальный файл придется «парсить». Что и было сделано.
Компактный парсер распаковывает базу данных, производит поиск всех таблиц, сравнивает их и вычленяет номера телефонов и присвоенные им имена. Отладка программы заняла два часа – по истечении их нам удалось конвертировать «больной» файл базы данных в формат виртуальной визитки. Как ни странно, но список контактов оказался довольно внушительным: больше 500 штук. Клиент был очень доволен – с его слов, контакты почти все, «может, штук пять не хватает».
P.S. Отдельное спасибо Кирсанову Антону за помощь в написании программы для восстановлении данных с данного девайса.
Видео об аналогичном случае будет на нашем канале в YouTube! Если у вас есть вопросы, или нужна помощь пишите на info@911.kg, постараюсь помочь!