此文章PDF文档下载地址:点击下载

0x00 写在前面

大家应该都听说过摩托罗拉C118配合Osmocom-BB实现GSM网络下的短信拦截功能吧,在14年左右新出了一种玩法就是Osmocom-BB的sylvain/testing分支固件可以配合OpenBTS,,借助周围信号强度较大的ARFCN伪造出一个新的基站信号。不过由于摩托罗拉C118的问题,无法实现语音通话功能只可以发送短信(默认只可以发送英文短信,修改源码可以实现发送中文短信)

以下内容将会指导你怎样用Osmocom-bb兼容的手机(如c115,c118,c123等)当作OpenBTS的无线收发机.

0x01 环境

已顺利编译运行过Osmocombb的可继续往下看,否则请参考官方链接优秀文章

首先安装libosmo-dsp库

先下载

$ git clone git://git.osmocom.org/libosmo-dsp.git

编译前需要安装fftw3

$ apt-get install libfftw3- libfftw3-dev libfftw3-doc

然后编译

$ cd libosmo-dsp
$ autoreconf -i
$ ./configure
$ make
$ make install

0x02 Osmocom-BB

采用sylvain/testing分支(具体可看WIKI

先下载

$ git clone git://git.osmocom.org/osmocom-bb.git

再切换分支编译

$ cd osmocom-bb
$ git checkout sylvain/testing

默认编译出的版本发送信号相关的功能是被注释掉的,用mobile启动layer23后会一直于搜信号的过程中,因为无法发送信号。

如果需要进行实网测试需要打开src/target/firmware/Makefile文件中的编译开关

把osmocom-bb/src/target/firmware下的Makefile中的DCONFIG_TX_ENABLE宏打开:

# Uncomment this line if you want to enable Tx (Transmit) Support.
#CFLAGS += -DCONFIG_TX_ENABLE

然后到src目录下编译

$ cd src make HOST_layer23_CONFARGS=--enable-transceiver

0x03 OpenBTS

这里使用的OpenBTS的版本是OpenBts-p2.8(嫌手动编译麻烦的可以找我要DEB安装的教程),首先安装依赖

$ sudo apt-get install autoconf libtool libosip2-dev libortp-dev libusb-1.0--dev g++ sqlite3 libsqlite3-dev erlang libreadline6-dev libncurses5-dev

下载源码

$ svn co http://wush.net/svn/range/software/public(svn版本必须 <= 1.7)

然后编译安装(有不懂的可以前往WIKI查看详细资料)

$ cd a53/trunk
$ make install $ cd openbts/trunk
$ autoreconf -i
$ ./configure
$ make
$ mkdir /etc/OpenBTS
$ sqlite3 -init ./apps/OpenBTS.example.sql /etc/OpenBTS/OpenBTS.db ".quit" $ mkdir -p /var/lib/asterisk/sqlite3dir
$ cd subscriberRegistry/trunk
$ make
$ sqlite3 -init subscriberRegistry.example.sql /etc/OpenBTS/sipauthserve.db ".quit" $ cd smqueue/trunk
$ autoreconf -i
$ ./configure
$ make
$ sqlite3 -init smqueue/smqueue.example.sql /etc/OpenBTS/smqueue.db ".quit"

安装OpenBTS后按照WIKI的说明配置/etc/OpenBTS/OpenBTS.db

$ apt-get install sqlite3 sqliteman(ubuntu系统安装,Kali自带sqlitebrowser无需安装)

然后在终端内输入sqliteman启动软件,打开/etc/OpenBTS/目录下的OpenBTS.db文件

Control.GSMTAP.TargetIP = 127.0.0.1
GSM.Radio.NeedBSIC =
GSM.Radio.Band =
GSM.CellSelection.Neighbors =(留空)
GSM.RACH.MaxRetrans =
GSM.RACH.TxInteger =
GSM.Radio.C0 = (发射的频点,数值1-124之间)
Control.LUR.OpenRegistration =.*

0x04 刷入固件

用osmocon程序将trx.compalram.bin刷入手机

命令

$ sudo ./osmocon -p /dev/ttyUSB0 -m c123xor ../../target/firmware/board/compal_e88/trx.compalram.bin

0x05 开始执行

到OpenBTS/apps目录下,将transceiver重命名为transceiver.bak新建脚本文件transceiver内容如下

#!/bin/bash exec <your path to osmocom-bb>/src/host/layer23/src/transceiver/transceiver <ARFCN>

<your path to osmocom-bb>替换成你自己的路径,<ARFCN>替换成附近信号最强的ARFCN号

赋予执行权限

chmod +x transceiver

然后开4个终端窗口分别执行

$ cd openbts/trunk/apps
$ ./OpenBTS

$ cd subscriberRegistry/trunk
$ ./sipauthserve(开启注册服务)

$ cd smqueue/trunk/smqueue/
$ ./smqueue(开启短信功能)

$ cd openbts/trunk/apps
$ ./OpenBTSCLI(打开OpenBTS控制台)

如果一切运行顺利打开手机进入 设置-移动网络-网络运营商 即可看到我们创建的基站

在OpenBTSCLI的终端窗口可以输入 help 查看命令帮助

输入 tmsis 可以查看当前基站用户的IMSI

输入 sendsms IMSI 电话号码 短信内容  即可发送任意显示号码的短信

0x06 结语

一入GSM深似海,作者不是学通信的,只是业余爱好,第一次写文章投稿,文中不免纰漏和不妥之处,有任何建议或意见欢迎留言!

0x07参考资料

http://osmocom.org/projects/baseband/wiki/Transceiver
https://wush.net/trac/rangepublic/wiki/BuildInstallRun
https://wush.net/trac/rangepublic/wiki/DebOpenBTS
http://bb.osmocom.org/trac/blog/PHD2012
http://www.h-online.com/open/news/item/29C3-Budget-mobile-turns-into-GSM-base-station-1775204.html
http://blog.0x7678.com/2014/03/osmocombbopenbtsgsmcalypso.html

0x08效果演示

http://www.cnblogs.com/k1two2/p/5176030.html(此文章中含视频演示)

Moto C118 基于 Osmocom-BB 和 OpenBTS 搭建小型GSM短信基站的更多相关文章

  1. C118+Osmocom-bb+Openbts搭建小型基站

    演示图片: 演示视频: 交流论坛:GsMsEc 交流Q群:

  2. R 基于朴素贝叶斯模型实现手机垃圾短信过滤

    # 读取数数据, 查看数据结构 df_raw <- read.csv("sms_spam.csv", stringsAsFactors=F) str(df_raw) leng ...

  3. 基于认证的代理平台搭建配置squid-20130730

    基于认证的代理平台搭建配置squid-20130730 功能:通过squid代理实现 (1)基于用户名密码认证的出口ip路由选择 (2)基于client源ip的出口ip路由选择 (3)基于连接本机ip ...

  4. 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【六】【引入bootstrap前端框架】

    https://blog.csdn.net/linzhefeng89/article/details/78752658 基于springboot+bootstrap+mysql+redis搭建一套完整 ...

  5. Ubuntu 基于Docker的TensorFlow 环境搭建

    基于Docker的TensorFlow 环境搭建 基于(ubuntu 16.04LTS/ubuntu 14.04LTS) 一.docker环境安装 1)更新.安装依赖包 sudo apt-get up ...

  6. Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具

    Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具 A simple CLI for scaffolding React.js ...

  7. EOS Dapp开发(1)-基于Docker的开发环境搭建

    随着EOS主网的上线,相信基于EOS的Dapp开发会越来越多,查阅了很多资料相关的开发资料都不是很多,只能自己摸索,按照网上仅有的几篇教程,先git clonehttps://github.com/E ...

  8. Windows下基于http的git服务器搭建-gitstack

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Windows下基于http的git服务器搭建-gitstack     本文地址:http: ...

  9. 基于Python的Appium环境搭建合集

    自动化一直是测试圈中的热聊,也是大家追求的技术方向.在测试中,往往回归测试也是测试人员的“痛点”.对于迭代慢.变更少的功能,就能用上自动化来替代人工回归,减轻工作量. 问题 在分享环境搭建之前,先抛出 ...

随机推荐

  1. jQuery带tab切换搜索框样式代码

    效果体验:http://hovertree.com/texiao/jquery/23/ 代码如下,保存到HTML文件也可以查看效果: <!DOCTYPE html> <html la ...

  2. 标准BST二叉搜索树写法

    本人最近被各种数据结构的实验折磨的不要不要的,特别是代码部分,对数据结构有严格的要求,比如写个BST要分成两个类,一个节点类,要给树类,关键是所以操作都要用函数完成,也就是在树类中不能直接操作节点,需 ...

  3. 原生JS:Function对象(apply、call、bind)详解

    Function对象(apply.call.bind) 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5850180.html 本文参考MDN做的 ...

  4. JS特效之Tab标签切换

    在我们平时浏览网站的时候,经常看到的特效有图片轮播.导航子菜单的隐藏.tab标签的切换等等.这段时间学习了JS后,开始要写出一些简单的特效.今天我也分享一个简单tab标签切换的例子.先附上代码: HT ...

  5. 解决JqueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug

    前些日子不是在做 使用Jquery-UI实现一次拖拽多个选中的元素操作嘛,在持续完善这个组件时遇到了一个关于拖放排序的bug.今天就着图片和代码重现一下,也顺便告诉大家如何解决这个问题. 首先先上图描 ...

  6. NodeJS(node.exe, npm, express, live-server)安装

    1.下载node.exe 下载https://nodejs.org/en/download/current/ 创建D:\GreenSoftware\NodeJS目录,并将node.exe放到目录中. ...

  7. mysql 基本

    mysql -u root -p 输入密码进入数据库 show database; 查询当前库 use databasename 切换到某个库 show tables; 列出当前数据库的表 desc ...

  8. [css]我要用css画幅画(五)

    接着之前的[css]我要用css画幅画(四), 这次我给小明和静静增加了对话,用了简单的动画效果. github:https://github.com/bee0060/Css-Paint , 完整代码 ...

  9. SSIS,参数坑

    首先我有一个这样的饿存储过程, @procGuid 这个是 存放 guId的字符串 当如传入  0 的时候, @procGuid 会赋值,并且返回. ) ,@procGuid output print ...

  10. 在数组中找出x+y+z=0的组合

    就是找x+y=-z的组合 转化为找出值为-z满足x+y=-z的组合 解法一: 为了查找,首先想到排序,为了后面的二分,nlogn, 然后x+y的组合得n^2的复杂度,加上查找是否为-z,复杂度为nlo ...