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

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/bashgit 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


本文轉自 K1two2 博客園博客,原文鏈接:?http://www.cnblogs.com/k1two2/p/5379655.html?,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256239.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256239.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256239.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

夜深人靜,想規劃一下短期

截止寫到這里的時候&#xff0c;已經是農歷的十一月初六了&#xff0c;算算時間&#xff0c;距離過年也不太遙遠了。就只有短短50多天左右。 很多事想做沒有時間&#xff0c;很多程序要改&#xff0c;沒有時間&#xff1b;很多想法想付諸行動&#xff0c;總是半途而廢。時間久這…

【圖像處理】——Python+opencv實現提取圖像的幾何特征(面積、周長、細長度、區間占空比、重心、不變矩等)

轉載請注明詳細地址本文簡單介紹了圖像常見幾何特征的概念以及求解方法本文介紹了Python和opencv求解幾何特征的常用方法目錄 其他形狀外接輪廓的方法可以參考:《OpenCV-Python——第17.3章:輪廓形狀擬合(邊界矩形,最小外接圓...)及性質》 一、獲得輪廓 二、面積 1、c…

Linux 中斷處理淺析

最近在研究異步消息處理, 突然想起linux內核的中斷處理, 里面由始至終都貫穿著”重要的事馬上做, 不重要的事推后做”的異步處理思想. 于是整理一下~第一階段&#xff0d;&#xff0d;獲取中斷號每個CPU都有響應中斷的能力, 每個CPU響應中斷時都走相同的流程. 這個流程就是內核…

C#中泛型的相關知識點總結

一、概念 1.1 泛型 泛型是什么&#xff1f; 書本告訴我們泛型是通過通過參數化類型的方法在同一份代碼上對多種數據類型進行調用。也即是說&#xff0c;如果同一個代碼需要使用不同的數據類型的話就可以定義一個泛型的類或者方法。 泛型的優點是什么&#xff1f; 1.通過使用…

用scikit-learn研究局部線性嵌入(LLE)

1. scikit-learn流形學習庫概述 在scikit-learn中&#xff0c;流形學習庫在sklearn.manifold包中。里面實現的流形學習算法有&#xff1a; 1&#xff09;多維尺度變換MDS算法&#xff1a;這個對應的類是MDS。MDS算法希望在降維時在高維里樣本之間的歐式距離關系在低維可以得到保…

判斷字符串中是否為數字的三種方法

//1用JAVA自帶的函數 public static boolean isNumeric(String str){for (int i str.length();--i>0;){ if (!Character.isDigit(str.charAt(i))){return false;}}return true;}//2用正則表達式 public static boolean isNumeric(String str){ Pattern pattern Pattern.…

【圖像處理】——Python+opencv實現圖像的hu不變矩特征提取(含原理、推導過程、應用、代碼等)

目錄 轉載本文請注明詳細地址本文介紹了矩和圖像矩的含義本文介紹了不變矩的計算、應用本文介紹了如何計算圖像相似度一、思維導圖 二、普通矩的定義 1、零階矩 2、二階矩

MSSQL-to-MySQL v5.3, 從MSSQL遷移到mySQL的最佳工具

將現有的MSSQL數據庫遷移到MySQL數據庫,嘗試了很多種工具 MySQL Workbench / MSSQL to MySQL Export / DB Converter / openDBcopy 都有這樣那樣的問題。 最后發現就MSSQL-to-MySQL好一點&#xff0c;能夠保證所有表和數據成功遷移&#xff0c;并且字段類型都比較正確。 只是對…

C#窗體應用程序崩潰解決方法總結

一、內存不足 內存是最常見的導致程序崩毀的原因&#xff0c;常用解決方式有如下幾種。 算法中聲明的占內存較大的全局變量或類中聲明的私有變量在循環或運行結束后需進行釋放&#xff0c;手動設置Dispose()&#xff0c;然后GC.Collect()。對一些重復調用的類避免多次實例化。…

【學習的心得】——“快餐”的效率與“挖掘”的重要性

從事Python圖像處理和機器學習方向已經有大半年了&#xff0c;現在作為還是一個研究生的我&#xff0c;大部分時間都是在完成老師給的課題任務&#xff0c;但是這幾個月下來我感覺和老師的意見有點分歧了甚至跟一些同學都有所意見分歧了。 Python雖然是最近幾年火起來的語言&a…

Unity3D Input按鍵系統

默認輸入軸&#xff1a; Horizontal 和 Vertical被映射到w, a, s, d鍵和方向鍵 Fire1, Fire2, Fire3被分別映射到Ctrl&#xff0c;Option&#xff08;Alt&#xff09;和Command鍵 Mouse X 和 Mouse Y被映射到鼠標移動增量 Window Shake X 和 Window Shake Y 被映射到窗口的移動…

iOS app 企業內部發布及HTTPS服務器配置

轉自: http://www.cnblogs.com/cocoajin/p/4082488.html iOS企業內部發布及HTTPS服務器配置 一&#xff1a;所需的條件 1. 蘋果開發者證書&#xff0c;企業版 299$ 版本 2. ssl 證書&#xff0c;即https使用的服務器證書 3. web服務器&#xff0c;支持https 4. 一個域名&#x…

Pytorch超簡單安裝教程

安裝Pytorch 1.1 安裝Annaconda 安裝Pytorch首先需要安裝Annaconda&#xff0c;按照教程&#xff0c;安裝了Annaconda5.2.0的版本。 路徑 記住安裝路徑即可&#xff0c;其余均選默認。 1.2 安裝Pytorch 第一步&#xff0c;打開Anaconda Prompt 。然后輸入 conda create -n…

【圖像處理】——紋理特征提取方法(LBP局部二值模式和GLCM灰度共生矩陣)

紋理特征提取方法 局部二值模式(LBP) (結構法) Local binary patterns 原理 將像素點的鄰域八個像素點與中心像素點值進行比較,大于設為1,小于設為0,這樣就會得到一個鄰域值為1和0的格子,將這八個值按照一定的規則排列成一個二進制的數字,并且轉換為十進制作為中心像…

44. 源代碼解讀-RocketMQ-架構

1. 前言 1.1 github源代碼 https://github.com/apache/rocketmq 1.2 github其他客戶端&#xff0c;比如c,php https://github.com/apache/rocketmq-externals 1.3 運行進程 RocketMQ分成兩個進程運行 NamesrvBrokerNamesrv&#xff0c;命名服務&#xff0c;主要負責Broker狀態管…

jquery檢測瀏覽器類型

使用jquery如下代碼檢測瀏覽器版本時&#xff1a;出問題&#xff0c;在檢測IE瀏覽器&#xff0c;如果版本是IE11時&#xff0c;會出現 $.browser.msie的返回值是false&#xff0c;$.browser.mozilla的返回值是true&#xff0c;即把IE11檢測成火狐了 結局辦法 判斷IE瀏覽器用 …

【leetcode?python】 9. Palindrome Number

#回文數#Method1&#xff1a;將整數轉置和原數比較&#xff0c;一樣就是回文數&#xff1b;負數不是回文數#這里反轉整數時不需要考慮溢出&#xff0c;但不代表如果是C/C等語言也不需要考慮class Solution(object): def isPalindrome(self, x): """ …

Pytorch基礎(一) —— tensorboard的應用

一、簡介與安裝方法 1.1 概念 Tensorboard 是 TensorFlow 的一個工具包&#xff0c;用于展示網絡圖、張量的指標變化和分布情況&#xff0c;如權重W、偏置B、卷積層數、全連接層數等參數&#xff0c;使用該工具可以方便觀察神經網絡訓練過程&#xff0c;分析學習模型訓練的效…

“RuntimeWarning: overflow encountered in ubyte_scalars像素加減運算溢出異常”原因以及解決辦法

轉載本文請注明詳細地址本文介紹了像素點相加減溢出的原因與解決方法 目錄 原因&#xff1a; 解決方法&#xff1a; 原因&#xff1a; 這個問題一般是會出現在圖像處理像素的加減中&#xff0c;出現的原因是因為圖片的像素一般是八位即最大值是256&#xff0c;最小值是0&…

二叉樹重建

一、已知先序遍歷和中序遍歷。求后序遍歷。http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId944 依據先序遍歷和中序遍歷還原二叉樹的主要思想&#xff1a; 1、先序遍歷序列的第一個元素必然是根節點&#xff0c;能夠由此獲取二叉樹的根節點。 2、依據根節點&…