Статья Поднимаем 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
это дает мотивацию автором для написание нового материала так как это все делаться на чистом индуизме.
 
Последнее редактирование:

Sdr

Green Team
20.01.2016
116
59
BIT
1
Вроде бы можно подобное замутить с помощью связки HackRF и донгла. Донгл на прием, HackRF на передачу (из за полудуплекса)
 

Sdr

Green Team
20.01.2016
116
59
BIT
1
Донгла нет сейчас рабочего, только Hackrf. На хабре вроде или в ж.ХАКЕР читал про донгл и RF
 

Jusse

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

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

Chankat

New member
05.06.2020
1
0
BIT
0
Покажи хоть лог или скрин какой, подробней описывай ошибку/проблему.
У меня на bladeRF 115 работает без проблем.
Сам как все поставленные задачи по работе с GSM решу, буду запускать LTE станцию.
Приветствую,
Прошло 2 месяца, как насчет LTE, запустили?
 

WhiteHacK

Green Team
18.08.2019
42
9
BIT
0
Выводим список зарегистрированных пользователей командой nipc list registered
Прошу прощения, может быть я что то упустил, подскажите пожалуйста кто знает, как узнать imei зарегистрированного в нашей сети устройства?
 

RusRus

Member
08.12.2019
10
0
BIT
0
Добрый день всем, решил повторить проект.
При замене кода
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());
 

BAO

Red Team
11.09.2019
79
60
BIT
63
вопрос по
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, пробовал разные статьи. Самая продуктивная для меня была эта статья:
 

RusRus

Member
08.12.2019
10
0
BIT
0
не видит 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()));
 

n3d.b0y

Red Team
19.01.2018
181
476
BIT
176
в статье было указано заменить текст в файлах, сделал так
Код:
//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. Попробуй собрать без замены возможно ошибок теперь не будте
 

RusRus

Member
08.12.2019
10
0
BIT
0
Получилось запустить, но по инструкции описаной в видео

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

Вложения

  • 1.jpg
    1.jpg
    73,6 КБ · Просмотры: 181
  • 2.jpg
    2.jpg
    137,5 КБ · Просмотры: 180

BAO

Red Team
11.09.2019
79
60
BIT
63
Получилось запустить, но по инструкции описаной в видео

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

RusRus

Member
08.12.2019
10
0
BIT
0
А SIM Вы какую используете для регистрации в сети?
Там не важно какая сим карта, три телефона зарегестрировались Актив, Кселл, Алтел.
И звонить могут друг другу с операторов разных симкарт, номера новые выдаются, смс приходит с номером при первой регистрации в сети
 

afk

New member
19.10.2021
3
0
BIT
0
Privet bcem!
Я очень рад, что вам пригодилась наша бесплатная программа YateBTS RAN.
Мы также разрабатываем такие продукты для базовой сети, как: , YateUCN (PGW, GMSC, VLR, MME), YateSMSC, YateUSGW (USSD-шлюз), YateOTA, 2Greet, YateRouter.

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

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

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

vic2

Green Team
18.03.2020
10
1
BIT
60
Кто то может подсказать - не могу найти в конфигурации параметр Reselect Offset, нет его нигде , и реально показывает что он равен нулю хотя канал стоит из 1800 Мгц
 
Мы в соцсетях:

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