当前位置:   article > 正文

python hackrf_HackRF 无线电操作教程/3G物联网中某些不可描述功能

基于hackrf的sdr无线电频谱监测节点

作者:冰尘

注:本文参与现金奖励,未经允许禁止转载

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文件

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/922665
推荐阅读
相关标签
  

闽ICP备14008679号