GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站

2023-05-16

每次看到黑客在网上发布的那些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 2016-03-18-raspbian-jessie-lite.zip
dd if=2016-03-18-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-0 libusb-1.0-0-dbg libusb-1.0-0-dev cmake automake  

连接Nuand bladeRF x40

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


root@raspberry:/home/pi# dmesg
[ 2092.437659] usb 1-1.2: New USB device found, idVendor=1d50, idProduct=6066
[ 2092.437679] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2092.437692] usb 1-1.2: Product: bladeRF
[ 2092.437704] usb 1-1.2: Manufacturer: Nuand
[ 2092.437716] usb 1-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.1-git-unknown
  libbladeRF version:         1.6.1-git-unknown

  Firmware version:           1.8.0
  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=900
Radio.C0=75
Identity.MCC=001
Identity.MNC=01
Radio.PowerManager.MaxAttenDB=35
Radio.PowerManager.MinAttenDB=35  

显然在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=5  

开启基站

执行以下命令开启基站


root@raspberry:/# yate -s  

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


...
Release 5.0.1 formal build date Apr 22 2016 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测试

参考资料

  • http://wiki.yatebts.com/index.php/Main_Page
  • https://github.com/Nuand/bladeRF/wiki/Setting-up-Yate-and-YateBTS-with-the-bladeRF
  • https://imjuanpablo.wordpress.com/2015/02/14/should-you-need-openbts-on-your-bladerf
  • https://evilsocket.net/2016/03/31/how-to-build-your-own-rogue-gsm-bts-for-fun-and-profit
  • http://linux.net.pk/blog/poor-mans-gsm-bts-nuands-bladerf-openbts-5-setup-instructions
  • https://discourse.criticalengineering.org/t/howto-gsm-base-station-with-the-beaglebone-black-debian-gnu-linux-and-a-usrp/56
  • https://github.com/Nuand/bladeRF/wiki/Minimalistic-build-and-run-test-for-OpenBTS-5
  • https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
  • http://www.circuitbasics.com/raspberry-pi-basics-setup-without-monitor-keyboard-headless-mode/

*原文链接:strcpy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • OpenBTS for bladeRF代码修改

    首先从https github com Nuand dev 上 git clone 下来下载打包的文件 xff0c 接着到本地dev目录下执行 clone sh下载OpenBTS以及它的其他依赖的安装包 这里在openbts文件夹Trasc
  • bladeRF:自己调制无线门控钥匙信号

    无线门控钥匙是如何编码的 xff1f 上一篇博客bladeRF无线门控钥匙信号重放小记已经录制了钥匙信号 xff0c 在inpectrum里对一帧信号进行分析后可看到 xff1a 嗯 xff0c 好吧 xff0c 这信号具体不知是个啥意思
  • GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站

    每次看到黑客在网上发布的那些GSM技术相关文章我都十分惊讶 然而在没有Software Defined Radios SDRs 之前 xff0c 玩GSM并不便宜 xff0c 除此之外想要好好玩你得下大功夫 拓展阅读 GSM BTS Hac
  • 工业以太网通讯Profinet协议详解

    Profinet是通过西门子控制系统被广泛使用的工业通信协议 是一种较新的 基于以太网的工业通讯协议 Profinet使用的物理接口是一个标准的RJ 45以太网插口 Profinet电缆如下图 通过它的绿色外皮很好辨认 虽然在某些情况下 可
  • 当 pppd 处于活动状态时向 SIM900 发送 AT 命令

    我有一个连接了 SIM900 GSM 附加板的 Raspberry Pi 我已成功与以下设备建立 GPRS 连接pppd依照指示本指南 针对不同的GSM模块 但步骤是相同的 我想定期发送一条 AT 命令 AT CCLK 到SIM900检查时
  • 在 iOS 5.1 中获取 CellID、MCC、MNC、LAC 和网络

    我需要在 iOS 5 1 iPhone 4S 中检索当前服务基站的 CellID MCC MNC LAC 和网络 GSM 3G 我知道此信息可用 因为我可以在 FieldTest 模式下看到它 拨打 3001 12345 后即可访问 我想它
  • 在 PHP 中通过 GSM 调制解调器建立和接听电话

    我有一个基于 php 构建的 CRM 客户关系管理软件 并在本地主机 Windows XP 系统 上运行 这包含我的客户列表 我希望能够直接从我的 CRM 致电这些客户并保留相同的日志 通话时间 通话时长和通话录音 对于来电 我应该能够将其
  • 通过 AT 命令终止语音通话

    我正在从事一个涉及 Arduino 和 TC35 GSM 模块的业余爱好项目 一切都很顺利 但我想知道是否有一个 AT 命令来终止语音通话 ATD 电话号码 因为我似乎无法在以下任何一个中找到一个我搜索过的文献 谢谢 戴夫 而 经典 命令A
  • Android 作为 SIP 转 GSM 网关

    很快我就可以使用 SIP 转 GSM 网关 因为我需要从德国向捷克共和国的手机拨打电话 因此 我考虑实施一个 现在 问题是 这样的解决方案是否已经存在 价格合理 是否可以使用可用的 Android API SDK 或 NDK 将 语音 流重
  • 信号强度中的负dbm是什么意思?

    当我们尝试获取附近的小区及其 LAC MNC 信号 以及使用其他 Android 应用程序时 时 我们得到的信号为负值 例如 85dbm 我该如何接受这个 我应该忽略 ve 符号并取绝对值还是 85 的强度小于 60 这将如何影响我的位置查
  • 使用 GSM 调制解调器接收短信

    我读到 GSM 调制解调器每分钟最多只能接收 30 条短信 如果您需要收到更多 您会怎么做 还有其他技术吗 我认为您可能想要与列出的答案不同的东西构建短信服务器的最佳实践是什么 https stackoverflow com questio
  • 同时使用 GPRS 和 GSM

    我正在尝试使用 GSM GPRS 调制解调器的 GPRS 功能将数据发送到远程服务器 但我无法这样做 我在 Arduino 论坛上发布了一个问题 但没有得到任何回复 这是问题的链接 https robotics stackexchange
  • 是否可以强制通过 Wifi 或 TMobile 网络进行网络流量?

    我想知道使用 G1 是否可以强制网络流量通过 Wifi 或通过 Cell GSM 网络 我需要强制应用程序通过塔式网络连接以获取一些登录信息 这可能吗 有人对这如何可能有任何想法吗 我正在尝试使用 Android SDK 在应用程序内完成此
  • 两部手机之间无法发送GSM数据吗?

    请详细告诉我为什么两部手机之间无法通过GSM传送数据 我几乎找不到关于这个问题的信息 这里有2点 首先 GSM 是一种移动语音电话系统 普通 GSM 不进行数据连接 GPRS 和 EDGE 是 GSM 网络的附加组件 允许发送数据 还有其他
  • SIM900 GSM/GPRS 未获得正确的 AT+CREG?回答

    我使用的是带有 IComsat SIM900 GSM GPRS 扩展板的 Arduino UNO 使用以下教程 Arduino 实时 GPS 追踪器 http www samaria me uk 2011 12 arduino live g
  • 使用 GsmCellLocation 的 getPsc() 始终返回 -1

    我成功得到了GsmCellLocation以及相关的 cid 和 lac 信息 但服务小区的 PSC 主扰码 总是以初始化值 1 返回 有人能得到服务小区的真实 PSC 值吗 telephonyManager TelephonyManage
  • 电话管理器值可靠且可变(cdma)吗?

    我想知道我的应用程序是否可以依赖 Android 上的电话值 例如国家 地区 MCC 等 我可以使用 setprop 在运行时更改它们吗 我尝试使用 setprop 进行更改 但似乎不起作用 据我了解 电话管理器是一个类 接口 代表 GSM
  • AT 命令 PHP

    我想使用 GSM 调制解调器从 php 发送消息 我已经配置了调制解调器并使用超级终端对其进行了测试 现在我想使用php执行AT命令 是否有可用的开源库或其他解决方案 由于我的 php 应用程序托管在 Apache Web 服务器上 因此我
  • GSM 调制解调器 USSD 检查余额时出现 CME 错误 100

    我正在尝试使用华为 E1550 3G 调制解调器通过 USSD 检查 SIM 卡余额 但当我总是发送 AT CUSD 1 100 15 I Get CME Error 100 是的 我的调制解调器支持 USSD 因为我有一个调制解调器的仪表
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 嵌入式工程师必读100本专业书籍

    很高兴这么多朋友阅读本篇嵌入式干货书籍汇总 xff0c 编者通过大数据调查 xff0c 经调查汇总如下 xff0c 希望对想要从事嵌入式行业或者已经是行业人士的朋友有所帮助 xff01 在调查过程中得到华清远见 星创客精英训练营的大力支持
  • 程序员工作中的一些建议

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 尽早地添加日志记录和错误处理 在开发新系统时 xff0c 我做的第一件事就是添加日志和错误处理 xff0c 因为这两者从一开始就非常有用 如果系统不能照常工作 xff0
  • VINS(七)estimator_node 数据对齐 imu预积分 vision

    首先通过vins estimator mode监听几个Topic xff08 频率2000Hz xff09 xff0c 将imu数据 xff0c feature数据 xff0c raw image数据 xff08 用于回环检测 xff09
  • C++多态性的总结

    抽空总结下对一直以来对C 43 43 多态性的一点个人理解 1 什么叫早绑定和晚绑定 早绑定指在对象声明的时候就和它的类型建立了关联 晚绑定是指代码在运行时再检查对象是否提供了我们所需要的方法和属性 静态关联 早绑定 和动态关联 晚绑定 2
  • 解决不能正常访问workerman的问题

    问题描述 xff1a 在阿里云ECS上部署了workerman的应用 xff08 ECS是专有网络 xff09 xff0c 在ECS安全组里已经允许workerman需要的全部端口 xff0c 但是外网一直不能正常打开 xff08 注 xf
  • 谈谈技术面试

    只要是招一个技术人员 xff0c 不管是初级的程序员还是高级软件工程师 xff0c 技术上的考核都必不可少 很荣幸作为面试官参与过公司的一些技术面试 xff0c 从中也体会到了一些东西 首先 xff0c 我觉得技术面试是需要讲究技巧的 xf
  • H3C交换机配置详解

    一 用户配置 lt H3C gt system view H3C super password H3C 设置用户分级密码 H3C undo super password 删除用户分级密码 H3C localuser bigheap 1234
  • PCL—综述—三维图像处理

    点云模型与三维信息 三维图像是一种特殊的信息表达形式 xff0c 其特征是表达的空间中三个维度的数据 和二维图像相比 xff0c 三维图像借助第三个维度的信息 xff0c 可以实现天然的物体 背景解耦 除此之外 xff0c 对于视觉测量来说
  • yolo 多摄像头_45元的WIFI摄像头应用之YOLO人体识别联动智能家居

    如果大家对智能家居比较感兴趣的话 xff0c 一定知道阻碍智能家居自动化发展的一个大问题就是 xff0c 房间里有没有人 xff0c 如果有人 xff0c 那人究竟在做些什么 xff0c 系统又该如何调整环境的照明 xff0c 温度甚至安防
  • Up Board介绍及上手体验

    Up Board是Intel联合华硕制作的一块性能强悍的卡片电脑 外观如下 xff1a 性能参数如下 xff1a CPU为Intel 凌动z8350系列处理器 xff0c 最高频率可达1 92Ghz xff0c 内核GPU是400核心显卡
  • 卫语句 减少if else的层数

    概述 卫语句是一种写代码的经验 为了减少if else的层数 为了提高可读性 xff0c 进而利于维护 案例 现在做一个需求 xff0c 判断一个人是否满足招聘要求 xff0c 招聘要求 xff1a 30岁以下的中国男性 体重100kg以下
  • ROS自定义msg、srv, 编译时找不到相关头文件

    在我们拥有多个package的时候 xff0c 我们定义了一个消息或者服务 xff0c 并在代码中使用了这个消息或者服务 如果是单独编译这个包 xff0c 编译 通过 但是如果是多个包一起编译 xff0c 就会出现找不到相关头文件的错误 原
  • zz (2006- 11-30更新:ISWC2006论文集已上传)本 版 相 关 资 源 (入门指南,资料软件,网址列表,会议期刊)!...

    原文连接 http bbs w3china org dispbbs asp boardID 61 2 amp ID 61 25 入门材料 注 xff1a 没有链接的文件 xff0c 请前往论坛 FTP xff08 地址用户名密码请看全站置顶
  • 怎么安装winubuntu双系统_双系统中如何重装ubuntu系统图文教程

    今天Win7之家小编就给大家介绍一种双系统中如何重装ubuntu系统图文教程 xff0c 大家之前也是有问过小编双系统中如何重装ubuntu系统 xff0c 但是小编没有及时回答 xff0c 现在小编就给大家介绍双系统中如何重装ubuntu
  • 远程 sshd提示:Server unexpectedly closed network connection

    远程sshd提示 xff1a Server unexpectedly closed network connection 重启后服务器效果也一样 xff0c 经过一段时间连接后 xff0c 终于连上远程了 之后新建一个远程连接 xff0c
  • ubuntu如何跑arm程序

    1 首先确定一间配置好arm linux 交叉编译器 xff0c 可以使用arm linux gcc 2 看示例代码hello c include lt stdio h gt int add int a int b int c 61 a 4
  • 事件引入和本质

    前言 继上一篇委托后 xff0c 我们继续来探讨事件 xff0c 因为委托和事件有着不可分割的关系 通过本文 xff0c 相信你会对事件有更深刻的认识和理解 xff0c 不信 xff0c 你看 xff01 概念 用event 关键字使您可以
  • onlstm时间复杂度_CNN-LSTM | 一种融合卫星-雨量站降水数据的时空深度融合模型

    1 xff0c 不同模型的降水融合性能 表2 2001 2005年全国796个气象站不同降水校正模型的RMSE RB MAE和CC 如表2所示 xff0c 将4种模型结果与原TRMM数据进行了定量比较 xff0c RMSE和MAE值越小表明
  • app 后端技术

    app 后端技术 一直以来工作的方向是web server xff0c 对app server没有什么了解 虽然没有接触过移动app开发 xff0c 但对app后端技术还是挺有探索欲望的 xff0c app应用和web应用在前端的用户习惯不
  • GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站

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