• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фазинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

Статья Osmocom-bb: flashing. Перепрошиваем моторолу.

Dr.Lafa

Mod. Hardware
Gold Team
30.12.2016
440
833
#1
Приветствую, коллеги. Те, кто хоть раз игрался с osmocom-телефонами, знают, что стандартно прошивка загружается в RAM и пропадает после перезагрузки/выключения. Прошивка в основную память или "Flashing" позволяет использовать программу и после перезагрузки/выключения, что очень удобно для работы с программами, не использующими компьютер (наример RSSI или EMI). Мало того, можно прошить сразу несколько программ и переключаться между ними без последующих действий на компьютере.

Если же вы не понимаете, о чём идёт речь, то советую прочитать прошлую часть.

IMG_20180617_015724.jpg

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

Все действия будут проводиться на motorola c118. Для телефонов на базе calypso e88 (MotorolaC123/C121/C118) и calypso e87 (MotorolaC115/C117) всё делается одинаково.
Телефон прошивается в три этапа:
  • загрузчик (Compal loader)
  • OSMOCOM menu (загружает приложения из flash в ram)
  • приложение
Без загрузчика телефон превратится в кирпич.

Подготовка

Скачаем osmocom-menu с официального git-репозитория:
Код:
git clone git://git.osmocom.org/osmocom-bb -b jolly/menu osmocombb-menu
cd osmocombb-menu
идём в файл src/target/firmware/Makefile и раскомментируем две строки:
Код:
CFLAGS += -DCONFIG_FLASH_WRITE
CFLAGS += -DCONFIG_FLASH_WRITE_LOADER
компилируем командой make

Установка
Перед прошивкой проверьте надёжность вашего кабеля и зарядите телефон.
Выключаем телефон, подключаемся к компьютеру через usb-ttl
Код:
cd src
host/osmocon/osmocon -p /dev/ttyUSB0 -m c123xor target/firmware/board/compal_e88/loader.compalram.bin
Коротко жмём на кнопку включения, начнётся загрузка Compal loader-а в RAM телефона.
Код:
Received PROMPT1 from phone, responding with CMD
read_file(target/firmware/board/compal_e88/loader.compalram.bin): file_size=28044, hdr_len=4, dnload_len=28051
Received PROMPT2 from phone, starting download
handle_write(): 4096 bytes (4096/28051)
handle_write(): 4096 bytes (8192/28051)
handle_write(): 4096 bytes (12288/28051)
handle_write(): 4096 bytes (16384/28051)
handle_write(): 4096 bytes (20480/28051)
handle_write(): 4096 bytes (24576/28051)
handle_write(): 3475 bytes (28051/28051)
handle_write(): finished
Received DOWNLOAD ACK from phone, your code is running now!
Received DOWNLOAD ACK from phone, your code is running now!
battery_compal_e88_init: starting up

OsmocomBB Loader (revision osmocon_v0.0.0-1748-g46188c72)
======================================================================
Running on compal_e88 in environment compalram
IMG_20180617_143155.jpg

Прошиваем загрузчик + osmocom-menu
Память на телефоне разбита на "страницы" по 64 килобайта примерно так:
  • 0x000000-0x00ffff: Flash page 0
  • 0x010000-0x01ffff: Flash page 1
  • 0x020000-0x02ffff: Flash page 2
  • ... more Flash pages ...
  • 0x800000-0x83ffff: Ram
Compal loader займёт первые 8191байт, OSMOCOM menu оставшиеся 57343 байт нулевой страницы далее от 0x010000 (начало первой страницы) идут приложения
  • 0x000000-0x001fff: Compal loader
  • 0x002000-0x00ffff: OSMOCOM menu
  • 0x010000-........: OSMOCOM application and storage
OSMOCOM menu не может быть прошит без затирания оригинального загрузчика Compal loader, потому что оба расположены на одной и той же странице флэш-памяти. Первая вещь, которую нужно сделать, это сохранить оригинальный загрузчик.
Код:
cd src
host/osmocon/osmoload memdump 0x000000 0x2000 compal_loader.bin
Что бы проверить, что прошивка флеш-памяти проходит нормально, мы загрузим Compal и OSMOCOM Menu в неправильную локацию памяти. Если прошивка не удастся из-за какой-либо ошибки, то на телефоне всё ещё останется оригинальный Compal loader, и motorola не превратится в кирпич.

Затираем страницу 0x010000 и прошиваем только что сохранённый compal_loader.bin и OSMOCOM menu:
Код:
host/osmocon/osmoload funlock 0x010000 0x10000
host/osmocon/osmoload ferase 0x010000 0x10000
host/osmocon/osmoload fprogram 0 0x010000 compal_loader.bin
host/osmocon/osmoload fprogram 0 0x012000 target/firmware/board/compal_e88/menu.e88loader.bin
Если в выводе нету ошибок, то можно приступать к прошивке загрузчика на нужное место 0x000000
Код:
host/osmocon/osmoload funlock 0x000000 0x10000    # разблокировка первой страницы
host/osmocon/osmoload ferase 0x000000 0x10000    # очистка
host/osmocon/osmoload fprogram 0 0x000000 compal_loader.bin    # прошивка загрузчика на место 0x000000
host/osmocon/osmoload fprogram 0 0x002000 target/firmware/board/compal_e88/menu.e88loader.bin # прошивка меню
меню прошивется на ту же страницу флеш-памяти, что и загрузчик, но с отступом в 8192 байт (0x002000) вперёд.

Подготавливаем приложение

OSMOCOM menu ищет приложения по заголовкам, который делается так:
echo "highram:RSSI" >temp
В этом случае я сделал заголовок для RSSI, теперь надо добавить к нему само приложение
cat target/firmware/board/compal_e88/rssi.highram.bin >>temp
Прошивка приложения возможна только в том случае, если количество байт в файле temp чётное. Если это не так, то нужо добавить ещё один байт в конец.

1529235736794.png

Теперь приложение готово для прошивки во флеш-память.
Прошиваем приложение

Нужно определить, сколько места требуется приложению. В случае с RSSI оно занимает пространство между 64 и 128 килобайт, следовательно ему нужно 2 страницы флеш-памяти для прошивки.
Код:
host/osmocon/osmoload funlock 0x010000 0x20000    # Разблокируем первую и вторую страницы
host/osmocon/osmoload ferase 0x010000 0x20000    # Очищаем
host/osmocon/osmoload fprogram 0 0x010000 temp    # Прошиваем в начало первой страницы (0x010000)
Приложение прошилось на первую и вторую страницу. В случае прошивки второго приложения, ему нужно будет выделять место на третей странице или выше, что бы оно не задело предыдущее.

Для примера: для приложения EMI так же нужно 2 страницы флеш-памяти:
Код:
host/osmocon/osmoload funlock 0x030000 0x40000    # Разблокируем первую и вторую страницы
host/osmocon/osmoload ferase 0x030000 0x40000    # Очищаем
host/osmocon/osmoload fprogram 0 0x030000 temp    # Прошиваем в начало первой страницы (0x010000)
Тестируем

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

На этом всё. Желаю удачи и не окирпичить телефон.
 

swap3r

Премиум
06.11.2016
61
48
#2
Dr.Lafa, спасибо за статью.
Вопрос, а что это дает кроме чисто академического интереса? Если использование моторолы совместно с осмокомом и опеннбтсом я хоть как-то понимаю (снифф, своя бс, стресс тестинг), то суть действий в этом топике мне непонятны. Спасибо.
 

Dr.Lafa

Mod. Hardware
Gold Team
30.12.2016
440
833
#3
Dr.Lafa, спасибо за статью.
Вопрос, а что это дает кроме чисто академического интереса? Если использование моторолы совместно с осмокомом и опеннбтсом я хоть как-то понимаю (снифф, своя бс, стресс тестинг), то суть действий в этом топике мне непонятны. Спасибо.
Есть пара приложений (RSSI, EMI, и, кажется, были ещё), которые используются без компьютера. Прошивка даёт возможность загрузить их все и переключаться между ними без компьютера.
 

swap3r

Премиум
06.11.2016
61
48
#4
Есть пара приложений (RSSI, EMI, и, кажется, были ещё), которые используются без компьютера. Прошивка даёт возможность загрузить их все и переключаться между ними без компьютера.
спасибо, теперь вспомнил и частично понял, что оно такое. К сожалению, как по мне, это больше, как академическая фича, но все равно интересно.
Спасибо за популяризацию темы осмокома в рунете.
 
Вверх Снизу