GSM BTS Hacking: 利用BladeRF和開源BTS 5搭建基站


引文

如果你已經購買了Nuand(官方)BladeRF x40,那么就可以在上面運行OpenBTS並可以輸入一些指令來完成一些任務。一般來說HackRF,是一款覆蓋頻率最寬的SDR板卡。它幾乎所有的信息都是開源的,甚至包括KiCad文件。缺點是它沒有FPGA,使用的低速的USB2接口,ADC/DAC的精度比較低。

再使用 bladeRF 板卡時需要注意兩個“鏡像”:固件 (firmware) 鏡像與 FPGA 鏡像。二者是兩個不同的概念。但是業界叫法不一,有時候會把二者混為一談。一般而言,固件指的是嵌入到硬件設備中的軟件,存放在只讀存儲器 (ROM) 或者閃存 (flash) 中,一般不易修改,修改的操作稱為“刷新”(flashing)。固件這個名詞最初和微代碼相關,不過 bladeRF 里源代碼是嵌入式 C 程序。FPGA 全名為可編程門陣列,其門電路、寄存器連接可以編程重構,其源程序一般是硬件描述語言 (HDL),通過綜合 (synthesis) 等步驟得到二進制文件。在 bladeRF 板卡上,FPGA 只是一塊 Altera 芯片。在沒有內置非揮發存儲時,FPGA 鏡像需要每次上電時重新加載,bladeRF 就是這種情況。所以在拿到板卡時,上面已有固件,但還沒有 FPGA 鏡像。下面本文會具體說明在使用 bladeRF 時如何刷新固件、加載/更新 FPGA 鏡像、以及如何自動加載 FPGA 鏡像。注意,有時為了避免混淆,會稱 FPGA 鏡像為 FPGA 比特流,或者 FPGA 配置(因為它就是配置了門電路等組件的連接)。

本文中介紹的工具、技術帶有一定的攻擊性,請合理合法使用。

系統:

Ubuntu 12.04 LTS Server (32位)下載:(點擊我

升級git版本

sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:git-core/ppa (press enter to continue)
sudo apt-get update
sudo apt-get install git

安裝一些前提軟件包。

設置好之后,開始安裝。

將下面代碼復制粘貼,運行-將會開始安裝:

sudo apt-get install $(
    wget -qO - https://raw.githubusercontent.com/RangeNetworks/dev/master/build.sh | \
    grep installIfMissing | \
    grep -v "{" | \
    cut -f2 -d" ")

另外一種安裝方式是通過在所有文件中搜索文本文件 IFMissing,然后再通過apt-get 命令來安裝它。當然你也可以直接通過程序代碼來操作。

值得注意的是,安裝時候有兩個安裝包會失敗(libzmq3 & libzmq3-devel)-但可以在Ubuntu系統下直接安裝。

$ sudo add-apt-repository ppa:chris-lea/zeromq
$ sudo apt-get update
$ sudo apt-get install libzmq3-dbg libzmq3-dev 

下一步是安裝uhd,當然還要注意GNURadio。運行下面的指令將會執行安裝,當然這回花掉一些時間,而這也取決於你的電腦。

wget http://www.sbrac.org/files/build-gnuradio && chmod a+x ./build-gnuradio && ./build-gnuradio

一旦執行完成,你將會收到失敗或成功的提示信息。如果失敗可以選擇重新安裝,並查看相關信息來解決問題。下面將會安裝和配置 OpenBTS相關軟件,包括:libgsm1-dev 、asterisk-dev 、asterisk-config。安裝

$ sudo apt-get install libgsm1-dev asterisk-dev asterisk-config

當然你可以自主選擇是否安裝libusb,請注意不是 libusbx 。安裝可以到www.libusb.org頁面下載,然后將其復制到 /usr/src目錄下。將/usr/lib/x86_64-linux-gnu/libusb.so原始文件備份后覆蓋它。

安裝OpenBTS

完成上面的事情之后,現在就開始安裝它吧。

1.為其(OpenBTS)創建一個目錄(結合實際情況)

2.然后安裝並運行它

#!/bin/bash

git clone https://github.com/RangeNetworks/openbts.git
git clone https://github.com/RangeNetworks/smqueue.git
git clone https://github.com/RangeNetworks/subscriberRegistry.git

#From here and downwards you can copy&paste (that's why the ';' are for)
for D in *; do (
    echo $D;
    echo "=======";
    cd $D;
    git clone https://github.com


/RangeNetworks/CommonLibs.git;
    git clone https://github.com/RangeNetworks/NodeManager.git);
done;
git clone https://github.com/RangeNetworks/libcoredumper.git;
git clone https://github.com/RangeNetworks/liba53.git

3.創建 libcoredumper

cd libcoredumper;
./build.sh && \
   sudo dpkg -i *.deb;
cd ..

4.創建 liba53

cd liba53;
make && \
   sudo make install;
cd ..

5.在同一目錄下,check out“YateBTS”

svn checkout http://voip.null.ro/svn/yatebts/trunk yatebts 

6.下一步去掉 FPGA(自動加載)信息,然后加載並打開它

vim ./yatebts/mbts/TransceiverRAD1/bladeRFDevice.cpp

從#ifdef(108行)到#endif(129行)結束,這之間是空的,應該為后來留為備用的。

7.更換目錄(YateBTS)然后運行 autogen.sh

$ cd opbts/yatebts
$ ./autogen.sh

8.這樣就可以創建配置文件,如果你立刻運行並配置腳本,將會出現錯誤然后出現搜索YATE信息。所以先要打開它配置

$vim configure

能夠找到as_fn_err $嗎?能夠找到$LINENO變量(開源軟件 Yate)並替換嗎?那么進行下一步吧

9.重新配置

./configure

10.這個時候需要開源軟件YateBTS兩個文件目錄

a) Peering

$ cd /home/openbts/obts/yatebts/mbts/Peering
$ make

b) TransceiverRAD1

$ cd /home/openbts/obts/yatebts/mbts/TransceiverRAD1
$ make

11.復制兩個文件到 OpenBTS 文件目錄下

$ cd ..
$ cp ./yatebts/mbts/TransceiverRAD1/transceiver-bladerf openbts/apps/
$ cd openbts/apps/
$ ln -sf transceiver-bladerf transceiver

12.編譯OpenBTS

$ cd /home/openbts/obts/openbts
$ ./autogen.sh
$ ./configure --with-uhd
$ make

13.下一步配置SQL-lite軟件庫(bladeRF),需要做一些修改

vim /home/openbts/obts/openbts/apps/OpenBTS.example.sql

查詢並替換以下信息

完成並進行下一步

14.創建OpenBTS配置目錄

$ sudo mkdir /etc/OpenBTS

15.在OpenBTS目錄下,安裝軟件庫

$ sudo sqlite3 -init ./apps/OpenBTS.example.sql /etc/OpenBTS/OpenBTS.db ".quit"

16.一旦完成,下一步可以通過命令來測試它

$ sqlite3 /etc/OpenBTS/OpenBTS.db .dump

如果看到了大量的輸出數據信息,那么就表明成功了。進行下一步

17.通過命令運行OpenBTS

$ cd /home/openbts/obts/openbts/apps
$ sudo ./OpenBTS

如果看見系統啟動,你的基站准備好並啟動它,如果使用手機搜尋附近網絡,應該出現測試PLMN網絡的測試信息(00101)。

18.如果開始上面的測試,退出openBTS然后安裝用戶注冊表(sipauthserve以及smqueue),需要這些才能夠運行openBTS。沒有這些,手機不會連接測試網絡。

19. 對於用戶注冊表,必須要創建一個文件目錄,即/var/lib/asterisk/sqlite3dir,創建它

$ sudo mkdir -p /var/lib/asterisk/sqlite3dir

20.創建 sipauthserve

$ cd subscriberRegistry
$ ./autogen.sh
$ ./configure
$ make

在/home/openbts/obts/subscriberRegistry/apps目錄下創建

21.下一步配置 sipauthserve

$ cd /home/openbts/obts/subscriberRegistry
$ sudo sqlite3 -init subscriberRegistry.example.sql /etc/OpenBTS/sipauthserve.db ".quit"

22.下一步安裝SMQUEUE,其與SubscriberRegistry.h文件有關聯,可以在其目錄修復它

$ cd /home/openbts/obts/smqueue
$ ln -s /home/openbts/obts/subscriberRegistry/ SR
$ autoreconf -i
$ ./configure
$ make

23.一旦完成之后,就需要修改其配置文件

$ cd /home/openbts/obts/smqueue
$ sudo sqlite3 -init smqueue/smqueue.example.sql /etc/OpenBTS/smqueue.db ".quit"

bladeRF 固件升級與FPGA鏡像加載

24.在https://github.com/Nuand/bladeRF/wiki/Upgrading-bladeRF-firmware升級固件

25.完成之后在http://www.nuand.com/fpga.php下載鏡像(FPGA)

26.加載FPGA鏡像

$ bladeRF-cli -L <path to fpga image file>

這步一定要有耐心,不要突然終止,別讓板子變成磚了。

27. 完成之后,開始運行之前的配置的服務吧。

$ cd /home/openbts/obts/smqueue
$ sudo ./smqueue &

$ cd /home/openbts/obts/subscriberRegistry/apps
$ sudo ./sipauthserve &

$ cd /home/openbts/obts/openbts/apps
$ sudo ./OpenBTS &

28.啟動OpenBTSCLI

$ cd /home/openbts/obts/openbts/apps/
$ sudo ./OpenBTSCLI

29. 默認情況下, OpenBTS不會接受額外的登記信息,需要做到下面幾點

a) 輸入你手機的IMSI(國際移動用戶識別碼)

b) 設置所有的IMSI號可以被登記

config Control.LUR.OpenRegistration .*

這么做將會導致信號范圍內所有的手機連接到你配置的基站上面,包括(隔壁的妹子or老王)。

現在你可以在手機上能夠搜索到基站網絡了,可以撥打服務電話(作者那邊是600)做測試(Asterisk)。

了解更多

[1] https://github.com/Nuand/bladeRF/wiki/Minimalistic-build-and-run-test-for-OpenBTS-5

[2] https://wush.net/trac/rangepublic/wiki/BuildInstallRun#ConfiguringOpenBTS

[3] https://wush.net/trac/rangepublic/wiki/CommonErrors

[4] http://openbts.org/w/index.php/Main_Page

[5] https://github.com/Nuand/bladeRF/wiki/Upgrading-bladeRF-firmware

*參考來源linux.net.pk


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM