• 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

  • 相关阅读:
    java 多线程学习(一)
    解决安卓微信浏览器刷新问题
    sublime text3 配置tab为4个空格
    React 错误Each child in an array or iterator should have a unique “key” prop
    git filename to long问题解决
    JS获取URL参数 方法
    CSS超出2行省略号
    JS判断是否为安卓orIOS
    获取移动设备真实宽高
    微信分享朋友圈监听(PHP)
  • 原文地址:https://www.cnblogs.com/k1two2/p/5379655.html
Copyright © 2020-2023  润新知