<a href="http://images2015.cnblogs.com/blog/640760/201604/640760-20160425191307330-1396307915.jpg" target="_blank"></a>
每次看到黑客在网上发布的那些GSM技术相关文章我都十分惊讶。然而在没有Software Defined Radios (SDRs)之前,玩GSM并不便宜,除此之外想要好好玩你得下大功夫。
拓展阅读
<a href="http://www.cnblogs.com/k1two2/p/5379655.html" target="_blank">GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站</a>
<a href="http://www.cnblogs.com/k1two2/p/5358866.html" target="_blank">极客DIY:如何构建一台属于自己的基站</a>
在阅读多篇有关GSM基站的文章之后,我注意到有关GSM基站这个话题有许多的不一致或者是讲的不够细致。
基于这一点,我决定写下今天这篇文章,进行手把手教学。
在文章开始之前,我要感谢所有开创GSM技术的黑客以及研究人员
<a href="http://images2015.cnblogs.com/blog/640760/201604/640760-20160425191834298-1925574669.jpg" target="_blank"></a>
硬件及价格
树莓派操作系统及初始配置
<a href="http://images2015.cnblogs.com/blog/640760/201604/640760-20160425192033017-623401768.jpg" target="_blank"></a>
首先我们要做的就是下载,解压,安装RASPBIAN Jessie Lite(Version: March 2016, Release date: 2016-03-18, Kernel version 4.1)镜像到存储卡中。

在SD卡中完成安装后就可以将其插入到树莓派中了,启动该设备并进行初始化配置。
注意:你需要知道树莓派分配的IP地址,在本文中树莓派分配的IP地址为192.168.0.10
<a></a>
注意:在树莓派中默认的用户名为pi,默认的密码为raspberry
现在你登录到树莓派中,使用超级用户运行配置命令
我们首先从文件系统开始:
<a href="http://images2015.cnblogs.com/blog/640760/201604/640760-20160425192452377-653506595.jpg" target="_blank"></a>
<a href="http://images2015.cnblogs.com/blog/640760/201604/640760-20160425192459720-264830167.jpg" target="_blank"></a>
树莓派重启之后你就可以开始安装依赖包的进程了。
安装依赖关系
你必须将这些必要的依赖包安装到环境中去
连接Nuand bladeRF x40
现在你就可以将bladeRF x40插入到树莓派的一个USB接口上,记得检查是否连接到设备。
Nuand bladeRF源代码
下载并安装 Nuand bladeRF源代码
Yate以及YateBTS (SubversiveBTS)源代码
为了创建GSM基站你需要下载并安装Yate和YateBTS,他们都是开源软件
感谢Simone Margaritelli,你不用去找兼容bladeRF x40的Yate和YateBTS版本。他在Github上分享了一份清单
Nuand bladeRF x40固件
下载并安装 Nuand bladeRF x40 firmware v1.8.0
安装完后,从树莓派USB口拔下Nuand bladeRF x40,之后再重新插入。
现在我们是时候检测安装的bladeRF-cli, libbladeRF, Nuand bladeRF x40 firmware以及Nuand bladeRF x40 FPGA版本。
从bladeRF退出,直接键入‘quit’
Network in a Box (NIB) Web GUI
在Apache WWW目录中给NIB Web GUI创建一个symlink,并赋予配置文件的写权限
配置GSM基站系统
现在你就可以通过浏览器访问Network in a Box (NIB) Web GUI,并开始基站的配置
对于GSM基站系统,你需要设置以下值
显然在YateBTS的公开版本中,设置“Identity.ShortName” 值是没有影响的。根据社区反馈信息,我们得知只有一个商业版本设置这个值是有影响的。
在OpenBTS中,设置这个值能够很好的完成工作。
因此设置“Identity.ShortName=SubversiveBTS”的值也是没有影响的
支持订阅者
你可能需要允许订阅者的手机连接到GSM基站
注意:* 正则表达式
Tapping选项
你可以激活GSM and GPRS,启用这些选项你可以通过GSMTAP的L1/L2接口抓取GSM (发信号) 和GPRS (发信号和通信)
至此,这个简化版的配置就完成了。
接下来你需要配置GPRS提供数据连接(互联网)
相信我,GPRS的数据连接非常慢
配置GPRS BTS Operability
首先我们需要使用IPTABLES配置GPRS的网络连接
注意:改变树莓派连接的wlan0网络接口
对于GPRS operability,我们需要设置以下值
开启基站
执行以下命令开启基站
如果所有配置都正确,你可以看到如下信息
连接手机
你要手动在网络列表中选择“Test ID PLMN 1-1”网络ID来连接到GSM基站
在本文中,网络ID为“Test ID PLMN 1-1”是由于我们之前在“Identity.MCC =001”和 “Identity.MNC =01”中进行设置的
注意:MCC 和 MNC的值可以在这里找到
手机成功连接到GSM基站之后,会通过短信发送一条包含分配号码的欢迎信息。
<a href="http://images2015.cnblogs.com/blog/640760/201604/640760-20160425193750736-810660968.jpg" target="_blank"></a>
注意:你可以通过编辑/usr/local/share/yate/scripts/nib.js文件修改欢迎信息
<a href="http://images2015.cnblogs.com/blog/640760/201604/640760-20160425193817455-1529684666.jpg" target="_blank"></a>
订阅者
在本节中你可以详细管理基站的订阅者
在这里你可以看到在线的订阅者
<a href="http://images2015.cnblogs.com/blog/640760/201604/640760-20160425193910939-356999938.jpg" target="_blank"></a>
真实测试
在“Test ID PLMN 1-1” GSM基站上进行短信测试
在“Test ID PLMN 1-1”GSM基站上进行通话测试
在“Test ID PLMN 1-1”GSM基站上进行GPRS测试
参考资料
<a href="http://wiki.yatebts.com/index.php/Main_Page">http://wiki.yatebts.com/index.php/Main_Page</a>
<a href="https://github.com/Nuand/bladeRF/wiki/Setting-up-Yate-and-YateBTS-with-the-bladeRF">https://github.com/Nuand/bladeRF/wiki/Setting-up-Yate-and-YateBTS-with-the-bladeRF</a>
<a href="https://imjuanpablo.wordpress.com/2015/02/14/should-you-need-openbts-on-your-bladerf">https://imjuanpablo.wordpress.com/2015/02/14/should-you-need-openbts-on-your-bladerf</a>
<a href="https://evilsocket.net/2016/03/31/how-to-build-your-own-rogue-gsm-bts-for-fun-and-profit">https://evilsocket.net/2016/03/31/how-to-build-your-own-rogue-gsm-bts-for-fun-and-profit</a>
<a href="http://linux.net.pk/blog/poor-mans-gsm-bts-nuands-bladerf-openbts-5-setup-instructions">http://linux.net.pk/blog/poor-mans-gsm-bts-nuands-bladerf-openbts-5-setup-instructions</a>
<a href="https://discourse.criticalengineering.org/t/howto-gsm-base-station-with-the-beaglebone-black-debian-gnu-linux-and-a-usrp/56">https://discourse.criticalengineering.org/t/howto-gsm-base-station-with-the-beaglebone-black-debian-gnu-linux-and-a-usrp/56</a>
<a href="https://github.com/Nuand/bladeRF/wiki/Minimalistic-build-and-run-test-for-OpenBTS-5">https://github.com/Nuand/bladeRF/wiki/Minimalistic-build-and-run-test-for-OpenBTS-5</a>
<a href="https://www.raspberrypi.org/documentation/installation/installing-images/linux.md">https://www.raspberrypi.org/documentation/installation/installing-images/linux.md</a>
<a href="http://www.circuitbasics.com/raspberry-pi-basics-setup-without-monitor-keyboard-headless-mode/">http://www.circuitbasics.com/raspberry-pi-basics-setup-without-monitor-keyboard-headless-mode/</a>
本文转自 K1two2 博客园博客,原文链接: http://www.cnblogs.com/k1two2/p/5432437.html ,如需转载请自行联系原作者