RTL-SDR 教程:使用 Airprobe 和 Wireshark 分析GSM网络【翻译】

原文:http://www.rtl-sdr.com/rtl-sdr-tutorial-analyzing-gsm-with-airprobe-and-wireshark/

注意:本文中涉及到的视频在国内需要翻墙才可以正常观看,请自行搭好梯子.

软件定义无线电 RTL-SDR 可以被用来分析手机GSM蜂窝网络信号,使用基于Linux的工具Airprobe 和 Wireshark。这个教程展示了在使用 RTL-SDR 的时候如何设置这些软件。

例子-使用RTL-SDR软件定义无线电分析GSM

这有一个例子的屏幕截图和视频,展示了你可以接受到数据的类型。你可以看到那些未加密的GSM数据包信息。你可能不会从加密的那部分看到任何敏感的信息,像声音或者文本数据。这个教程里没有覆盖解密的相关知识。

kalilinuxairprobewiresharkrtlsdr.png - 大小: 96.58 KB - 尺寸: 1920 x 1050 - 点击打开新窗口浏览全图

首先,你需要找到你所在区域GSM信号的频率。世界上大部分地区,主要的GSM波段是900MHz,美国是从850MHz开始。如果你有一个E4000 RTL-SDR,你也可以在世界上大部分地区的1800MHz波段寻找,美国使用的是1900MHz。打开SDRSharp,在900MHz附近扫描(或者850MHz)来找一个像下面瀑布图那样的信号。这是一个non-hopping GSM 下行信号。使用NFM,它将听到一些像下面例子里一样的声音。记下你找到的信号最强的GSM频率。

gsmnonhoppingwaterfall.png - 大小: 86.03 KB - 尺寸: 248 x 736 - 点击打开新窗口浏览全图

教程剩下的一部分都是在Linux下面执行的,我将假设你在Linux上使用terminal终端已经有了一定的基础。这个教程里面我使用了Kali Linux虚拟机。你可以在这下载kali linux虚拟机镜像,还有免费的免费的虚拟机player(VM player)。注意RTL-SDR不能在virtual box上正常工作,因为它usb的带宽能力很差,所以应该用VM player。

更新:注意,最新版本的Kali Linux已经预装了GNU Radio,所以允许你直接跳到安装Airprobe的版面。

在你的VMWare player中打开并登录Kali Linux。默认的用户名是root,密码是toor。

安装GNU Radio

为了让RTL-SDR工作,首先你将需要安装GNU Radio。这有一个很棒的视频教程演示了如何在Kali Linux上安装GNU Radio。注意,我在开始的时候已经在终端运行过apt-get update,在运行这些构建脚本之前,我发现了一些404错误。你也可以使用March Leech’s的安装脚本在任何Linux操作系统上安装最新版本的GNU Radio。安装命令可以在这找到。我推荐使用最新的源码进行安装。

更新:GNU Radio 的最新3.7版本不兼容AirProbe。你需要安装GNU Radio 3.6。然而,来自评论中(伟大)的neeo写了一个补丁来让AirProbe兼容GNU Radio 3.7。为了运行它,你需要把补丁文件放到airprobe的文件夹下,然后运行补丁

 -p1 < zmiana3.patch
安装Airprobe

Airprobe是将用来解码GSM信号的工具。我用了好几个教程来安装airprobe。首先是Freiberg大学的教程,我用他们的命令来确保airprobe安装时所需要的依赖。

安装基本的依赖

sudo apt-get –y install git-core autoconf automake libtool g++ python-dev swig libpcap0.8-dev

更新:感谢shyam jos,他在评论中告诉我们在Kali Linux (1.0.5)下面编译airprobe所需要的一些额外的依赖。如果你因为使用的新的预装了SDR工具的Kali 1.0.5而跳过安装GNURadio,使用下面的命令来安装额外的依赖。

sudo apt-get install gnuradio gnuradio-dev cmake git libboost-all-dev libusb-1.0-0 libusb-1.0-0-dev libfftw3-dev swig python-numpy

安装libosmocore

git clone git://git.osmocom.org/libosmocore.git
cd libosmocore
autoreconf –i
./configure
make
sudo make install
sudo ldconfig
克隆Airprobe

现在,我发现airprobe的git仓库是用的过时的 University tutorial (berlin.ccc.de),根本不能编译。我在这发现了可以编译的更新的airprobe git仓库。

使用下面的命令来克隆airprobe。

git clone git://git.gnumonks.org/airprobe.git
现在安装gsmdecode和gsm-receiver。

安装gsmdecode

cd airprobe/gsmdecode
./bootstrap
./configure
make
cd airprobe/gsm-receiver
./bootstrap
./configure
make
测试Airprobe

现在,cd到 airprobe/gsm-receiver/src/python 这个目录。首先我们要用一个GSM样本文件测试Airprobe。从这里获取样本文件然后在终端输入下面的命令。

cd airprobe/gsm-receiver/src/python
wget https://svn.berlin.ccc.de/projects/airprobe/raw-attachment/wiki/DeModulation/capture_941.8M_112.cfile

注意:教程和样本文件的连接有时候会挂掉。我已经在megaupload上面搞了一个镜像,把样本文件放到 airprobe/gsm-receiver/src/python 文件夹下。

现在,新开一个终端输入wireshark来打开wireshark。Kali Linux 里面已经安装了Wireshark。但是在其他类型的Linux上可能没有。在Airprobe把数据释放到一个UDP端口之前,我们必须设置Wireshark监听这个端口。方法是启动Wireshark后,首先设置捕获接口为lo(loopback)然后按开始。然后在过滤框输入gsmtap。浙江确保只显示airprobe GSM数据。

回到第一个进入到python目录的窗口,输入

./go.sh capture_941.8M_112.cfile
如果所有的东西都正确安装了,你现在应该能在wireshark中看到GSM样本数据。

接收一个实时的信道

使用RTL-SDR来解码一个实时的信道,在终端输入

./gsm_receive_rtl.py -s 1e6
一个新的窗口将会弹出来。调谐至一个你之前使用SDRSharp找到中心频率的已知non-hopping GSM信道。然后,在Wideband Spectrum窗口中点击GSM信道的正中间。几秒钟之内,应该会有源源不断的GSM数据显示在wireshark中。输入
./gsm_receive_rtl.py -h

可以获得更多的选项信息。这里使用的 -s 标志是设置采样率为 1.0MSPS ,当wideband spectrum窗口只有GSM 波峰的时候它看起来似乎比默认的1.8 MSPS工作的更好。

gsmeverythinggoing.png - 大小: 101.54 KB - 尺寸: 1920 x 1020 - 点击打开新窗口浏览全图

通过RTL-SDR捕获一个cfile(增加:13/06/13)

我找不到使用airprobe捕获我自己的cfile的方法。然而在使用./rtl_sdr 和 GNU Radio的时候我找到了方法。

未完待续。。。

本文链接:https://www.92ez.com/?action=show&id=53
!!! 转载请先联系non3gov@gmail.com授权并在显著位置注明作者和原文链接 !!! 小黑屋
提示:技术文章有一定的时效性,请先确认是否适用你当前的系统环境。

上一篇: Sniffing and Analyzing GSM Signals with GR-GSM【翻译】
下一篇: 分享一份常用的手机端页面开发的CSS reset

访客评论
#1
回复 xf4 2015-03-17, 5:00 PM
下午又编辑过了啊。加油!!
#2
回复 Richard 2015-03-17, 9:42 PM
我们看的是同一篇,作者最后也没有破解出来!只是抓到了GSMTAP,其实如果单纯用sdr抓GSMTAP,没有那么麻烦!
#3
回复 若璃 2015-06-17, 8:25 PM
博主能否上传一张含有【GSM数据显示在wireshark中】的照片。。。嘿嘿。。。赞一个
#4
回复 Hell-Phantom 2015-08-28, 4:41 PM
我觉得大有可为啊, 这是不是省了8部机器?
回复 GH05T 2015-09-12, 3:47 PM
@Hell-Phantom: 理论上是可以,实际操作就不清楚了
#5
回复 well 2016-01-25, 12:52 AM
貌似只有gsmtap,出不来gsm_sms???
发表评论

评论内容 (必填):