写在前面 : 实验目的是为了教学交流,坚决抵制违法行为。

一、实验目的

搭建基于OpenBTS的基站,手机接入该基站,进行短信、语音等测试。

二、所用仪器

USRP B210 1台,天线2根,PC机1台

三、实验原理

OpenBTS使用通用软件无线电硬件(如USRP)作为射频前端,并提供了GSM协议栈的开源实现,通过语音交换软件(如Asterisk),可以接入公共网络。

四、实验步骤

本次实验使用USRP B210软件无线电硬件,操作系统为Ubuntu 14.04 64位或更高。OpenBTS安装过程中需要下载一些源码(主要从GitHub下载),请保证计算机正常联网,部分软件包安装可能需要科学,上网。

首先在此实验之前,确保你已经安装完成UHD+GNURadio,并能正常运行,安装过程可能比较慢,具体安装过程请参考链接:

https://www.cnblogs.com/moon1992/p/5781166.html?utm_source=itdadao&utm_medium=referral

如果在终端输入gnuradio-companion ,回车能够打开GNURadio软件,则表示安装成功;

在确保插入USRP设备之后,如果在终端执行   sudo uhd_usrp_probe  ,出现如下界面(来自网络),则表示UHD也正常运行;

开始本次实验

l  操作系统安装与更新

假定初始操作目录为/home/master/

l  OpenBTS安装

  1. 安装依赖:sudo apt-get install software-properties-common python-software-properties git
  2. 下载源码:
    1. mkdir openbts && cd openbts
    2. git clone https://github.com/RangeNetworks/dev.git
    3. cd dev
    4. ./clone.sh
  3. 选择分支:./switchto.sh master
  4. 编译:./build.sh B210
  5. 安装:sudo dpkg -i BUILDS/[编译成功时间]/*.deb 
    1. 建议先安装依赖deb包(liba53, libcoredumper),接下来安装应用deb包(range-asterisk, sipauthserve, smqueue, openbts),最后安装配置deb包(range-asterisk-config, range-configs)
    2. 若配置deb包的配置文件与已安装应用配置文件冲突,选择配置deb包的配置文件
    3. 如遇依赖问题,无法安装某些deb包,使用sudo apt-get -f install解决
  6. 启动/停止OpenBTS:
    1. sudo start/stop sipauthserve
    2. sudo start/stop smqueue
    3. sudo start/stop openbts
    4. sudo start/stop asterisk
  7. OpenBTS控制终端
    1. cd /OpenBTS && sudo ./OpenBTSCLI

打开的界面为:

l  解决编译遇到的问题

./build.sh B210 会遇到一些问题,以下逐一分析

  1. libzmq5 unable to install
    1. 原因:OpenBTS对Ubuntu 16.04的支持导致某些依赖版本较高
    2. 解决方法:把build.sh中的libzmq5改成libzmq3,重新执行./build.sh B210
  2. openbts boost/config.hpp: No such file or directory
    1. 解决方法:sudo apt-get install libboost-dev
  3. 'class uhd::rx_Streamer' has no member named 'issue_stream_cmd', 'class uhd::tx_Streamer' has no member named 'recv_async_msg'
    1. 解决方法:安装Ettus Ubuntu PPA中的libuhd-dev libuhd003 uhd-host

i.      sudo add-apt-repository ppa:ettusresearch/uhd

ii.     sudo apt-get update

iii.    sudo apt-get install libuhd-dev libuhd003 uhd-host

4. /usr/bin/ld: cannot find -lboost_system

    1. 解决方法:sudo ldconfig
    2. 备用方法:sudo apt-get install libboost-system1.54-dev

l  使用OpenBTS

注意事项:

  • OpenBTS及asterisk等应用默认开机启动,若系统安装其他GSM相关应用,如gr-gsm,注意sudo stop openbts,避连接B210时冲突
  • 若uhd_usrp_probe或sudo ./OpenBTSCLI提示无设备,拔插再试
  • 在使用之前,确保已经安装好UHD,并且能够正常运行。

参数设置

  • 调整增益:devconfig GSM.Radio.RxGain 10
  • 开放注册:config Control.LUR.OpenRegistration .*

     

注意:要查看基站,前提是关闭手机4G,选择2G,在手机 设置里 选取运营商 里面 关闭自动选择

常用命令

  • tmsis显示尝试连接本基站设备的IMSI及IMEI等信息

在搭建好基站之后显示连接的设备:

添加用户(手动添加完用户之后,已添加的设备之间就可以通话或者互相发短信)

在未设置开放注册情况下,需先将IMSI添加到OpenBTS数据库,才可以连接设备到网络

    • cd NodeManager(在系统环境下的终端操作,不要在打开openbts之后执行)
    • ./nmcli.py sipauthserve subscribers create  “[设备昵称]”  IMSI[IMSI值] [MSISDN(指定设备的手机号)]
    • 设备的IMSI值可由tmsis查看,IMSI值的写法是”IMSI”四个字母后紧跟着设备15位IMSI数字值
    • Mobile Subscriber ISDN (MSISDN)即手机号可随意指定

执行结果为(我添加了我的MI6,指定其手机号为456,添加了张大佬的honor,指定手机号为123):

之后已经添加的设备之间就可以互相通信。

l  短信

1.  Echo SMS

a.  连接到设备之后,收到echo信息

2. 直接互相发送短信

a.  基站内的两部终端可以互相发送短息,号码是添加用户时指定的手机号,我们在添加时指定了我的设备号码为456,另一个同学的设备号码为123.

3. 由基站给用户发短信

a.  由基站直接发给某个终端(由IMSI指定),发送者的号码可随意设定,短信内容暂不支持中文

b. OpenBTS> sendsms  [IMSI] [发送者号码] “短信内容”

模仿110给自己发送短信:

l  语音

1.   Test Tone Call (2602)

a.拨打号码2602,接通后声音的频率随信号质量变化

随着距离基站的远近,声音发生不同变化(当然是吱吱吱声啦~)。

2.  Echo Call (2600)

a. 拨打号码2600,接通后声音为发起方声音的回音

在我说完语音之后,可以明显的听到回音(类似串音的赶脚)。

3.  互拨电话

a. 基站内的两部终端进行正常语音通话,在添加完设备的前提下,两部手机互相通信,123-456

|  实验结果分析及回答问题(个人简单的思考,望大佬们指正)

1.所搭建的系统如何充当伪基站?

指定基站的运营商类型,获取设备的IMSI之后应该把IMSI添加进OpenBTS数据库。

2.在确保手机能接入该系统时需要预先对手机做何种操作?

首先要确保目标手机使用2G,同时基站的信号应该要比当前环境的正常运营商的信号强。实验中通过手动来连接伪基站,并没有自动完成连接。

3.如何检测伪基站的存在?

一般伪基站都会离用户比较近,或者由于它的功率比较小(相比于正常基站),所以可以拨打2602来根据距离伪基站的远近导致声音的变化来做简单的判断。而且伪基站肯定会对用户的手机信号进干扰,如果手机信号总是莫名其妙的自动连续切换,我认为也可以做为简单的判断依据。

此次实验中,主要的问题是环境的搭建(遇到的问题远超文中所提),刚开始在虚拟机上搭建,uhd+GNURadio安装好之后,Openbts总是显示无法找到设备,遂由和张大佬转向实体机操作,在U盘上做Ubuntu16的启动盘,猝!找了块硬盘继续,前前后后又开始重新部署环境,最后终于完成了无线实验之一,也是心累了哈哈哈。

基站搭建与IMSI捕获的更多相关文章

  1. 如何使用HackRF做一个简单的IMSI捕获器

    关于IMSI IMSI为国际用户识别码(International Mobile Subscriber Identity)的缩写,是用于区分蜂窝网络中不同用户的,在所在蜂窝网络中不重复的识别码.IMS ...

  2. Moto C118 基于 Osmocom-BB 和 OpenBTS 搭建小型GSM短信基站

    此文章PDF文档下载地址:点击下载 0x00 写在前面 大家应该都听说过摩托罗拉C118配合Osmocom-BB实现GSM网络下的短信拦截功能吧,在14年左右新出了一种玩法就是Osmocom-BB的s ...

  3. 伪基站,卒于5G——本质上是基于网络和UE辅助的伪基站检测,就是将相邻基站的CI、信号强度等信息通过测量报告上报给网络,网络结合网络拓扑、配置信息等相关数据,对所有数据进行综合分析,确认在某个区域中是否存在伪基站

    伪基站,卒于5G from:https://www.huxiu.com/article/251252.html?h_s=h8 2018-07-05 21:58收藏27评论6社交通讯     本文来自微 ...

  4. 5G信令(就是用户身份信息)——手机开机后,先从USIM中读取之前运营商分配的临时身份信息GUTI/TMSI,发送携带该身份信息的信令给基站,请求接入运营商网络。

    5G时代,跟IMSI-CATCHER SAY GOODBYE from:https://unicorn.360.com/blog/2018/04/18/GoodBye_5G_IMSI-Catcher/ ...

  5. AGPS 常见的两种定位模式

    SI 定位模式: 用户发起定位请求,辅助GPS 模块快速进行定位.时间在6秒-15秒之间. 这个方式能够有效的解决普通GPS 最快需要30秒时间获得卫星星历的搜星慢的问题,如果使用AGPS将通过中移动 ...

  6. 基于Docker的GoldenGate部署

    前言 Docker最近几年异常火爆,主要是因为其方便.快捷.轻量,相对于VM,它不需要占用太多资源,随时可以创建.删除,或在已有image上添加一些软件,再制作成另一个模板image供日后使用.Doc ...

  7. android smali代码注入 实战一

    有同学在通服里面干活,最近一直忙着4g基站搭建的干活,测试设备(android)测量移动网络数据,没有自动保存记录的功能,只能手动记录各种测试参数,不知道测试软件供应商是怎样想的,竟然不提供的这样的功 ...

  8. Module Federation原理剖析

    [转自团队掘金原文: https://juejin.im/post/6895324456668495880] 为什么需要学习webpack5 module Federation原理呢?因为EMP微前端 ...

  9. 如何用极路由+OpenWrt+RTL电视棒搭建一台SDR服务器,并隐秘地捕获和传输数据

    0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SD ...

随机推荐

  1. Windows系统版本判定那些事儿(有图,各种情况,很清楚)

    前言 本文并不是讨论Windows操作系统的版本来历和特点,也不是讨论为什么没有Win9,而是从程序员角度讨论下Windows获取系统版本的方法和遇到的一些问题.在Win8和Win10出来之后,在获取 ...

  2. 转一个git的命令

    Git远程操作详解   Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作. git clone git rem ...

  3. python算法与数据结构-单链表(38)

    一.链表 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括 ...

  4. Scala 学习之路(七)—— 常用集合类型之 Map & Tuple

    一.映射(Map) 1.1 构造Map // 初始化一个空map val scores01 = new HashMap[String, Int] // 从指定的值初始化Map(方式一) val sco ...

  5. Spring Boot2(五):使用Spring Boot结合Thymeleaf模板引擎使用总结

    一.Thymeleaf概述 一般来说,常用的模板引擎有JSP.Velocity.Freemarker.Thymeleaf . SpringBoot推荐的 Thymeleaf – 语法更简单,功能更强大 ...

  6. 【设计模式】行为型07备忘录模式(Memento Pattern)

    参考地址:http://www.runoob.com/design-pattern/memento-pattern.html 对原文总结调整,以及修改代码以更清晰的展示: 备忘录模式(快照模式):   ...

  7. PATB 1032 挖掘机技术哪家强(20)

    #include <cstdio> #include <vector> using namespace std; const int N = 100001; vector &l ...

  8. 深入理解Java类加载

    本文目的: 深入理解Java类加载机制; 理解各个类加载器特别是线程上下文加载器; Java虚拟机类加载机制 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最 ...

  9. 大白话五种IO模型

    目录 一.I/O模型介绍 二.阻塞I/O模型 2.1 一个简单的解决方案 2.2 该方案的问题 2.3 改进方案 2.4 改进后方案的问题 三.非阻塞I/O模型 3.1 非阻塞I/O实例 四.多路复用 ...

  10. BZOJ 1001:[BeiJing2006]狼抓兔子(最小割)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 题意:中文. 思路:很明显是最小割,转化为最大流做.一开始看那么多点,但还是试了一下,居然过了 ...