每次看到黑客在网上发布的那些GSM技术相关文章我都十分惊讶。然而在没有Software Defined Radios (SDRs)之前,玩GSM并不便宜,除此之外想要好好玩你得下大功夫。

拓展阅读

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

极客DIY:如何构建一台属于自己的基站

在阅读多篇有关GSM基站的文章之后,我注意到有关GSM基站这个话题有许多的不一致或者是讲的不够细致。

基于这一点,我决定写下今天这篇文章,进行手把手教学。

在文章开始之前,我要感谢所有开创GSM技术的黑客以及研究人员

尤其我要感谢Karsten Nohl(这哥们就是Ninja)出版的有关GSM Hacking的书籍(可以去看看他所使用的SS7协议),以及感谢Simone Margaritelli写下的“How To Build Your Own Rogue GSM BTS For Fun And Profit“(中文版本可以参考 极客DIY:如何构建一台属于自己的基站 )译文,让我第一次实现了GSM基站的搭建。

硬件及价格

A Nuand bladeRF x40 USB 3.0 Software Defined Radio. Price: $420.00

Two Quad-band Cellular Duck Antennas SMA. Price: $15,9

A Raspberry Pi 3 Model B Kit. Price: $69,99

A Anker Astro E7 26800mAh Portable Charger (optional). Price: $54,99

树莓派操作系统及初始配置

首先我们要做的就是下载,解压,安装RASPBIAN Jessie Lite(Version: March 2016, Release date: 2016-03-18, Kernel version 4.1)镜像到存储卡中。

wget -c http://vx2-downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2016-03-18/2016-03-18-raspbian-jessie-lite.zip
unzip ---raspbian-jessie-lite.zip
dd if=---raspbian-jessie-lite.img of=/dev/Your_MicroSD_Device

在SD卡中完成安装后就可以将其插入到树莓派中了,启动该设备并进行初始化配置。

注意:你需要知道树莓派分配的IP地址,在本文中树莓派分配的IP地址为192.168.0.10

blog@strcpy.info:/home/blog/$ ssh pi@192.168.0.10
pi@192.168.0.10's password: The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Apr 22 15:00:30 2016 from strcpy.info
pi@raspberry:~ $

注意:在树莓派中默认的用户名为pi,默认的密码为raspberry

现在你登录到树莓派中,使用超级用户运行配置命令

我们首先从文件系统开始:

pi@raspberry:~ $ sudo su
root@raspberrypi:/home/pi# raspi-config

树莓派重启之后你就可以开始安装依赖包的进程了。

安装依赖关系

你必须将这些必要的依赖包安装到环境中去

blog@strcpy.info:/home/blog/$ ssh pi@192.168.0.10
pi@raspberry:~ $ sudo su
root@raspberry:/home/pi# apt-get update
root@raspberry:/home/pi# apt-get install git telnet apache2 php5 libusb-1.0- libusb-1.0--dbg libusb-1.0--dev cmake automake

连接Nuand bladeRF x40

现在你就可以将bladeRF x40插入到树莓派的一个USB接口上,记得检查是否连接到设备。

root@raspberry:/home/pi# dmesg
[ 2092.437659] usb -1.2: New USB device found, idVendor=1d50, idProduct=
[ 2092.437679] usb -1.2: New USB device strings: Mfr=, Product=, SerialNumber=
[ 2092.437692] usb -1.2: Product: bladeRF
[ 2092.437704] usb -1.2: Manufacturer: Nuand
[ 2092.437716] usb -1.2: SerialNumber: 4c132c8ba43e0c4d922418a29a1ce207

Nuand bladeRF源代码

下载并安装 Nuand bladeRF源代码

root@raspberry:/home/pi# cd /tmp
root@raspberry:/tmp# wget -c https://github.com/Nuand/bladeRF/archive/master.zip
root@raspberry:/tmp# unzip master.zip
root@raspberry:/tmp# cd bladeRF-master
root@raspberry:/tmp/bladeRF-master# cd host
root@raspberry:/tmp/bladeRF-master/host# mkdir build
root@raspberry:/tmp/bladeRF-master/host# cd build
root@raspberry:/tmp/bladeRF-master/host/build# cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DINSTALL_UDEV_RULES=ON ../
root@raspberry:/tmp/bladeRF-master/host/build# make -j4
root@raspberry:/tmp/bladeRF-master/host/build# make install > install.log
root@raspberry:/tmp/bladeRF-master/host/build# ldconfig

Yate以及YateBTS (SubversiveBTS)源代码

为了创建GSM基站你需要下载并安装Yate和YateBTS,他们都是开源软件

感谢Simone Margaritelli,你不用去找兼容bladeRF x40的Yate和YateBTS版本。他在Github上分享了一份清单

root@raspberry:/tmp/bladeRF-master/host/build# cd /tmp
root@raspberry:/tmp# git clone https://github.com/strcpyblog/SubversiveBTS.git
root@raspberry:/tmp# cd SubversiveBTS/yate
root@raspberry:/tmp/SubversiveBTS/yate# ./autogen.sh
root@raspberry:/tmp/SubversiveBTS/yate# ./configure --prefix=/usr/local
root@raspberry:/tmp/SubversiveBTS/yate# make -j4
root@raspberry:/tmp/SubversiveBTS/yate# make install > install.log
root@raspberry:/tmp/SubversiveBTS/yate# ldconfig
root@raspberry:/tmp/SubversiveBTS/yate# cd /tmp/SubversiveBTS/yatebts
root@raspberry:/tmp/SubversiveBTS/yatebts# ./autogen.sh
root@raspberry:/tmp/SubversiveBTS/yatebts# ./configure --prefix=/usr/local
root@raspberry:/tmp/SubversiveBTS/yatebts# make -j4
root@raspberry:/tmp/SubversiveBTS/yatebts# make install > install.log
root@raspberry:/tmp/SubversiveBTS/yatebts# ldconfig

Nuand bladeRF x40固件

下载并安装 Nuand bladeRF x40 firmware v1.8.0

root@raspberry:/tmp/SubversiveBTS/yatebts# cd /tmp
root@raspberry:/tmp/# wget -c http://www.nuand.com/fx3/bladeRF_fw_v1.8.0.img
root@raspberry:/tmp/# bladeRF-cli -f bladeRF_fw_v1.8.0.img -v verbose

安装完后,从树莓派USB口拔下Nuand bladeRF x40,之后再重新插入。

现在我们是时候检测安装的bladeRF-cli, libbladeRF, Nuand bladeRF x40 firmware以及Nuand bladeRF x40 FPGA版本。

root@raspberry:/tmp/# bladeRF-cli -i
bladeRF> version bladeRF-cli version: 1.3.-git-unknown
libbladeRF version: 1.6.-git-unknown Firmware version: 1.8.
FPGA version: Unknown (FPGA not loaded) bladeRF>

从bladeRF退出,直接键入‘quit’

Network in a Box (NIB) Web GUI

在Apache WWW目录中给NIB Web GUI创建一个symlink,并赋予配置文件的写权限

root@raspberry:/tmp/# cd /var/www/html
root@raspberry:/var/www/html# ln -s /usr/local/share/yate/nib_web nib
root@raspberry:/var/www/html# chmod -R a+w /usr/local/etc/yate

配置GSM基站系统

现在你就可以通过浏览器访问Network in a Box (NIB) Web GUI,并开始基站的配置

注意:在浏览器键入http://192.168.0.10/nib

对于GSM基站系统,你需要设置以下值

Radio.Band=
Radio.C0=
Identity.MCC=
Identity.MNC=
Radio.PowerManager.MaxAttenDB=
Radio.PowerManager.MinAttenDB=

显然在YateBTS的公开版本中,设置“Identity.ShortName” 值是没有影响的。根据社区反馈信息,我们得知只有一个商业版本设置这个值是有影响的。

在OpenBTS中,设置这个值能够很好的完成工作。

因此设置“Identity.ShortName=SubversiveBTS”的值也是没有影响的

支持订阅者

你可能需要允许订阅者的手机连接到GSM基站

注意:* 正则表达式

Tapping选项

你可以激活GSM and GPRS,启用这些选项你可以通过GSMTAP的L1/L2接口抓取GSM (发信号) 和GPRS (发信号和通信)

至此,这个简化版的配置就完成了。

接下来你需要配置GPRS提供数据连接(互联网)

相信我,GPRS的数据连接非常慢

配置GPRS BTS Operability

首先我们需要使用IPTABLES配置GPRS的网络连接

root@raspberry:/var/www/html# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

注意:改变树莓派连接的wlan0网络接口

对于GPRS operability,我们需要设置以下值

Firewall.Enable=no firewall
MS.IP.Base=192.168.1.20
MS.IP.MaxCount=

开启基站

执行以下命令开启基站

root@raspberry:/# yate -s

如果所有配置都正确,你可以看到如下信息

...
Release 5.0. formal build date Apr rev
Starting MBTS...
Yate engine is initialized and starting up on GhostBTS
RTNETLINK answers: File exists
MBTS ready

连接手机

你要手动在网络列表中选择“Test ID PLMN 1-1”网络ID来连接到GSM基站

在本文中,网络ID为“Test ID PLMN 1-1”是由于我们之前在“Identity.MCC =001”和 “Identity.MNC =01”中进行设置的

注意:MCC 和 MNC的值可以在这里找到

手机成功连接到GSM基站之后,会通过短信发送一条包含分配号码的欢迎信息。

注意:你可以通过编辑/usr/local/share/yate/scripts/nib.js文件修改欢迎信息

订阅者

在本节中你可以详细管理基站的订阅者

在这里你可以看到在线的订阅者

真实测试

在“Test ID PLMN 1-1” GSM基站上进行短信测试

在“Test ID PLMN 1-1”GSM基站上进行通话测试

在“Test ID PLMN 1-1”GSM基站上进行GPRS测试

参考资料

*原文链接strcpy

GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站的更多相关文章

  1. GSM Hacking Part① :使用SDR扫描嗅探GSM网络

    0×00 写在开头 近期,发现Crazy Danish Hacker在YouTuBe发布了一个挺不错的教程视频:使用SDR嗅探监听GSM网络的通信流量(GSM Sniffing Teaser – So ...

  2. 使用GnuRadio+OpenLTE+SDR搭建4G LTE基站(上)

    0×00 前言 在移动互联网大规模发展的背景下,智能手机的普及和各种互联网应用的流行,致使对无线网络的需求呈几何级增长,导致移动运营商之间的竞争愈发激烈.但由于资费下调等各种因素影响,运营商从用户获得 ...

  3. GSM Hacking Part② :使用SDR捕获GSM网络数据并解密

    0×00 在文章第一部分 GSM Hacking Part① :使用SDR扫描嗅探GSM网络 搭建了嗅探GSM流量的环境,在第二部中,我们来讨论如何捕获发短信以及通话过程中的流量,从捕获到的数据中解密 ...

  4. 树莓派VNC搭建相关教程+Ubuntu16.04连接vncserver灰屏问题!

    树莓派VNC搭建相关教程: 为了节省money,于是我决定用VNC界面来代替显示器,为后面做C++ Qt以及Python Qt开发打下基础,我别无选择!下面开始进入正题: 1-- 下载VNC-View ...

  5. 树莓派3B搭建NODE-RED运行环境并构建数据流

    树莓派3B搭建NODE-RED运行环境并构建数据流 树莓派搭建Node-RED环境 树莓派自2015年开始是默认就带NODE-RED的,但是如今已是2018年:)自带的版本已经很老了,可通过下面的命令 ...

  6. GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站

    引文 如果你已经购买了Nuand(官方)BladeRF x40,那么就可以在上面运行OpenBTS并可以输入一些指令来完成一些任务.一般来说HackRF,是一款覆盖频率最宽的SDR板卡.它几乎所有的信 ...

  7. GSM Hacking:如何对GSM/GPRS网络测试进行测试

    写在前面 这里需要介绍的是GSM / GPRS网络测试的一些方法,随着现在硬件设备连网现象的普遍存在,例如智能电表.自动变速箱控制单元(TCU).POS机.报警系统等.这些设备通常需要与网络连接,GS ...

  8. 树莓派上搭建基于Python+web.py+fastcgi+lighttpd的网站

    最近在网上淘了一个树莓派,什么是树莓派?这里是他的官方网站你可以去看看. 简单的说就是一块使用了ARM11的CPU,具有256MB或512MB内存的具有两个USB接口,一个RJ45接口,HDMI输出和 ...

  9. 树莓派上搭建NAS

    首先可以参考看看  搭建家庭 NAS 服务器有什么好方案?下载做NAS的系统也比较多,如FreeNAS.Openfiler等免费系统,或购买其它收费NAS系统.根据自己的需要从硬件到软件的搭建过程.参 ...

随机推荐

  1. Python 练习 12

    #!/usr/bin/python # -*- coding: UTF-8 -*- year = int(raw_input('year:\n')) month = int(raw_input('mo ...

  2. JavaWeb基础:HTTP协议和基于Restful的架构

    HTTP介绍 HTTP协议是互联网上应用最广泛的协议,它是一种无状态的数据传输协议,规定了数据请求方和数据响应方的数据传输方式:使用HTTP协议可以跨平台,跨语言的进行数据传输和展示. 目前的Web应 ...

  3. (21)odoo中的QWeb模板引擎

    -----------------更新时间18:13 2016-04-05 星期二-----------------* 概述    QWeb是odoo主要模板引擎,采用xml表述,最后生成HTML文件 ...

  4. Eclipse上安装GIT插件EGit

    一.Eclipse上安装GIT插件EGit Eclipse的版本eclipse-java-helios-SR2-win32.zip(在Eclipse3.3版本找不到对应的 EGit插件,无法安装) E ...

  5. PLSQL DEVELOPER 连接远程数据库 OCI客户端安装方法

    安装使用过PLSQL Dev都知道,要连接数据库,必须配置TNS(Transparence Network Substrate),而直接安装PLSQL Dev 之后,本机是没有Oracle HOME的 ...

  6. 10 vi简介(重点)

    1.为什么学习vi? vi很多系统都预装,如果我们的系统没有图像界面,可以使用vi vi是轻量级且执行快速的编辑器 2.vi的几种模式 命令模式.插入模式.底行模式 1) 命令行模式(command ...

  7. FaceBook Twitter实习生简历求内推

    写在博客里面吧. 有一个朋友,男,博士在读,研究方向为图像处理,计算机视觉相关. 想在在读期间有一些海外实习经历.不知道哪位博友,有相关的人脉,求内推啊.内推成功的话请吃大餐,哈哈!

  8. 如何采集所有QQ群成员?

    首先,你需要有一个CHROME浏览器其实,你要装一个叫REGEX SCRAPER的插件 在qun.qzone.qq.com打开你的QQ群页面-查看群成员 点击REGEX 插件, 粘贴上这个代码 tex ...

  9. tab切换类

    /* * 传入id和点击时的回调函数,可以传第三个参数,就是当前tab的类名默认tabon * 主要完成tab的外观,就是当前tab的切换,完成外观切换后,会调用传入的回调函数 */ function ...

  10. POJ 1719 二分图最大匹配(记录路径)

    Shooting Contest Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4097   Accepted: 1499 ...