作者:冰尘
注:本文参与现金奖励,未经允许禁止转载
HackRF 无线电操作教程/3G物联网中某些不可描述功能
图片1.png (126.07 KB, 下载次数: 77)
2017-8-9 11:10 上传
图片2.png (117.4 KB, 下载次数: 56)
2017-8-9 11:10 上传
图片3.png (160.91 KB, 下载次数: 70)
2017-8-9 11:10 上传
图片4.png (115.79 KB, 下载次数: 62)
2017-8-9 11:10 上传
利用ss7号信令搞定一些不可描述的功能。
Hackrf的无线电操作大部分是在GNUradio上完成的,所以我们要进行编译gnuradio以及对应的hackrf配套设备rtl-sdr即可。
注:kali下直接 sudo apt-get install gnuradio gqrx rtl-sdr
PyBOMBS (Python Build Overlay Managed Bundle System) 是 GNU Radio 的包管理系统。
从头开始一键安装GNU Radio在Dell 暗影精灵上实测大约只需要20分钟,下载非常快,主要的时间就剩编译了。 而且安装的都是最新的版本。
另外,PyBOMBS会帮你解决依赖的问题,省得每次敲一堆make cmake命令了。
以前自己拖代码回来经常会被重置,而且耗时要几个小时。
警告:以下部分内容带有攻击性,本次测试经过授权操作,学习者请务必在法律法规允许的范围内进行测试学习。
安装实例
[Shell] 纯文本查看 复制代码sudo pip install pybombs
rm -rf ~/.pybombs
pybombs recipes add gr-recipes git+[url]https://mirrors.tuna.tsinghua.edu.cn/pybombs/recipes/gr-recipes.git[/url]
pybombs recipes add gr-etcetera git+[url]https://mirrors.tuna.tsinghua.edu.cn/pybombs/recipes/gr-etcetera.git[/url]
mkdir gnuradio-prefix
cd gnuradio-prefix
pybombs prefix init
pybombs install gnuradio
. ./setup_env.sh
gnuradio-companion
pybombs install rtl-sdr hackrf bladeRF gr-osmosdr gr-bluetooth gr-ieee-80211
更新
由于 PyBOMBS 的 recipes 只能通过 git 仓库进行发布。而我们暂时不想维护一个复杂的 git 分支合并历史。所以更新时,需要将 recipe 仓库删除,然后再重新添加回来。
[Shell] 纯文本查看 复制代码pybombs recipes remove gr-recipes
pybombs recipes remove gr-etcetera
pybombs recipes add gr-recipes git+[url]https://mirrors.tuna.tsinghua.edu.cn/pybombs/recipes/gr-recipes.git[/url]
pybombs recipes add gr-etcetera git+[url]https://mirrors.tuna.tsinghua.edu.cn/pybombs/recipes/gr-etcetera.git[/url]
本镜像使用
http://github.com/scateu/pybombs-mirror
脚本进行构建
[Shell] 纯文本查看 复制代码./setup_env.sh
uhd_images_downloader #下载固件
# 安装udev rules 否则会提示: USB open failed: insufficient permissions.
sudo cp ./lib/uhd/utils/uhd-usrp.rules /etc/udev/rules.d/99-uhd-usrp.rules
sudo udevadm control --reload-rules
#重新载入
sudo udevadm trigger
#触发一下,省去插拨USB
由于build-gnuradio脚本经常受到不可抗力的影响,
导致安装失败。于是需要我们进行手动编译。
手动编译的顺序是
1. 安装各种依赖包
2. gnuradio
3. hackrf / rtlsdr
4. gr-osmosdr首先解决对应的依赖
[Shell] 纯文本查看 复制代码sudo apt-get -y install build-essential cmake git-core autoconf automake libtool g++ python-dev swig pkg-config libfftw3-dev libboost1.53-all-dev libcppunit-dev libgsl0-dev libusb-dev sdcc libsdl1.2-dev python-wxgtk2.8 python-numpy python-cheetah python-lxml doxygen python-qt4 python-qwt5-qt4 libxi-dev libqt4-opengl-dev libqwt5-qt4-dev libfontconfig1-dev libxrender-dev libusb-1.0
编译GNURadio
[Shell] 纯文本查看 复制代码git clone --progress [url]http://gnuradio.org/git/gnuradio.git[/url]
cd gnuradio
mkdir build
cd build
cmake ../
make -j4 #4代表用4核编译
sudo make install
sudo ldconfig编译hackrf
[Shell] 纯文本查看 复制代码git clone --progress [url]http://github.com/mossmann/hackrf.git[/url]
cd hackrf/host
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
编译rtlsdr(可选)
[Shell] 纯文本查看 复制代码git clone --progress git://git.osmocom.org/rtl-sdr
cd rtl-sdr
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON -DDETACH_KERNEL_DRIVER=ON
sudo make install
sudo ldconfig
编译gr-osmosdr
[Shell] 纯文本查看 复制代码git clone --progress git://git.osmocom.org/gr-osmosdr
cd gr-osmocom
mkdir build
cd build
cmake ../
make
sudo make install
sudo ldconfig
编译gqrx(可选)
[Shell] 纯文本查看 复制代码git clone [url]https://github.com/csete/gqrx.git[/url]
cd gqrx
mkdir build
cd build
qmake ../gqrx.pro
make
sudo make install
sudo ldconfig
编译完成后
我们使用以下工具来进行SDR定义操作
·osmocom_fft : 一个简单的HackRF频谱仪,用来显示无线电频谱
·osmocom_siggen : 一个简单的HackRF信号发射源
·gqrx : 类似于SDR#的广播接收器
WFM无线广播发射
FM介绍
就是FM啦。WBFM是指宽带FM,现在我们的收音机大多是用WBFM,例如103.9MHz北京交通台,87.6MHz音乐台等。
值得一提的是,对讲机使用的是NBFM(窄带调频)。
发射WAV文件
制备WAV文件
随便找一个mp3文件什么的,转换成WAV文件。在此建议转换成44.1kHz,双声道。
例如使用ffmpeg转换:
[AppleScript] 纯文本查看 复制代码ffmpeg -i source.mp3 music.wav
转换后的结果:
[Shell] 纯文本查看 复制代码$mediainfo jen_ai_marre.wav
General
Complete name : jen_ai_marre.wav
Format : Wave
File size : 47.0 MiB
Duration : 4mn 39s
Overall bit rate mode : Constant
Overall bit rate : 1 411 Kbps
Audio
Format : PCM
Format settings, Endianness : Little
Format settings, Sign : Signed
Codec ID : 1
Duration : 4mn 39s
Bit rate mode : Constant
Bit rate : 1 411.2 Kbps
Channel count : 2 channels
Sampling rate : 44.1 KHz
Bit depth : 16 bits
Stream size : 47.0 MiB (100%)
搭框图
打开gnuradio-companion
把以下框图搭起来。
Wav source
·samp_rate采样率要设置为250kHz,这个与我们的wav文件采样率为44.1kHz有关。实际试验,如果samp_rate设置为500kHz,放出来的声音会加速一倍。
·N Channels表示Wav文件的声道数,填2
·File里填写你在上一步制备的Wav文件地址
Stream Mux
把两条数据流合并为一条流,例如N0是来自第一条流的采样点,N1来自第二条流采样点,则Stream Mux会将两条流以如下方式输出:
[N0, N1, N0, N1, N0, N1, ...]
值得注意的是此处的Type需要填为Float,GNURadio里的数据类型是以颜色表示的。
file:///C:\Users\0nise\AppData\Local\Temp\ksohtml\wps7C46.tmp.png
osmocom_sink
在GNURadio里,Sink表示信号输出,Source表示信号输入。
◆Device Arguments可以填上hackrf=0
◆sample rate设置为samp_rate*4
◆Ch0 Freq Corr (ppm)
◆HackRF的频率较正值,在没有经过仪表校正时,可以直接先填0,有条件的同学可以使用频谱仪或信号源进行标定,或者给我留言,我这里可以帮你标定。
◆Ch0 Frequency
◆要发射的频率,此处我填了93e6,表示93MHz
◆Ch0 RF Gain(dB)
◆表示HackRF放大器是否开启
◆尽管此处Gain可任意输入,但事实上只有两档,0和14dB,并不是连续可调的,在此我们填14
◆Ch0 IF Gain(dB)
◆表示HackRF的中频的增益
◆从电路上来看,应试指的是进入MAX2837收发器后给的增益
◆在此我们填40
◆Ch0 BB Gain(dB)
◆表示HackRF的基带增益
◆可能指是的进入ADC/DAC芯片后给的增益
在此我们填20
◆Ch0 BandWidth,填250e3
进一步:通过话筒进行直播发射
只需要把Wav File Source改为Audio Source即可,注意按照图中标注修改采样率。
如果上图搭建过程中产生困难,可以参考附录1的grc后缀的XML文件