Это скорее развлекательная история для тех, кто так же, как и я, не является специалистом в телефонах и восстановлении данных.
Однажды сотрудник принёс телефон Fly Ezzy Trendy 3.
(по его версии телефон начал первый, но сотрудник оказался сильнее)
Осознание того, что телефонная книга осталась у побеждённого наступило не сразу. И через некоторое время сотрудник обратился в ближайший сервис с просьбой извлечь телефонную книгу.
На этом история могла бы и закончиться, но по какой-то причине в сервисе ему отказали под предлогом того, что у них нет специализированной программы для этого телефона.
Проверили, вроде включается. Во всяком случае, загорается подсветка клавиатуры.
Лезем в гугл и узнаём, что телефон работает на процессоре MediaTek MT6261D. Смотрим какие сервисные программы используются для работы с устройствами на базе таких процессоров. Выбираем MAUI META и заодно качаем пакет драйверов для устройств на базе процессоров MTK.
Ставим драйвера, запускаем MauiMETA, выбираем FAT Editor, подключаем телефон и видим файловую систему телефона.
Копируем на компьютер содержимое NVRAM\NVD_DATA и начинаем усиленно его изучать. Оказалось, что нам нужны всего два файла MP0C_003 (здесь хранятся имена) и MP0H_006 (здесь хранятся номера телефонов). Так же, там был файл с смсками MPA3_001, но они нам были не нужны.
Будем использовать Frhed. Определяем размеры записей в этих файлах.
(вот здесь хорошо видно, где заканчиваются данные и идут пустые записи)
Формат записи в файле с именами:
Формат записи в файле с телефонами:
Теперь было бы неплохо как-то автоматизировать процесс извлечения из файлов номеров телефонов и имён. Поскольку под рукой был вёб-сервер и я немного могу в php, набросал скрипт, закинул файлы на сервер. В результате получился файл с записями такого вида: имя контакта, номер телефона. Дальше импортировали в таблицу.
Довольный владелец телефона ушёл со списком своих контактов в закат.
P.S. Из спортивного интереса решил проверить действительно ли последние два байта каждой записи являются какой-то контрольной суммой и если да, то каков её алгоритм.
Читал про 16-битные контрольные суммы типа CRC16 и безуспешно подбирал ту, которая подошла бы мне. Запарился и решил использовать«помощь зала» «звонок другу», который предположил, что всё намного проще и там может использоваться простая сумма всех байт записи.
Оказалось немного сложнее: нечётные байты суммируются отдельно и результат сравнивается с первым байтом контрольной суммы, чётные отдельно — со вторым. Суммирование происходит без учёта переполнения.
Надеюсь, что кому-то эта заметка поможет, а кого-то просто позабавит.
Однажды сотрудник принёс телефон Fly Ezzy Trendy 3.
(по его версии телефон начал первый, но сотрудник оказался сильнее)
Осознание того, что телефонная книга осталась у побеждённого наступило не сразу. И через некоторое время сотрудник обратился в ближайший сервис с просьбой извлечь телефонную книгу.
На этом история могла бы и закончиться, но по какой-то причине в сервисе ему отказали под предлогом того, что у них нет специализированной программы для этого телефона.
Проверили, вроде включается. Во всяком случае, загорается подсветка клавиатуры.
Лезем в гугл и узнаём, что телефон работает на процессоре MediaTek MT6261D. Смотрим какие сервисные программы используются для работы с устройствами на базе таких процессоров. Выбираем MAUI META и заодно качаем пакет драйверов для устройств на базе процессоров MTK.
Тут я заинтересовался названием программы
И если META это Mobile Engineering Testing Architecture, как следует из найденой документации, то с MAUI не совсем понятно.
Нагуглил вот такие варианты:
Но это всё лирика.
Нагуглил вот такие варианты:
- Most Advanced User Interface
- Multimodal Affective User Interface
- Multimedia Application User Interface
Но это всё лирика.
Ставим драйвера, запускаем MauiMETA, выбираем FAT Editor, подключаем телефон и видим файловую систему телефона.
Копируем на компьютер содержимое NVRAM\NVD_DATA и начинаем усиленно его изучать. Оказалось, что нам нужны всего два файла MP0C_003 (здесь хранятся имена) и MP0H_006 (здесь хранятся номера телефонов). Так же, там был файл с смсками MPA3_001, но они нам были не нужны.
Будем использовать Frhed. Определяем размеры записей в этих файлах.
(вот здесь хорошо видно, где заканчиваются данные и идут пустые записи)
Формат записи в файле с именами:
- 44 байта на одну запись
- 2 последних байта под контрольную сумму
- сами записи в UTF-16LE
Формат записи в файле с телефонами:
- 38 байт на одну запись
- каждая запись начинается с 0x00 0x00 0x01 0x00
- 2 последних байта под контрольную сумму
- сами записи в ASCII
Теперь было бы неплохо как-то автоматизировать процесс извлечения из файлов номеров телефонов и имён. Поскольку под рукой был вёб-сервер и я немного могу в php, набросал скрипт, закинул файлы на сервер. В результате получился файл с записями такого вида: имя контакта, номер телефона. Дальше импортировали в таблицу.
Довольный владелец телефона ушёл со списком своих контактов в закат.
P.S. Из спортивного интереса решил проверить действительно ли последние два байта каждой записи являются какой-то контрольной суммой и если да, то каков её алгоритм.
Читал про 16-битные контрольные суммы типа CRC16 и безуспешно подбирал ту, которая подошла бы мне. Запарился и решил использовать
Оказалось немного сложнее: нечётные байты суммируются отдельно и результат сравнивается с первым байтом контрольной суммы, чётные отдельно — со вторым. Суммирование происходит без учёта переполнения.
Простенький скрипт
<?php
$fd1 = fopen("MP0C_003", "rb") or die();
$fd2 = fopen("MP0H_006", "rb") or die();
while(!feof($fd1))
{
// Name file
$str = fread($fd1, 44);
$data = substr($str, 0, -2);
echo iconv("utf-16le", "utf-8", $data).",";
// Number file
$str = fread($fd2, 38);
$data = substr($str, 0, -2);
echo $data."\n";
}
?>
Проверка контрольных сумм на примере файла с именами
<?php
$fd1 = fopen("MP0C_003", "rb") or die();
while(!feof($fd1))
{
$str = fread($fd1, 44);
$cs1 = 0;
$cs2 = 0;
for($i = 0; $i < 42; $i++)
{
if($i%2)
$cs1 = ($cs1 + ord($str[$i]))%256;
else
$cs2 = ($cs2 + ord($str[$i]))%256;
}
if($cs1 == ord($str[43]) && $cs2 == ord($str[42]))
echo "Checksum is OK\n";
else
echo "Checksum mismatch\n";
}
?>
Надеюсь, что кому-то эта заметка поможет, а кого-то просто позабавит.
Комментарии (31)
instalator
14.08.2017 01:01+1А можно было найти такой же второй с дисплеем и пройтись по меню сохранив контакты на сим карту.
K0styan
14.08.2017 11:14Можно и по мануалу попробовать восстановить последовательность шагов для копирования. Мануал в онлайне наверняка есть.
DEM_dwg
14.08.2017 01:01Хммм, обычно у таких динозавров, были программы по синхронизации данных с ПК.
Я раньше постоянно синхронизировал, свой тел с компом.
Теперь всё проще, все контакты синхронизируются с гуглом…
Igor3404391
14.08.2017 01:01У нормальных сервисных центров уже есть готовые программные решения для извлечения пользовательских данных из телефонов
easty
Одно не понял, зачем вебсервер? А так давольно интересно, что такими динозаврами еще пользуются, что аж так важны контакты на нём) Хотя еще встречаются персонажи с контактами на симке, так что…
VioletGiraffe
Эм? У меня контакты на симке, а что не так?)
easty
Ну у симкарты есть ресурс, и они достаточно часто дохнут.
Я ничего против не имею, но 2017 год на дворе, надо как то двигаться дальше)
VioletGiraffe
Впервые слышу. Первой симкой пользовался с 2006 по 2016-й; пришлось поменять, когда купил смартфон под micro SIM.
easty
Хорошо, что не слышали. Работая в сотовой связи таких случаев предостаточно повстречалось. Приходило куча знакомых с просьбой востановить контакты с симки. Но это было в конце нулевых… за последний год только один обратился))
Ну не буду с Вами спорить, каждому свое. Я например не представляю работу без фар манагера)
VioletGiraffe
Я тоже ни в коем случае с вами не спорю, просто удивляюсь :)
(а у меня вообще файловый менеджер собственной разработки)
vorphalack
я вам даже завидую, пожалуй. у вас видимо небыло необходимости в контактах типа Константин Щекочихин-Крестовоздвиженский с пятеркой номеров, двумя почтами и заметкой.
Alexufo
надо было обрезать)
VioletGiraffe
Не хотел связываться с этой рискованной процедурой. Но если бы я знал, что мою раритетную симку отберут… :)
Alexufo
да там не разберешься, то на старых симках 4g не работает( это ясно), но чтобы 3g…
dmitryredkin
Один мой не слишком Айтишный приятель обрезал как раз симку со всеми контактами :) Не сам разумеется, в салоне связи. Симка оказалась 90х годов, с большим чипом. Некоторые номера восстанавливал по детализации звонков :)
iig
"Специалисты" в салонах те еще… Как-то понадобилась эта операция… Зашел в пафосный салон с белой техникой, они не глядя оценили услугу в $2. В салоне от оператора связи просто поменяли старую карту на новую.
volanddd
Штуки 4 симки сдохли.
Время жизни было порядка 5 лет 10 лет назад, сейчас больше, так как и ресурс вырос у самих симок и меньше операций записи на них (смс пишутся на телефон, контакты тоже).
BoogieMan75
У меня симка прожила с 2003 по 2017. При переходе с корпоратива на личный почему то сменили.
lv333
Никогда еще не видел «убитой» сим карты, а вот убитые телефоны и microSD карты — видел…
burst
Сим карты умирают. У нас более 50 сим карт, в год 1-2 умрут… Правда телефонная книга обычно всегда остается доступной.
aelaa
К счастью убитого Google Contacts пока ещё не видел никто)
9660
К слову.
У меня сдохло за 20 лет разными способами около двух десятков телефонов. И только одна симка, которая не позволяла звонить но телефонная книга тем не менее читалась.
x67
Согласен. И желательно не доверять сохранение важных данных лишь одному сервису. Только недавно гугл потерял все мои пароли. Это не страшно в силу специфики данных (потеря не так страшна, как разглашение, восстановление паролей — вполне детерминированная и достаточно простая процедура). Однако тоже самое могло произойти и с контактами и с файлами на гугл диске и вообще с любым другим облачным сервисом.
herr_kaizer
Моей симкарте уже 12 лет. Пережила порезку ножницами для вставления во смартфон.
mSnus
Блаженны те, кто никогда не терял телефон…
Onegai
Зачем веб-сервер? Ну написано же, что он уже был, так что использовали то, что есть
A_Anper
автор умеет только php и не умеет запускать его в консоли, я на первом курсе универа тоже так делал.
Рекомендую выучить Python, для таких задач он очень хорошо подходит.
klikalka
У меня контакты на симках. Двух. Если аппарат позволяет, то стараюсь и на телефоне копии делать.
Сейчас основным аппаратом хороший двухчимочный «фонарик» с большой батарейкой и физической клавиатурой. Без синхронизации контактов (но переносить контакты на ПК, в принципе, можно). Смартфон, в основном, для интернета и мессенджеров. Но большая часть контактов есть и на нём, на всякий случай…
Большинство важных номеров помню наизусть.
Телефоны у меня выходят из строя чаще чем симки, некоторым из которых уже по 7 и больше лет (вообще, только одна симка умерла смертью храбрых, продержавшись много лет). Разве что староростелекомовскую пришлось поменять, дабы 4G работал.
Но я все равно всем рекомендую хранить важные контакты и смски где-нибудь в отдельном файлике или приложении. В запароленном виде, если данные конфиденциальные.