четверг, 15 декабря 2005 г.

Продолжаю добывать прошивку своего сименса

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

Слегка продвинуться на пути получения прошивки удалось найдя утилиту для выковыривания xbz файла из файлов вида CX65250300.xbz_update.exe. Заметьте, найдя - а не написав, я очень законопослушный гражданин (это могут подтвердить все, кто меня хорошо знает) и если в лицензионном соглашении исполняемого файла с зашифрованной прошивкой написано, что программу нельзя дизассемблировать и модифицировать - то я этого конечно же не буду делать! *невин *миг :)

Итак с помощью этой утилиты, исходный код которой я разместил, на сайте, чтобы другим не пришлось искать как мне (полтора дня убил на поиск в самых закромах), мне удалось вытащить и разшифровать xbz файл.

С другой стороны, ми опять не добрался до прошвки. Дело в том, что xbz это сжатая версия xbi.. и как его развернуть ми еще не думал. Будем искать на досуге.

Дизассемблировать код сименовской программы нельзя, поэтому ограничусь изучением кода найденной утилиты :). Судя по-всему *xbz_update.exe файлы состоят из четырех частей:
1. Собтсвенно сама программа обновления телефона прошивкой приложенной к файлу.
2. Информация для расшифровки файла и контроля целостности. Это версия формата, таймстамп используемый как одна из составляющих IV и 128 байт сигнатуры с которой скорее всего для контроля целостности необходимо сверить хэш разшифрованного файла.
3. Зашифрованный с помощью Rijndael-128 (AES) файл с прошивкой в формате xbz.
4. Блок данных в конце exe файла в котором указано с какого смещения в exe файле начинается зашифрованная часть. Это блок данных тоже хитрым способом организован, что должно прятать смещение от посторонних глаз.
128 битный ключ, судя по коментарию в исходнике утилиты (кусок асеблерного кода) :), был выдран прям из exe файла, как и 128 битный IV (но первые его 4 байта это timestamp). Полагаю, что вполне вероятна ситуация в которой ключ не подойдет и надо будет его искать заново... (а приведенный кусок асм кода должен в этом помочь) кто их этих сименцев знает.. может у них на каждый апдейт свой ключ...
Более подробно можно узнать посмотрев исходник утилиты, или дизассемблировать программу обновления прошивки (только это запрещено лицензионным соглашением).

К слову о... Вообще, из собственного опыта изучения программ, чье лицензионное соглашение не запрещает этого делать могу сказать, что начинать надо с сообщений (например об ошибках)!
Загружаем файл в какой-нибудь интерактивный дизассемблер (под unix и win32 есть бесплатный и замечательный hte), находим интересное сообщение, такое, которое вполне вероятно используется в том коде, который мы хотим найти (например password check failure) и просим интерактивный дизассеблер дать нам все места с которых есть ссылки на это сообщения... Ну, а дальше дело техники, знания ассеблера и того языка на котором написана подобытная программа.

На самом деле, получить прошивку можно еще и:
1. Скачав ее из интернета. Самый простой вариант. Но если ты на GPRS (как я сейчас временно) - то он не подходит, прошивка не маленькая.
2. Вытащить из телефона. Для этого нужен шнурок. Я за 3000км от своего шнурка, а брать новый (400р) жаба душит.
3. Попробовать вытащить прошивку через irda с телефона. Помучив телефон по протоколу BFC через IRDA и увидев как на все мои корректные запросы телефон реагирует только эхом.. а на некорректные не реагирует вообще я понял, что занятие бесполезное или у меня лапы кривые. Хотя выключение телефона BFC командой работает... забавно ).
4. Загрузить программу обновления в vmware, сделать виртуальный порт который будет обслуживать программа имитатор моблиьного телефона. Программу я эту написал, но далеко дело не пошло, я не знаю как должен реагировать телефон на те или иные команды и поэтому дописать эмулятор телефона не смог.
5. Загрузить программу обновления прошивки в vmware и сделать suspend. Открыть файл памяти виртуально машины и выдрать оттуда прошивку. Самый просто вариант, но нужно знать какой последовательностью начинается прошивка (теперь я знаю, что она начинается Siemens Mobile Phones:SIGNATURE...) и какую длинну она имеет.

Комментариев нет:

Отправить комментарий