HackRF实现无线门铃信号分析重放
文章特点:数据解码方面实在是没什么信心,存在分析错乱的可能性,所幸发出来共同探讨,恳请鞭策。
0x01 概述
这是一款工作在315Mhz频段的无线遥控门铃,根据查阅官方手册以及芯片信息,确定其采用了eV1527 百万组编码芯片。这是一款无线发码专用集成电路,采用 CMOS 工艺制造,拥有 20 位内码,可预烧 100 万组内码组合,发射频率支持315Mhz与433Mhz。本文仅对基于录制的信号波形图进行简单分析,详细发码结构可参考相关文档。
EV1527芯片说明:http://www.sc-tech.cn/ev1527.pdf
EV1527码位波形图:http://wenku.baidu.com/view/1b54c361ddccda38376baf7c.html
编码模块特写:
0x02 信号分析
首先通过gqrx或SDR#对无线门铃的工作频率进行精确定位,我自己这款检测到的频率值为315.1Mhz,而公司的门铃则与说明书标称的一样为315Mhz ;
出现不同是因为EV1527芯片可根据电压和振荡电阻的匹配情况来确定其振荡频率,电压越高,频率越大,电阻越大,频率越小,从组合来看可以构成无数种振荡频率,大大降低了重复几率。
接下来对工作频段数据进行捕获录制,执行以下命令:
hackrf_transfer -r hell.iq -f -s -n
解释:记录数据到文件hell.iq、指定工作频率为315.1Mhz,指定采样率8Msps/s,指定采样样本数为40M,采样时间也就是5秒
并在5秒内按下遥控器按钮,此时铃声响起,数据也被记录下来了
重放信号以测试样本可靠性:
hackrf_transfer -t hell.iq -f -s -a -l -x
解释:指定发射信号源文件,指定工作频率315.1Mhz,指定采样率8Msps,开启天线增益控制,指定RX LNA(IF)增益为40,指定TX VGA(IF)增益为47
如果听见铃声响起,那说明这段信号是有效的,如果没有响起,可能是录制指定的频率不对或采样到的信号样本不完整,可多次尝试录制,如果是车钥匙等其他设备,其信号只有一次或几次有效性,俗称滚动码,这点请注意。
如果从单纯分析信号的角度考量,现阶段不一定需要重放信号;
现在我们使用音频处理软件 Audacity 对hell.iq文件进行信号分析,我们可以通过其展现信号波形图来判断信号的调制方式并加以分析
打开程序后点选“文件”—“导入”—“原始数据”— 配置如下
导入成功后显示如下图:
上面有14段完整的信号采样,我们选择一段信号后点击放大镜来进一步观察信号特征
上面是两段相同的脉冲信号,由1和0组成 ,因为我们已经预先知晓了该无线模块的调制模式为ASK/OOK 所以接下来的分析比较简单,这里面的OOK是ASK的一种特殊调制模式,叫做(On-Off-Keying),简单说它就是摩尔斯电码的工作方式。由于OOK的抗噪声性能不如其他调制方式,所以该调制方式在目前的卫星通信、数字微波通信中没有被采用,但是由于该调制方式的实现简单,在遥控、RFID等领域中仍然有着广泛应用。
我们将第一个最窄宽度的蓝色条状物当作标准宽度 1,空白区域当作0,空白区域的宽度能容纳几个标准宽度蓝条,就代表有几个0,以此类推,较宽的蓝色条状物能容纳几个标准宽度蓝条就代表有几个1。
经过计算和统计后,我们得出如下数据:
在我们按住遥控按钮的过程中,信号实际上是在持续不断的重复发射的,后面距离第二段脉冲信号经过计算大约有30个0,所以整段数据为
根据EV1527芯片说明,当工作电压在12V、振荡阻值80K情况下,其脉冲周期 T≈400μs,即0.4毫秒,脉冲周期是指前后相邻脉冲的间隔时间,这一参数将在后面模拟仿真时使用到。
由上面两组相同的信号样本结合芯片说明可知这是两组相同的帧码,每一帧码有25位,由同步码、内码、数据码组成,一帧码发完马上发下一帧码。
时序图:
数据解码:
接下来对上面捕获的数据进行解码,其他位我们可以这样理解,第一位SYN也就是1000,这段我们不予分析(实在不会,这是一段高低电平比t:31t的脉冲信号 ),后面的部分可以分为“百万组内码”和“数据码”,数据码我们已知是后四组,也就是1000100011101000,根据上诉分析可解出4个数字代表一位,每个数字脉冲周期是4t,这里的1代表高电平,0代表低电平,则1000可解为0,因为4t+12t先高后低表示0码,而1110可解为12t+4t先高后低,代表1码,最后整段解码得出0010这个发码组合,参考芯片说明一共有15种按键组合,当门铃被按下后则发出对应的发码组合给接收器中的EV1527芯片,接收器收到后就会处理响应,播放铃音了。
内码部分按照上述原理解码后得出:01011001101101010100,将二进制转换后得出 十进制:367444 十六进制:0x59B54 也就是这款芯片的百万组编码号了。
公司门铃内码解码后得出:1101001101101100101 十进制:432997 十六进制:0x69B65
0x03 数据汇总
#自己的门铃
产品型号:朗瑞特 LR- 直流款
发射模块:eV1527 百万组编码芯片
调制模式:ASK/OOK
工作频率:.1Mhz
Vector:(, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , )
#公司门铃
产品型号:朗瑞特 LR- 交流款
发射模块:eV1527 百万组编码芯片
调制模式:ASK/OOK
工作频率:315Mhz
Vector:(, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , )
0x04 模拟信号源发射
Repate模块用于设置脉冲周期;
由于我们的框图中使用采样率为1MHz,那么想让每个数字所占用的时间t=0.4ms的话,则需要使Vector Source里的每个数字重复 1e6*0.5*10^(-3)=400 次。于是将Repeat模块的Interpolation设置为400即可。
Gnuradio框图:
HackRF实现无线门铃信号分析重放的更多相关文章
- 永不消逝的电波(二)HackRF入门:家用无线门铃信号重放
0×00 前言 在第一篇文章:永不消逝的电波(一):无线电入门篇 我们了解了一下无线电的发展史以及无线电的一些物理知识,在第二篇里我们将用HackRF录制家用门铃的无线信号,然后重放门铃信号. 门铃从 ...
- HackRF 无线门铃信号录制与重放
本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 HackRF链接:https://item.taobao.com/item.htm?spm=a1z10.1- ...
- 基于Qt的信号分析简单应用软件的设计
一.需求描述: 1.读取data.asc文件,分析其连续性: 2.绘制信号图像,并保存. 二.UI界面组成: 该应用的UI由以下几个控件组成: 3个PushButton:打开文件.图像保存.退出: 1 ...
- VTC Fsync_out信号分析
VTC Fsync_out信号分析 1.GUI配置 Vertical position的值289是根据Frame/Field 0 Vertical settings一栏中sync start来设置的. ...
- QPushButton 点击信号分析
QPushButton 点击信号分析 QPushButton有三个很重要的信号跟点击有关 pressed clicked toggled 表面上看,pressed和clicked都会在点击按钮时触发, ...
- 信号分析——从傅里叶变化到FFT
我们眼中的世界就像皮影戏的大幕布,幕布的后面有无数的齿轮,大齿轮带动小齿轮,小齿轮再带动更小的. 在最外面的小齿轮上有一个小人——那就是我们自己. 我们只看到这个小人毫无规律的在幕布前表演,却无法预测 ...
- 2.3 linux中的信号分析 阻塞、未达
信号的阻塞.未达: linux中进程1向进程2发送信号,要经过内核,内核会维护一个进程对某个信号的状态,如下图所示: 当进程1向进程2发送信号时,信号的传递过程在内核中是有状态的,内核首先要检查这个信 ...
- 2.2 linux中的信号分析
信号: 信号是UNIX系统响应某些状况而产生的事件,进程在接收到信号时会采取相应的行动. 信号是因为某些错误条件而产生的,比如内存段冲突.浮点处理器错误或者非法指令等. 信号是在软件层次上对中断的一种 ...
- wait & waitpid 以及子进程传给父进程的信号分析
wait() 和 waitpid() wait() 系统调用挂起调用进程的执行直到有一个孩子终止.调用 wait(&status) 等价于: waitpid(-1, &status, ...
随机推荐
- 用ildasm/ilasm修改IL代码
原文地址:http://www.cnblogs.com/dudu/archive/2011/05/17/ildasm_ilasm_il.html 在开发中遇到这样一个场景,需要修改一个dll文件(.N ...
- GIT命令(急速学习)
用过sourceTree,egit(eclipse中的git插件),最后还是感觉git bash顺手:svn早已经不用: 先上几个原来看过的git 教程--书读百遍,其义自见.多看几篇文章才能总结 ...
- (15)odoo配置文件详解
openerp-server.conf ---------------- [options]; addons模块的查找路径addons_path = E:\GreenOdoo8.0\source\op ...
- 杂谈:Servlet(2)
Servlet的方法剖析: 1.service()方法里面做了什么? 2.doGet()与doPost()做了什么?应该怎么写? 回答 1.service()方法里面做了什么? 如果你的service ...
- ARM流水线关键技术分析与代码优化
引 言 流水线技术通 过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一.ARM7处理器核使用了典型三级流 水线的冯·诺伊曼结构,AR ...
- JavaScript之模块化编程
前言 模块是任何大型应用程序架构中不可缺少的一部分,模块可以使我们清晰地分离和组织项目中的代码单元.在项目开发中,通过移除依赖,松耦合可以使应用程序的可维护性更强.与其他传统编程语言不同,在当前Jav ...
- NoSQL你知多少?
1.NoSQL是什么? NoSQL 是 Not Only SQL 的缩写,意即"不仅仅是SQL"的意思,泛指非关系型的数据库.强调Key-Value Stores和文档数据库的优点 ...
- Linux CC攻击脚本
CC(ChallengeCollapsar)主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,访问的人越多,论坛的页面越多,数据库 ...
- Java: constructor 构造代码块
构造器与类同名 每个类可以有1一个以上的构造器 构造器可以有0个,1个或者多个参数 构造器没有返回值,不可以写return 构造器总是伴随着new操作一起调用 构造函数的作用:可以用于给对象进行初始化 ...
- AudioManager音频管理器
AudioManager音频管理器提供了如下几种常用方法来控制手机音频: 1.adjustStreamVolume(int StreamType,int direction,int flgs):调整手 ...