永不消逝的电波(二)HackRF入门:家用无线门铃信号重放
0×00 前言
在第一篇文章:永不消逝的电波(一):无线电入门篇 我们了解了一下无线电的发展史以及无线电的一些物理知识,在第二篇里我们将用HackRF录制家用门铃的无线信号,然后重放门铃信号。
门铃从某宝买的,如图:

0×01 环境搭建:
MAC下可以用gqrx和hackrf (需要有Xcode、Mac Port的支持)
sudo port install gnuradio
sudo port install hackrf
sudo port install rtl-sdr
sudo port install gr-osmosdr
sudo port install hackrf

sudo port install gqrx

也可以参考:在Mac上安装HackRF环境
0×02 步入正题:
安装完成以后,插入HackRF,终端执行 hackrf_info:
hackrf_info
Found HackRF board.
Board ID Number: (HackRF One)
Firmware Version: git-815d1f6
Part ID Number: 0xa000cb3c 0x00664f49
Serial Number: 0x00000000 0x00000000 0x583064c0 0x2640ad4b
#通过终端启动gqrx
gqrx

按下遥控器,我们可以看到信号的频率在314.100000Mhz(读作:314.1兆赫兹)左右
1Mhz=1000000hz;
1Khz=1000hz .1Mhz=314100000hz;
关掉gqrx启动hackrf
hackrf_transfer Usage:
Usage:
-r <filename> # Receive data into file. 把接收到的信号、数据保存到文件中;(信号录制)
-t <filename> # Transmit data from file. 从文件中提取、发送射频信号;(信号播放)
-w # Receive data into file with WAV header and automatic name.
# This is for SDR# compatibility and may not work with other software.
[-f freq_hz] # Frequency in Hz [0MHz to 7250MHz].
[-i if_freq_hz] # Intermediate Frequency (IF) in Hz [2150MHz to 2750MHz].
[-o lo_freq_hz] # Front-end Local Oscillator (LO) frequency in Hz [84MHz to 5400MHz].
[-m image_reject] # Image rejection filter selection, =bypass, =low pass, =high pass.
[-a amp_enable] # RX/TX RF amplifier =Enable, =Disable.
[-p antenna_enable] # Antenna port power, =Enable, =Disable.
[-l gain_db] # RX LNA (IF) gain, -40dB, 8dB steps
[-g gain_db] # RX VGA (baseband) gain, -62dB, 2dB steps
[-x gain_db] # TX VGA (IF) gain, -47dB, 1dB steps
[-s sample_rate_hz] # Sample rate in Hz (//12.5//20MHz, default 10MHz).
[-n num_samples] # Number of samples to transfer (default is unlimited).
[-c amplitude] # CW signal source mode, amplitude - (DC value to DAC).
[-b baseband_filter_bw_hz] # Set baseband filter bandwidth in MHz.
Possible values: 1.75/2.5/3.5//5.5///////////28MHz, default < sample_rate_hz.
hackrf_transfer -r /dev/stdout -f -a -g -l -s
没按遥控器

按下遥控器:

由于hackrf_transfer后面没带解码参数,so我们看到一堆乱码数据;
0×03 录制信号&信号分析
录制遥控的无线信号:
hackrf_transfer -r door.raw -f -g -l -a -s -b
终端输出:
hackrf_transfer -r door.raw -f -g -l -a -s -b
call hackrf_sample_rate_set( Hz/8.000 MHz)
call hackrf_baseband_filter_bandwidth_set( Hz/3.500 MHz)
call hackrf_set_freq( Hz/314.100 MHz)
call hackrf_set_amp_enable()
Stop with Ctrl-C
16.0 MiB / 1.005 sec = 15.9 MiB/second
16.0 MiB / 1.003 sec = 15.9 MiB/second
16.0 MiB / 1.004 sec = 15.9 MiB/second
16.3 MiB / 1.004 sec = 16.2 MiB/second
16.0 MiB / 1.002 sec = 16.0 MiB/second
16.0 MiB / 1.001 sec = 16.0 MiB/second
16.0 MiB / 1.004 sec = 15.9 MiB/second
16.0 MiB / 1.003 sec = 15.9 MiB/second
16.3 MiB / 1.003 sec = 16.2 MiB/second
16.0 MiB / 1.003 sec = 15.9 MiB/second
16.0 MiB / 1.005 sec = 15.9 MiB/second
^CCaught signal
8.1 MiB / 0.510 sec = 15.9 MiB/second User cancel, exiting...
Total time: 11.54724 s
hackrf_stop_rx() done
hackrf_close() done
hackrf_exit() done
fclose(fd) done
exit

信号波形分析:
这里用到的软件是Audacity,导入录制的音频信号(未压缩原始数据)

然后出现如下界面:

使用默认参数,直接导入:

中间的那部分就是按下遥控时录制到的无线信号,我们使用Audacity的放大镜放大来看:

继续放大我们可以看到:

继续放大:

再放大:

这时经验比较丰富的童鞋可以通过图形,把无线射频信号转换成二进制数据:01010101**** ,接着可以把二进制写到GRC(Gnu Radio Cpmpainon),制作一个框图,使用GNC项目重放无线信号,大致方法如下:
启动Gnu Radio Cpmpainon :Kali Linux—->无线攻击—>Software defined Radio—>GnuRadio-Companion

源:在右侧Misc一栏找到Vector Source

通过搜索添加Repeat(old)、Moving Average、osmocom Sink

四个组件:

按照流程连线:

GNC用得不多,暂时还不上手,这种方法以后再试 :)
0×04 信号重放
使用hackrf_transfer重放信号:
hackrf_transfer -t door.raw -f -x -a -s -b
终端输出:
hackrf_transfer -t door.raw -f -g -l -a -s -b
call hackrf_sample_rate_set( Hz/8.000 MHz)
call hackrf_baseband_filter_bandwidth_set( Hz/3.500 MHz)
call hackrf_set_freq( Hz/314.100 MHz)
call hackrf_set_amp_enable()
Stop with Ctrl-C
16.0 MiB / 1.004 sec = 15.9 MiB/second
16.0 MiB / 1.004 sec = 15.9 MiB/second
16.0 MiB / 1.003 sec = 15.9 MiB/second
16.0 MiB / 1.001 sec = 16.0 MiB/second
16.0 MiB / 1.000 sec = 16.0 MiB/second
16.3 MiB / 1.001 sec = 16.2 MiB/second
16.0 MiB / 1.003 sec = 16.0 MiB/second
16.0 MiB / 1.001 sec = 16.0 MiB/second
16.0 MiB / 1.005 sec = 15.9 MiB/second
16.0 MiB / 1.003 sec = 15.9 MiB/second
16.3 MiB / 1.003 sec = 16.2 MiB/second
8.4 MiB / 1.004 sec = 8.4 MiB/second Exiting... hackrf_is_streaming() result: HACKRF_ERROR_STREAMING_EXIT_CALLED (-)
Total time: 12.03184 s
hackrf_stop_tx() done
hackrf_close() done
hackrf_exit() done
fclose(fd) done
exit

0×05 演示视频
熊孩子的正确使用姿势是这样的:
for i in {..}; do hackrf_transfer -t door.raw -f -g -l -a -s -b ; done
嗯,你没看错,重复播放九百九十九次 :)
0×06 参考:
Exploring Bluetooth & iBeacons – from software to radio signals and back.
永不消逝的电波(二)HackRF入门:家用无线门铃信号重放的更多相关文章
- HackRF 无线门铃信号录制与重放
本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 HackRF链接:https://item.taobao.com/item.htm?spm=a1z10.1- ...
- 深入浅出 JMS(二) - ActiveMQ 入门指南
深入浅出 JMS(二) - ActiveMQ 入门指南 上篇博文深入浅出 JMS(一) – JMS 基本概念,我们介绍了消息通信的规范JMS,这篇博文介绍一款开源的 JMS 具体实现-- Active ...
- XML学习总结(二)——XML入门
XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...
- 基于tensorflow的MNIST手写数字识别(二)--入门篇
http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...
- 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权
原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...
- 家用wifi信号覆盖增强扩展实用指南
家用wifi信号覆盖增强扩展实用指南 现在网上很多号称穿墙王的无线路由器,但是一般用起来效果都不理想,其实最主要的原因还是家里面一般每个房间不大,但是墙比较多.并且一般也没有一个所谓的中心点放置路由器 ...
- tensorflow学习笔记二:入门基础 好教程 可用
http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础 TensorFlow用张量这种数据结构来表示所有的数据.用一 ...
- SpringBoot系列(二)入门知识
SpringBoot系列(二)入门知识 往期推荐 SpringBoot系列(一)idea新建springboot项目 引言 本来新建springboot项目应该放在入门知识这一章的,但是由于新建spr ...
随机推荐
- zigbee学习之路(十):串口(接收)
一.前言 上次我们学习了串口的发送,今天我们要学习串口的接收,要实现的功能是接收电脑发来的数据,控制LED 灯闪烁,而且将收到的数据发回给电脑显示出来.而且要采用不占用cpu资源的中断. 二原理与分析 ...
- c++实现蛇形矩阵总结
蛇形矩阵,百度了一下,是这么一个东西: 像一条蛇一样依次递增. 我想,竟然做了螺旋矩阵,那做一下这个吧.在之前的螺旋矩阵的main函数基础上,写个函数接口就行了,这一次做的很快,但是这个矩阵感觉比螺旋 ...
- session保存用户登录
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- VB.NET中的除法运算符 与 C#中的除法运算符
VB.NET中的除法运算符有两个:/(浮点除法).\(整数除法) C#中的除法运算符只有一个:/(除法) VB.NET中的除法运算符与C#中的除法运算符存在很大的差异,使用时注意区分. 关于VB.NE ...
- CSS3之尖角标签
如图所示,Tag标签的制作通常使用背景图片,现在用CSS3代码就能实现尖角效果(需浏览器支持CSS3属性). 运用CSS3样式实现尖角标签,只需要写简单的HTML结构和CSS样式. <p> ...
- webstrom使用方法
一.设置file-settings- -color&fonts设置,字体 主体 -file and code templates模板ctrl+r 查找,替换1 双击shift 快速查找2 fi ...
- QQ(iOS)客户端的粘性动画效果
qq的app中要是有新的联系人发消息过来,相应联系人的cell右边会有一个红色的圆圈表示消息条数.如果去触碰那个圆圈,可以发现它竟然会跟着手指的移动而移动. 在一定范围内,手指离开屏幕,会发现红色圆圈 ...
- Head First 设计模式--2 观察者模式 解耦
观察者模式定义了对象之间一对多的依赖,这样依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新. 假如有这么一个项目,监控每天的天气状况WeatherData(温度,湿度,气压).有布告板 ...
- 主页面获取iframe 的子页面方法。
父页面parent.html <html> <head> <script type="text/javascript"> function sa ...
- 利用jsoup进行模拟登录
因为工作的原因,近段时间开始接触jsoup.大概也弄清了用java来爬网页是怎样一个过程.特此,写篇日志以便他日方便查看. Jsoup是一个java平台的能够对xml文档结构的文档进行解析.有点类似于 ...