Pull to refresh

Знакомство с OsmocomBB: 0x02 Hardware

Reading time 5 min
Views 56K
Привет %username%! Для работы с OsmocomBB необходимо определенное оборудование, на базе которого работает программная часть, а именно: приемо-передающее устройство, Ваш компьютер, выступающий в роли сервера, и кабель, соединяющий их между собой. В роли приемо-передающего устройства (transreceiver) чаще всего выступает обычный сотовый телефон, на котором запущена кастомная прошивка. Для соединения телефона с компьютером может потребоваться преобразователь TTL-USB. Следую инструкциям, опубликованным на сайте проекта, точнее, собирая информацию по кусочкам, можно собрать рабочий аппаратный комплекс, однако на данном этапе начинающему исследователю GSM сетей может встретиться множество подводных камней. Давайте разберемся со всем по порядку.

Навигация



Transreceiver




Все началось в 2010 году, когда разработчики Osmocom закончили основную часть OpenBSC. Возникла необходимость в реализации клиентской части протокола GSM. Тогда было два пути развития: либо реализовать приемопередающее устройство на базе нового оборудования, либо воспользоваться уже готовым решением. В качестве аппаратной платформы были выбраны телефоны Motorola на базе чипсета Calypso: C123, C118, C121. Почему именно Calypso? Дело в том, что спецификации данного чипсета в свое время благополучно утекли в Интернет и доступны по сей день.

Начался процесс дизассемблирования прошивок, и в этом же году в репозитории проекта появился первый коммит. Позже проект был портирован на телефоны с этим же чипсетом, такие как Sony Ericsson J100i, Pirelli DP-L10, Neo 1973, Neo Freerunner и еще некоторые телефоны Motorola серии C и V. Подробнее о поддерживаемых платформах можно прочитать на странице проекта Hardware/Phones.



Передача данных от сотового телефона (ms) к базовой станции (BTS) осуществляется в несколько этапов. Сначала событие передачи генерируется центральным процессором и передается на процессор обработки сигналов (DSP), который захватывает сигнал напрямую с микрофона и передает на аппаратный модулятор. После модуляции сигнал преобразуется из цифрового в аналоговый, усиливается и через switch поступает на антенну, с помощью которой и передается в эфир. Процесс приема сигнала обратный, только в данном случае сигнал проходит фильтрацию, а демодуляция выполняется программно на DSP.

Возникает вопрос: можно ли запустить OsmocomBB на современных телефонах?

К сожалению, нет. Первая проблема — это secure boot. Ни для кого не секрет, что во многих устройствах есть загрузчик, который запускает прошивку, и сотовые телефоны — не исключение. В большинстве случаев загрузчик «заблокирован» и не позволяет грузить сторонние прошивки. Существует возможность разблокировки загрузчика, но есть более серьезная проблема. Драйверы и спецификации DSP-процессоров закрыты и доступны лишь немногим.

Итак, ложка дегтя номер два. Данные телефоны не так-то просто найти. Выпускались они во второй половине нулевых годов, и на данный момент их можно найти либо на aliexpress, либо на ebay, либо на avito в соседних городах. Третий вариант наиболее актуален, так как вместо заказанного осмофона может прийти поделка. Мне удалось добыть лишь три совместимых телефона: два С118 и один С115, поэтому я буду рассказывать о работе с ними. С118 построен на платформе E88, С115 — на E87. Обе идентичны на 99,9%, как утверждают разработчики проекта. Немного фотосессии:





Еще одна важная деталь. В США, Канаде, Африке и некоторых странах Латинской Америки GSM работает в диапазонах 850/1900 МГц. Для них выпускались телефоны стандарта US. Для стандартных диапазонов частот выпускался стандарт EU. Проект OsmocomBB изначально рассчитан на стандарт EU, однако некоторым умельцам удавалось модифицировать исходный код и запускать прошивки на телефонах стандарта US. В любом случае рекомендую придерживаться стандарта EU. Как их отличить? Смотрим на географическое положение продавца. Можно так же просто проверить работоспособность телефона в наших сетях, просто позвонив кому-нибудь.

Провода и преобразователи




У рассматриваемых телефонов есть последовательный порт, выводы которого расположены на плате. Что довольно забавно, порт гарнитуры тоже выступает в роли последовательно порта и может быть использован для отладки оригинальной прошивки (сервисное меню **16379#) и общения с загрузчиком. При запуске телефона встроенный загрузчик посылает запрос на загрузку прошивки через последовательный порт, и если ему никто не отвечает, то загружается прошивка из flash-памяти.

Можно приобрести уже готовый кабель на сайте sysmocom, но это не интересно, ведь его можно собрать самому. Вам понадобится 2,5 миллиметровый джек (около 5р), три провода, преобразователь (около 150р на aliexpress) и умение паять. Все это добро стоит не более 200р и гораздо дешевле 13 евро. И тут вспоминается Arduino, у которой на борту уже есть USB-TTL конвертор. Так я и сделал, когда только начинал знакомиться с проектом. На моей freeduino (отечественный клон) был распаян FT232RL, который верно служил моим восстановителем роутеров (иногда и убийцей). Он успешно принимал сообщения загрузчика, но не позволял загрузить прошивку. Поэтому лучше всего приобретать отдельный преобразователь из списка, опубликованного в разделе Hardware/SerialCable.

Наиболее подходящими являются конверторы на базе чипсета FT232. Они «из коробки» позволяют использовать нестандартные скорости передачи данных и работают довольно стабильно. Следующий рекомендуемый чипсет — CP2102, которым пользуюсь я сам. Преобразователи на его основе не дорогие и после прошивки тоже позволяют использовать нестандартные скорости. Инструкцию по прошивке можно найти в разделе Hardware/CP210xTutorial. PL2303 подойдет для ограниченного круга задач, так как не умеет работать на высоких скоростях, да и прошивку иногда грузит через раз.

Что касается джека, дальний контакт является TxD, средний — RxD, а оставшийся является GND. Паять нужно аккуратно, чтобы не ничего перегреть, а по завершении проверить сопротивление каждого контакта мультиметром. После этого можно проверить работоспособность кабеля.

# 1. Выключаем телефон
# 2. Соединяем его с компьютером
# 3. Если у Вас нет minicom, устанавливаем:
$ sudo apt-get install minicom
# 4. Запускаем в режиме настройки
$ sudo minicom -s
# 5. Идем в "Настройка последовательного порта".
#    Выбираем свой порт, который можно найти в выводе команды ls /dev/ | grep tty
#    Скорость 115200, стоповые биты: 8-N-1.
#    После этого нажимаем "Enter", затем "Esc".
# 6. Однократно (не зажимая) нажмите кнопку включения телефона.
#    Если появится строка @ftmtoolerror, значит Вы готовы идти дальше.

Список возможных ошибок:
  • Контакты джека сгорели при пайке. Такое возможно, поэтому лучше приобрести сразу несколько джеков и проверять сопротивление каждого контакта.
  • Не тот преобразователь. Проверьте маркировку чипсета: FT232 и FT232RL — это не всегда одно и то же. Если чипсет тот, что нужен, можно выполнить небольшую диагностику, замкнув Rx и Tx между собой. При этом все, что Вы отправляете на последовательный порт, должно возвращаться обратно.
  • Телефон завис на стадии загрузки. Вытащите, а затем снова вставьте батарею.


Несколько телефонов


Для работы основных модулей OsmocomBB достаточно одного телефона. Однако, для запуска BTS Вам понадобится как минимум два. Базовая станция должна рассылать beacon-пакеты, которые сигнализируют о ее присутствии и помогают телефонам подключаться к ней. Производительность сети при одновременной рассылке beacon-пакетов и обработке пользовательских соединений на одном телефоне катастрофично мала. Также при сниффинге GSM-трафика лучше обзавестись минимум двумя телефонами: один слушает служебные сообщения для прослушиваемого абонента, другой переключается на его частоты и записывает разговор.

Bonus!




Навигация


Tags:
Hubs:
+16
Comments 14
Comments Comments 14

Articles