HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Электроника и Фрикинг
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 25.05.2018, 03:39
Dr.Lafa
Новичок
Регистрация: 30.12.2016
Сообщений: 0
С нами: 4931546

Репутация: 0
По умолчанию

Приветствую, форумчане! В этой статье я хочу рассказать о том, как начать работать с osmocom-bb - проекте, позволяющем сделать из старой моторолы инструмент изучения и тестирования GSM сетей.
Я постараюсь дать достаточное количество информации, что бы вы без лишней боли смогли начать работу с osmocom.



Osmocom? Впервые слышу!
Osmocom - это открытая имплементация стека протоколов GSM. Включает в себя программное обеспечение и инструменты, реализующие различные стандарты мобильной связи, включая GSM, DECT, TETRA и другие. Так описано на официальном сайте.

Osmocom-bb реализует клиентскую часть протокола GSM. Для этого используются телефоны на базе чипсета calypso и mediatek. К таким телефонам относятся, например, motorola c115, motorola c118, motorola c123, Neo 1973, SciphoneDreamG2. Полный список можно посмотреть на официальном сайте: Phones - OsmocomBB - Open Source Mobile Communications

По сути osmocombb соединяет osmocom-совместимый телефон и компьютер с линукс [S](как львиноботы, соединяющиеся в одного супербота)[/S], позволяя программировать устройство для работы с gsm или использовать уже готовые проекты для, например, создания собственной базовой станции gsm (2G), устройства для снифинга gsm трафика и ещё много чего другого.

Hardware
Для того, что бы начать работу с osmocom, нужно обзавестись некоторыми прибамбасами, а именно:
  • Телефон из списка доверенных (желательно motorola на базе e88, но об этом позже)
  • USB-UART конвертер
  • mini jack 2.5 mm TRS (3 контакта)
  • детали для замены фильтров (опционально)
А теперь подробнее

Телефон
Полный список допустимых телефонов можно посмотреть тут. Однако авторы рекомендуют использовать motorola c123 / motorola c118 (телефоны на базе E88), так как проект изначально затачивался именно под них. Телефоны на базе E87 (motorola c115 / c117) так же отлично подойдут: E88 и E87 идентичны на 99%.

Я взял motorola c118, так как их было проще всего найти, всё нижеописанное я буду проводить именно с ним. Купить телефоны можно на местной барахолке, в переходе или на авито. Цена вопроса - около 500 р. за штуку.



Если вы собираетесь поднимать свою базовую станцию, то понадобится 2 телефона и, соответственно, 2 USB-UART конвертера и 2 мини джека.

О перепайке фильтров
Изначально телефоны отбрасывают весь входящий трафик, не принадлежащий этому телефону (остальной ему просто не нужен). В некоторых проектах, например в снифинге gsm или поднятии собственной базовой станции (BTS), нам нужен весь входящий трафик. Что бы мы могли получать его, нужно перепаять фильтры.

Казалось бы, можно просто выпаять фильтры и замкнуть цепь. Но дело в том, что фильтры также преобразуют несбалансированный сигнал 50 ohm от антенны в сбалансированный на 100 ohm, который впоследствии идёт на чипсет RITA. По этому мы не можем просто удалить фильтры и замкнуть цепь.

Для перепайки фильтров понадобится паяльный фен, так как по другому удалить детали без повреждения телефона вряд ли получится (точно не получится, я пытался). Так же понадобится паяльник с тонким наконечником и прочие паяльные принадлежности (припой, флюз и т.д.)
Детали для перепайки в одном паке можно заказать на aliexpress (цена около 100 р.), или же в русских магазинах, но там цена меня совсем не порадовала.

О том, как и что припаивать, написано на официальном сайте. Здесь описано с теорией.

USB конвертер
Список поддерживаемых USB TTL конвертеров есть на сайте. Конечно, можно купить готовый вариант переходника USB-minijack 2.5 mm, но это во первых дорого, во вторых не интересно. По этому лучше брать отдельно конвертер, отдельно миниджек. Самым дешёвым (цена - около 70 рублей на aliexpress) и стабильным USB-TTL конвертером является CP2102. Хотя для некоторых проектов его нужно перепрошить для возможности работы на нестандартных скоростях - это не является проблемой. О перепрошивке будет ниже, в разделе software



mini jack
Нужен обычный трёхконтактный (TRS) minijack 2.5 mm. Проблема в том, что на дворе 2018 год, и достать 2.5-милиметровый миниджек может быть проблематичным занятием. Если вы везунчик, и вам удалось найти трёхконтактный миниджек, то распайка будет такой:
  • RXD - наконечник
  • TXD - середина
  • GND - нижняя часть
Припаивать надо к RXD, TXD и GND конвертера соответственно.

Мне же, как наверняка и многим другим, удалось найти только "тюльпан" 3RCA TRRS (4 контакта). Под спойлером о том, как его подсоединять

Проверяем соединение
Что бы проверить связь, будем использовать minicom из под Linux (все дальнейшие действия будут проводиться под Debian 9.4 x86_64)
Выключаем телефон, соединяем с компьютером и в терминале ищем подключенный адаптер:
Код:
ls /dev | grep ttyUSB


Открываем конфигурацию minicom
Код:
sudo minicom -s
> Настройка последовательного порта, в Последовательный порт вводим найденный адаптер.



Выбираем Выход, затем на телефоне коротко нажимаем кнопку включения. Если в выводе, помимо мусора, появилась надпись
Код:
@ftmtoolerror
, то можно переходить к сборке софтовой части.



выход из minicom - ctrl + a, x, Enter

Software
Для начала определимся со структурой проекта: /opt/osmocom - библиотеки проекта и кросс-компилятор, ~/osmocombb - ветки проекта.
Все действия будут проводиться на Debian 9.4 x86_64

Собираем libosmocore
libosmocore - основная библиотека проекта, почитать про неё можно здесь.

Bash:


Код:
su
#устанавливаем зависимости
apt-get
update
&&
apt-get
install
build-essential libtool libtalloc-dev shtool autoconf automake git-core pkg-config
make
gcc libpcsclite-dev
#создаём рабочее место
mkdir
/opt/osmocom
cd
/opt/osmocom
#клонируем основные библиотеки
git
clone git://git.osmocom.org/libosmocore.git
#компилируем
cd
libosmocore/
autoreconf -i
./configure
make
make
install
ldconfig -i
cd
..
Собираем кросс-компилятор
У меня возникли проблемы со сборкой по официальному мануалу, по этому я сделал свой установщик.

Bash:


Код:
su
apt
update
&&
apt
install
libmpfr-dev libmpc-dev libgmp-dev libgnutls28-dev libgnutlsxx28 texinfo
cd
/opt/osmocom
mkdir
gnu-arm-toolchain
cd
gnu-arm-toolchain
mkdir
build
install
src
cd
src/
качаем программы нужных версий
#в официальном мануале используется gcc версии 4.8.2, у меня скомпилировался только 4.9.4
wget
http://ftp.gnu.org/gnu/gcc/gcc-4.9.4/gcc-4.9.4.tar.bz2
wget
http://ftp.gnu.org/gnu/binutils/binutils-2.21.1a.tar.bz2
wget
ftp://sources.redhat.com/pub/newlib/newlib-1.19.0.tar.gz
#разархивируем
tar
jxvf gcc-4.9.4.tar.bz2
tar
jxvf binutils-2.21.1a.tar.bz2
tar
xfvz newlib-1.19.0.tar.gz
cd
..
/
# качаем установщик
wget
https://raw.githubusercontent.com/DrLafa/gnu-arm-toolchain-installer/master/gnu-arm-build.sh
#даём права на исполнение
chmod
+x gnu-arm-build.sh
#выполняем установку
./gnu-arm-build.sh
Этот установщик работает на Debian 9.4 x86_64 с gcc 6.3.0 и texinfo 6.3.0. С другими верияси gcc и texinfo могут быть проблемы.
После компиляции нужно прописать путь до бинарников в переменную PATH. Прописываем в конец файла .zshrc, .bashrc или каким ещё терминалом вы пользуетесь:

Код:


Код:
export PATH=/opt/osmocom/gnu-arm-toolchain/install/bin:${PATH}
На этом сборка кросс-компилятора закончена. Если возникли проблемы компиляции, можете писать в комментариях. Попробуем решить коллективно.

Собираем OsmocomBB
Настало время собрать основную ветку проекта

Код:


Код:
# создаём рабочее место
cd ~/
mkdir osmocombb
cd osmocombb
#клониурем основную ветку
git clone git://git.osmocom.org/osmocom-bb.git master
cd master/src
Тут стоит отметить, что если вы хотите иметь возможность отправлять трафик gsm (а не только принимать), то в файле
Код:
src/target/firmware/Makefile
практически в самом низу нужно раскомментировать строку
Код:
CFLAGS += -DCONFIG_TX_ENABLE
. Однако имейте ввиду, что вещание на частотах gsm в России регулируется законом, так что вас могут [S]счесть за врага народа и отправить в концлагерь[/S] призвать к судебной ответственности. Подробнее читайте в разделе Legal Aspects.

Чуть ниже есть 2 строки, раскомментировав которые, вы получите возможность загружать прошивку в постоянную память, а не только в RAM.



Перед компиляцией основной ветки давайте поговорим о перепрошивке USB-TTL конвертера CP2102.
Итак, если у вас cp2102 и вы перепрошили его, то перед компиляцией основного проекта в файл
Код:
src/host/osmocon/osmocon.c
нужно добавить строку
Код:
#define I_HAVE_A_CP210x


Теперь вы готовы собрать основную ветку

Код:


Код:
cd ~/osmocombb/master/src/
make
Если компиляция завершилась без ошибок, то можно переходить к самому интересному. К тестированию

Тестируем
Прошивки ветки master для motorola c115, c118, c123 и прочих на платформе compal_e88 (и 87) находятся по пути
Код:
src/target/firmware/board/compal_e88/
Прошивки заливаются на телефон с помощью загрузчика. Синтаксис загрузчика следующий:
  • -m {c123,c123xor,c140,c140xor,c155,romload,mtk} - платформа телефона. Для motorola c118 это c123xor,
  • -p /dev/ttyXXXX - путь к USB-TTL конвертеру
  • -c - загрузка по цепочке. Указывается, если вы загружаете тяжеловесную прошивку, в названии которых фигурирует слово hightram (например rssi.highram.bin)
  • file.bin - прошивка
Для удобства я сделал ссылку на osmocon и добавил её в переменную PATH

Код:


Код:
cd ~/osmocombb/master/src/host/osmocon/
mkdir osmocon-link
ln -s ~/osmocombb/master/src/host/osmocon/osmocon osmocon
Выключаем телефон и подключаем к компьютеру

Код:


Код:
#идём в папку с прошивками
cd ~/osmocombb/master/src/target/firmware/board/compal_e88
osmocon -m c123xor -p /dev/ttyUSB0 hello_world.compalram.bin
#коротко жмём кнопку включения на телефоне. Начинается загрузка.


Могут быть проблемы с загрузкой прошивки из-за плохого соединения. Просто переподсоедините телефон и попробуйте снова.

Что со всем этим можно сделать
У osmocom очень много веток развития. Есть, допустим, burst_int, нацеленный на снифинг gsm-трафика, emi для дос-атак на устройства gsm, но это всё темы для отдельных статей.

О том, что есть в ветке мастер (которую мы только что скомпилировали) можно почитать на оффициальном сайте: OsmocomBB Firmware - OsmocomBB - Open Source Mobile Communications. Рассмотрим пример одной прошивки, использующей только телефон и другой, использующей телефон и компьютер одновременно.

RSSI
RSSI может работать без кмопьютера после прошивки. Он показывает системную информацию о базовой станции. Давайте загрузим эту прошивку на телефон:

Код:


Код:
#идём в папку с прошивками
cd ~/osmocombb/master/src/target/firmware/board/compal_e88
osmocon -m c123xor -p /dev/ttyUSB0 -c hello_world.compalram.bin
#коротко жмём кнопку включения на телефоне. Начинается загрузка.
Здесь используется параметр -c, так как это hightram-прошивка

После того, как прошивка загрузилась, в выводе терминала будет системная информация о ближайшей базовой станции. Есть возможность менять канал (ARFCN). А ещё он пикает, если нажать кнопку "вверх"

С вышкой можно синхронизироваться (зелёная кнопка), тогда будет выдано ещё больше информации:
Здесь MMC (Mobile Country Code) - код страны, MNC (Mobile Network Code) - код оператора, LAC (Location Area Code) - код локальной зоны. В двух словах LAC - это объединение некоторого количества базовых станций, которые обслуживаются одним контроллером базовых станций (BSC). cell id - идентификатор базовой станции.
С помощью этой информации можно узнать примерное местоположение вашего телефона. Учитывая то, что телефон подключён к сети для экстренных вызовов, вы теперь знаете, как вас смогут найти сверху

mobile
Другая, самая интересная на мой взгляд прошивка в этой ветке - mobile. Превращает ваш компьютер в телефон со всеми вытекающими плюшками (возможность просмотра трафика в wireshark, выполнение DTMF команд и комечто же звонки и смс-ки). Mobile использует телефон как физический уровень gsm, а всё остальное (layer 2-3) располагается на компьютере. Для нормальной работы нужна, конечно же, рабочая симка.

Зальём прошивку на телефон:

Код:


Код:
#подключаем выключенный телефон
cd ~/osmocombb/master/src/target/firmware/board/compal_e88
osmocon -m c123xor -p /dev/ttyUSB0 -c layer1.highram.bin
#коротко жмём на кнопку включения
Здесь, опять же, для загрузки прошивки использовался параметр -c, потому что для тяжеловесных прошивок используется загрузка по цепочке: сначала загружается кастомный загрузчик, который загружает прошивку типа hightram. Физическое взаимодействие с сетью (layer 1 модели OSI) запустился, сворачиваем это окно.

Во второй консоли запускаем наш "мобильник" mobile, выступающий в качестве 2 и 3 уровня модели OSI

Код:
~/osmocombb/master/src/host/layer23/src/mobile/mobile -i 127.0.0.1
Мобильник запущен. Мы можем подключиться к консоли управления через telnet:

Код:
telnet 127.0.0.1 4247
Давайте откроем wireshark и попробуем отловить смс-ку. В акуле телефон будет loopback-интерфейсом



Ну разве не восхитительно!

Пожалуй на этом я и закончу данную статью, она и так уже довольно затянулась. Желаю всем дешёвых моторол, удачной пайки, компиляции с первого раза и не забывать об УК РФ, прежде чем соберётесь поднимать свою BTS.
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.