2019-09-17 | UNLOCK

2019-9-17-伪基站搭建OPENBSC+USRPB210

伪基站搭建

环境和前言

目前2G基站逐渐消失,本次实验纯粹为了研究,请勿用于非法用途!

系统环境:VM14+ubuntu16.04.3

硬件:USRP-B210

在查找伪基站搭建的资料时,发现了两个项目,OPENBTS和OPENBSC,搭建OPENBTS失败后决定改成搭建OPENBSC环境(OPENBTS最后失败在启动OPENBTS时找不到./transceiver,到相关路径下查看只找到transceiver.o和transceiver.c两个中间文件和源文件,估计是编译时候出错了,找不到相关错误也懒得看makefile文件所以就换成搭建OPENBSC)

这是OPENBSC的大体架构:

OPENBSC结构图

要想实现最基本的伪基站通信,就需要安装三个组件,OsmoTRX、OsmoBTS、OsmoNITB

安装OpenBSC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$mkdir openbsc
$cd openbsc
#下载OPENBSC源码
$ git clone git://git.osmocom.org/openbsc.git
#安装必要的环境库
$ sudo apt install libdbi-dev libdbd-sqlite3 libortp-dev build-essential libtool autoconf autoconf-archive automake git-core pkg-config libtalloc-dev libpcsclite-dev libpcap-dev
#在安装过程中报错No package 'gnutls' found,本来想下个gnutls,发现特别麻烦,仔细看了下文档,发现ubuntu16.10不用下的libgnutls28-dev和libsctp-dev在16.04可能需要下,所以需要添加两个命令
sudo apt-get install libgnutls28-dev
sudo apt-get install libsctp-dev
#之后按顺序安装libosmocore、libosmo-abis、libosmo-netif、openbsc,openbsc的区别是第二条命令是cd openbsc/openbsc
#以libosmocore为例:
#start---------
$git clone git://git.osmocom.org/libosmocore
$cd libosmocore
$autoreconf -fi
$./configure
$make -j5
$make check
$sudo make install
$sudo ldconfig
$cd ..
#end------------
#make install的时候创建出现了cannot create directory ‘/usr/local/include/osmocom’: Permission denied,可以用sudo make install解决
#安装openbsc时在autoreconf -fi步骤可能报错tests/bsc-nat-trie/Makefile.am:9: warning: source file '$(top_srcdir)/src/osmo-bsc_nat/bsc_nat_rewrite_trie.c' is in a subdirectory,不用管

ldconfig这个命令最近安装的时候经常见到,但我却不知道它的意思,这里记录一下:

为了让动态链接库为系统所共享,还需运行动态链接库的管理命令–ldconfig。ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令.

详细安装过程可以看https://osmocom.org/projects/cellular-infrastructure/wiki/Build_from_Source

安装 OsmoTRX

安装步骤:

1
2
3
4
5
6
7
8
9
$ sudo apt-get install --no-install-recommends libusb-1.0-0-dev libboost-dev
$ sudo apt-get install libuhd-dev uhd-host
$ git clone git://git.osmocom.org/osmo-trx
$ cd osmo-trx
$ autoreconf -i
#因为我用的usrp,所以使用--with-uhd
$ ./configure --with-uhd
$ make
$ sudo make install

如果是用usrp需要提前安装好UHD,详细安装过程可以看https://osmocom.org/projects/osmotrx/wiki/OsmoTRX

安装OsmoBTS

1
2
3
4
5
6
7
$ git clone git://git.osmocom.org/osmo-bts.git
$ cd osmo-bts
$ autoreconf -i
$ ./configure --enable-trx
$ make
$ make check
$ sudo make install

运行openBSC

安装好所有组件后需要打开四个窗口分别运行

1
2
3
4
$ sudo osmo-trx-uhd -C ./osmo-trx/doc/examples/osmo-trx-uhd/osmo-trx-uhd.cfg
$ sudo osmo-nitb -c ./cellular-network-configs/osmocom/openbsc.cfg
$ sudo osmo-bts-trx -c ./cellular-network-configs/osmocom/osmo-bts.cfg
$ sudo telnet localhost 4242

这里大概解释一下:

OsmoTRX作为BTS的物理层,主要负责接收SDR传过来的原始信号,然后解析成报文。

OsmoBTS相当于一个基站控制器,负责与OsmoTRX进行通信,完成基站的各种操作。

OsmoNITB负责与OsmoBTS通信,用户通过OsmoNITB对基站下达指令。

不加-c或者-C参数会调用默认配置,但默认配置总是出错(比如默认配置文件找不到,或者运行后不同组件之间无法正常通信),所以我找到github上的myriadrf/cellular-network-configs项目

虽然这个项目是基于limeSDR的,但我认为硬件只会影响到SDR与osmotrx之间的通信接口,所以osmotrx用初始的uhd配置文件,而其它两个用cellular-network-configs项目里的配置文件。

最后也是成功运行起来。

OPENBSC运行

如图是四个终端,左上是osmo-trx-uhd,右上是osmo-nitb,右下是osmo-bts-trx,左下是telnet。

使用openBSC

四个界面都开启后,手机就能接收到伪基站的信号,比如我将网络选择设为只限2G后成功搜索到01001 2G名称的伪基站信号,当手机连接伪基站后,会显示正在注册,也可能直接就注册失败,但这时候在osmo-nitb终端界面就会看到连接手机的imsi号,比如1234567890123456,这时候在telnet界面输入命令:

1
2
3
openBSC> en //记住要先en,有点像交换机,不同模式下能输入的命令不同
openBSC# subscriber imsi 1234567890123456 authorized 1 //使注册者进入网络
openBSC# subscriber imsi 1234567890123456 extension 5555 //设置注册者手机号

这时候手机就能在基站上注册成功了,同样步骤注册完两个账号后,就可以实现手机间的通信

1
openBSC# subscriber imsi 987654321043210 sms sender imsi 1234567890123456 send test123

这条命令能让987654321043210接收到1234567890123456的短信,短信内容是test123,短信发送人会显示是5555发送过来的。

具体命令可参考https://osmocom.org/projects/osmonitb/wiki/OsmoNITB

评论加载中