Статья Поднимаем GSM станцию с помощью YateBTS и bladeRF

00.jpg

Привет codeby.net!

Не так давно ко мне в руки попал такой устройство как bladeRF x115. Первое что мне захотелось сделать это поднять свою GSM станцию. Когда я начал этим заниматься у меня возникли сложности в процессе установки и настройки необходимого софта. Информации на русскоязычных площадках я не нашел а на зарубежных информация устарела. В процессе пришлось пройти через все грабли самому. В связи с этим собственно появилась мысль описать процесс установки и настройки YateBTS под bladeRF.

Настраивать будем под Ubuntu 18.04.

Для начало установим необходимые пакеты: sudo apt-get install -y libbladerf-dev git subversion autoconf apache2 php libapache2-mod-php g++ make libgsm1-dev libgusb-dev rlwrap

Затем установим ПО для bladeRF:
Код:
sudo add-apt-repository ppa:bladerf/bladerf
sudo apt-get update
sudo apt-get install bladerf

Установим FPGA в соответствии с вашей моделью bladeRF:
Код:
sudo apt-get install bladerf-fpga-hostedx40 # for bladeRF x40
sudo apt-get install bladerf-fpga-hostedx115 # for bladeRF x115
sudo apt-get install bladerf-fpga-hostedxa4 # for bladeRF 2.0 Micro A4
sudo apt-get install bladerf-fpga-hostedxa9 # for bladeRF 2.0 Micro A9

Устанавливаем Yate:
Код:
svn checkout http://voip.null.ro/svn/yate/trunk yate
cd yate
./autogen.sh
./configure
sudo make install-noapi
sudo ldconfig

Перемещаемся обратно домашнюю директорию: cd ~

Устанавливаем YateBTS:
Код:
svn checkout http://voip.null.ro/svn/yatebts/trunk yatebts
cd yatebts/

Прежде чем начать собирать проект нужно внести некоторые изменения иначе будет ошибка при зборки.

Откроем файл mbts/GPRS/MSInfo.cpp:
Код:
GPRSLOG(INFO,GPRS_MSG|GPRS_CHECK_OK) << "Multislot assignment for "<<this<<os;  - найдем эту строку
GPRSLOG(INFO,GPRS_MSG|GPRS_CHECK_OK) << "Multislot assignment for "<<this<<(!os.fail()); и заменим ее на эту

Сохраним изменение и перейдем к следующему файлу.

Тоже самое сделаем с файлом mbts/SGSNGGSN/Sgsn.cpp
Код:
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<ss);
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<(!ss.fail()));

SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing gmm:"<<ss);
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing gmm:"<<(!ss.fail()));

Когда файлы будут исправлены можно перейти к сборке проекта.
Код:
./autogen.sh
./configure
sudo make install

Настраиваем Web GUI YateBTS:
Код:
cd /var/www/html
sudo ln -s /usr/local/share/yate/nipc_web yatebts
sudo chmod -R a+w /usr/local/etc/yate

- по этому адресу можно получить доступ к Web интерфейсу YateBTS

Настраиваем GSM BTS:
Откроем Web панель YateBTS

01.png


Переходим на вкладку BTS Configuration и выставляем настройки:
Код:
Radio.Band=900
Radio.C0=75
Identity.MCC=001
Identity.MNC=01
Radio.PowerManager.MaxAttenDB=35
Radio.PowerManager.MinAttenDB=35

02.png


После того как настройки выставлены нажимаем Submit. Теперь надо выставить разрешение на подключение к нашей станции. Переходим на вкладку Subscribers в правом нижнем углу выбираем Accept by REGEXP

03.png


В поле Regexp пишем .* и нажимаем Save.

04.png


Затем настроим перехват GSM сигнала. Для этого перейдем на вкладку BTS Configuration чуть ниже найдем вкладку Tapping. Выставим галочку напротив GSM и нажмем Submit.

05.png


Эта настройка позволяет захватывать GSM сигнал через GSMTAP. На этом минимальная настройка GSM сети закончена.

Запускаем BTS:
Запускаем GMS станцию командой sudo yate -s. Если все настроено правильно вы должны увидеть много текста среди которого будет:
Код:
Release 6.1.1 formal build date Jun  6 2019 rev671
2019-06-06_10:27:05.242232 <mbts:NOTE> proc 27570 GSMConfig.cpp:80:regenerateBeacon: thread 139826990253888: regenerating system information messages, changemark 1
Starting MBTS...

Также определить работает ли станция можно посмотрев на плату первый и последний светодиод должен гореть стабильно а центральный мигать. Включив поиск на телефоне доступных сетей мы должны увидеть Test PLMN 1 - 1 2G это и есть наша тестовая сеть.

06.jpeg


Зарегистрировавшись в сети мы получим стандартное сообщение его можно изменить в файле /usr/local/share/yate/scripts/nib.js на строчки 379.

07.jpeg


В Web интерфейсе на вкладке Subscribers чуть ниже перейдя кликнув по ссылки Online Subscribers мы видим зарегистрированных пользователей которые были онлайн за последних 10 дней (частоту обновлений можно изменить в настройках).

08.png


Установка модуля SMSSend:
Из коробки отправить произвольное сообщение клиенту нельзя но это можно сделать через сторонний модуль YateBTS_smssend. Давайте его установим (если у вас запущен yate остановить его перед начал установки модуля).

Код:
git clone https://github.com/Ark444/YateBTS_smssend.git
cd YateBTS_smssend
sudo make
sudo make install

Если нет ошибок установка прошла успешна. Запустим Yate затем в новом окне терминала подключаемся к удаленному интерфейсу: rlwrap nc localhost 5038. Выводим список зарегистрированы пользователи командой nipc list registered:
Код:
IMSI            MSISDN
--------------- ---------------
00101001100110   55124323

И по шаблону составляем команду для отправки сообщения smssend <MSISDN> <CALLER> <message> - smssend 5569413 911 Hello CODEBY.NET после отправки наблюдаем результат

09.jpeg


На этом пожалуй закончу. Если вам понравился материал вы можете прочить следующую стать в премиум разделе EvilBTS или подменяем GSM сети с помощью YateBTS и bladeRF ;)

p.s Если вам понравилась какая либо статья не забывайте нажимать кнопку
2019-06-24_11-55-07.png
это дает мотивацию автором для написание нового материала так как это все делаться на чистом индуизме.
 
Последнее редактирование:
Вроде бы можно подобное замутить с помощью связки HackRF и донгла. Донгл на прием, HackRF на передачу (из за полудуплекса)
 
Донгла нет сейчас рабочего, только Hackrf. На хабре вроде или в ж.ХАКЕР читал про донгл и RF
 
Ребята есть пару вопросов, 1-й у меня отображается в списке операторов не названия который я придумал а тупо лак сид, и 2-й нету отображения субскрайберов пишет ошибку Problem with the socket connection. Cant connect 110

И в догонку, почему на виртуалке вроде как видел блейд что можно посмотреть конфиг а при запуске бтс пишет что нету устройства
 
Покажи хоть лог или скрин какой, подробней описывай ошибку/проблему.
У меня на bladeRF 115 работает без проблем.
Сам как все поставленные задачи по работе с GSM решу, буду запускать LTE станцию.
Приветствую,
Прошло 2 месяца, как насчет LTE, запустили?
 
Выводим список зарегистрированных пользователей командой nipc list registered
Прошу прощения, может быть я что то упустил, подскажите пожалуйста кто знает, как узнать imei зарегистрированного в нашей сети устройства?
 
Добрый день всем, решил повторить проект.
При замене кода
GPRSLOG(INFO,GPRS_MSG|GPRS_CHECK_OK) << "Multislot assignment for "<<this<<os; - найдем эту строку
GPRSLOG(INFO,GPRS_MSG|GPRS_CHECK_OK) << "Multislot assignment for "<<this<<(!os.fail()); и заменим ее на эту
в моем файле есть
GPRSLOG(INFO,GPRS_MSG|GPRS_CHECK_OK) << "Multislot assignment for "<<this<<os.str();
добавляется .str() , и поэтому воапрос на какой код менять эту строку? Надо ли добавлять .str() ?
Это снизу мой код котороый необходимо менять.
1611910836719.png



И далее при замене
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<ss);
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<(!ss.fail()));

SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing gmm:"<<ss);
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing gmm:"<<(!ss.fail()));

также у меня добавлена .str() в обоих случаях, как производить замену, добавлять ли .str() ?
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<ss.str());
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing gmm:"<<ss.str());
 
вопрос по
bladeRF 2.0 Micro A4
скачал спец версию yate-rc запустилась сеть телефон видит,
но нет коннекта ,не регистрируется телефон ,
ВНИМАНИЕ ВОПРОС!?!
кто смог??? и как??? это сделать???
Не решилась проблема с подключением? У меня тоже сеть видит, но не коннектится. В моём случае нет названия сети. Только MCC и MNC
Ребята есть пару вопросов, 1-й у меня отображается в списке операторов не названия который я придумал а тупо лак сид, и 2-й нету отображения субскрайберов пишет ошибку Problem with the socket connection. Cant connect 110

И в догонку, почему на виртуалке вроде как видел блейд что можно посмотреть конфиг а при запуске бтс пишет что нету устройства

Ребята есть пару вопросов, 1-й у меня отображается в списке операторов не названия который я придумал а тупо лак сид, и 2-й нету отображения субскрайберов пишет ошибку Problem with the socket connection. Cant connect 110

И в догонку, почему на виртуалке вроде как видел блейд что можно посмотреть конфиг а при запуске бтс пишет что нету устройства
У меня тоже такое было когда я по этой статье делал, в итоге раз пять менял версии ОS, пробовал разные статьи. Самая продуктивная для меня была эта статья:
 
не видит Blade Rf, как я понял, хотя драйвера поставил
Код:
Starting MBTS...
2021-05-08_14:37:12.709055 <mbts:NOTE> proc 2308 TRXManager.cpp:127:sendCommandPacket: thread 139666739447616: this:0x56276c1095c0 command CMD RESET 1
2021-05-08_14:37:12.709164 <ybts:NOTE> YBTSDriver State changed WaitHandshake -> Running
2021-05-08_14:37:12.713694 <bladerf/1:WARN> Failed to open USB device: USB reset failed - no device found [0x7f7a44001130]
2021-05-08_14:37:12.713777 <gsmtrx:CRIT> Failed to create radio interface: USB reset failed - no device found
ALERT 139666739447616 14:37:12.7 proc 2308 TRXManager.cpp:221:sendCommand: thread 139666739447616: RESET failed with status 2 extra: code=524288
2021-05-08_14:37:12.713867 <mbts:NOTE> proc 2308 TRXManager.cpp:152:sendCommandPacket: thread 139666739447616: this:0x56276c1095c0 response RSP RESET 2 code=524288 to command CMD RESET 1
2021-05-08_14:37:12.713887 <mbts:WARN> proc 2308 TRXManager.cpp:221:sendCommand: thread 139666739447616: RESET failed with status 2 extra: code=524288
2021-05-08_14:37:12.713932 <ybts-signalling:WARN> Peer fatal stop notification 'RadioError' code=0x80000 (HardwareNotAvailable) operation=RESET [0x55e92db878a0]
2021-05-08_14:37:12.725083 <nipc:CONF> Please configure country code. See subscribers.conf or use the LMI web interface
2021-05-08_14:37:12.725632 <NOTE> Failed to open config file '/usr/local/etc/yate/tmsidata.conf', using defaults (2: No such file or directory)
Yate engine is initialized and starting up on laba-Latitude
ALERT 139666739447616 14:37:12.9 proc 2308 OpenBTS.cpp:251:main: thread 139666739447616: Failed to reset transceiver
2021-05-08_14:37:12.915098 <mbts:WARN> proc 2308 OpenBTS.cpp:251:main: thread 139666739447616: Failed to reset transceiver
2021-05-08_14:37:13.000610 <ybts:NOTE> 'shutdown' command failed
2021-05-08_14:37:13.000660 <ybts:NOTE> Stopping ...
2021-05-08_14:37:13.016088 <ybts:NOTE> YBTSDriver State changed Running -> Idle
2021-05-08_14:37:13.675610 <cpuload:NOTE> Updating CPU core number from 1 to 8

в статье было указано заменить текст в файлах, сделал так
Код:
//SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<ss.str());
    SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<(!ss.fail()));
только в стате <<ss.str()); была без .str()) , и не знаю сделал ли правильно замену. В статье написано
Код:
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<ss);
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<(!ss.fail()));
 
в статье было указано заменить текст в файлах, сделал так
Код:
//SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<ss.str());
    SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<(!ss.fail()));
только в стате <<ss.str()); была без .str()) , и не знаю сделал ли правильно замену. В статье написано
Код:
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<ss);
SGSNLOGF(INFO,GPRS_OK|GPRS_MSG,"SGSN","Removing SgsnInfo:"<<(!ss.fail()));
Я проверить не могу. Нету больше устройство. Возможно был обновлен репозиторий, по этому теперь там стоит str. Попробуй собрать без замены возможно ошибок теперь не будте
 
Получилось запустить, но по инструкции описаной в видео

Могу отправлять смс и звонить в нутри сети. Проблема в том, что не могу просмореть список подключенных абонентов.
И при попытке отправки СМС при просмотре подключеных абонентов вываливаются ошибки.
 

Вложения

  • 1.jpg
    1.jpg
    73,6 КБ · Просмотры: 186
  • 2.jpg
    2.jpg
    137,5 КБ · Просмотры: 186
Получилось запустить, но по инструкции описаной в видео

Могу отправлять смс и звонить в нутри сети. Проблема в том, что не могу просмореть список подключенных абонентов.
И при попытке отправки СМС при просмотре подключеных абонентов вываливаются ошибки.
А SIM Вы какую используете для регистрации в сети?
 
А SIM Вы какую используете для регистрации в сети?
Там не важно какая сим карта, три телефона зарегестрировались Актив, Кселл, Алтел.
И звонить могут друг другу с операторов разных симкарт, номера новые выдаются, смс приходит с номером при первой регистрации в сети
 
Privet bcem!
Я очень рад, что вам пригодилась наша бесплатная программа YateBTS RAN.
Мы также разрабатываем такие продукты для базовой сети, как: , YateUCN (PGW, GMSC, VLR, MME), YateSMSC, YateUSGW (USSD-шлюз), YateOTA, 2Greet, YateRouter.

Yate работает более 15 лет, первую лабораторию VoLTE мы выпустили 3 года назад, а лабораторию 5GSA - в этом году (2021).

Не стесняйтесь обращаться за помощью к нашему сайту, Google переведет, даже если вы напишете кириллицей, а некоторые немного знаете русский язык.

Спасибо за статью, очень интересно! Вопрос что с помощью этой сети делать?)) в мир она "смотреть" не может, ограничено радиусом блейда?
Если вы работаете в телекоммуникационной отрасли, это «испытательный стенд», используемый в лаборатории или разработке.
Если вам нужны также элементы Core Network, попробуйте еще раз заглянуть на сайт .
 
Последнее редактирование:
Кто то может подсказать - не могу найти в конфигурации параметр Reselect Offset, нет его нигде , и реально показывает что он равен нулю хотя канал стоит из 1800 Мгц
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!