文章特点:数据解码方面实在是没什么信心,存在分析错乱的可能性,所幸发出来共同探讨,恳请鞭策。

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实现无线门铃信号分析重放的更多相关文章

  1. 永不消逝的电波(二)HackRF入门:家用无线门铃信号重放

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

  2. HackRF 无线门铃信号录制与重放

    本文内容.开发板及配件仅限用于学校或科研院所开展科研实验! 淘宝店铺名称:开源SDR实验室 HackRF链接:https://item.taobao.com/item.htm?spm=a1z10.1- ...

  3. 基于Qt的信号分析简单应用软件的设计

    一.需求描述: 1.读取data.asc文件,分析其连续性: 2.绘制信号图像,并保存. 二.UI界面组成: 该应用的UI由以下几个控件组成: 3个PushButton:打开文件.图像保存.退出: 1 ...

  4. VTC Fsync_out信号分析

    VTC Fsync_out信号分析 1.GUI配置 Vertical position的值289是根据Frame/Field 0 Vertical settings一栏中sync start来设置的. ...

  5. QPushButton 点击信号分析

    QPushButton 点击信号分析 QPushButton有三个很重要的信号跟点击有关 pressed clicked toggled 表面上看,pressed和clicked都会在点击按钮时触发, ...

  6. 信号分析——从傅里叶变化到FFT

    我们眼中的世界就像皮影戏的大幕布,幕布的后面有无数的齿轮,大齿轮带动小齿轮,小齿轮再带动更小的. 在最外面的小齿轮上有一个小人——那就是我们自己. 我们只看到这个小人毫无规律的在幕布前表演,却无法预测 ...

  7. 2.3 linux中的信号分析 阻塞、未达

    信号的阻塞.未达: linux中进程1向进程2发送信号,要经过内核,内核会维护一个进程对某个信号的状态,如下图所示: 当进程1向进程2发送信号时,信号的传递过程在内核中是有状态的,内核首先要检查这个信 ...

  8. 2.2 linux中的信号分析

    信号: 信号是UNIX系统响应某些状况而产生的事件,进程在接收到信号时会采取相应的行动. 信号是因为某些错误条件而产生的,比如内存段冲突.浮点处理器错误或者非法指令等. 信号是在软件层次上对中断的一种 ...

  9. wait & waitpid 以及子进程传给父进程的信号分析

    wait() 和 waitpid() wait() 系统调用挂起调用进程的执行直到有一个孩子终止.调用 wait(&status) 等价于: waitpid(-1, &status, ...

随机推荐

  1. 静态类和静态类成员(C# 编程指南)

    静态类与非静态类基本相同,但存在一个区别:静态类不能实例化. 也就是说,不能使用 new 关键字创建静态类类型的变量. 因为没有实例变量,所以要使用类名本身访问静态类的成员. 例如,如果名为 Util ...

  2. python 练习 16

    #!/usr/bin/python # -*- coding: UTF-8 -*- import time myD = {1: 'a', 2: 'b'} for key, value in dict. ...

  3. 弹出消息对话框ScriptManager

    //直接调用WebMessageBox方法 #region 弹出消息对话框 /// <summary> /// 弹出消息对话框 /// </summary> /// <p ...

  4. outlook 用宏发邮件

    经常发面试邮件,通常只是修改一下收件人邮箱地址,和收件人姓名,其他全部一致,有木有发现每次都用用outlook写邮件很麻烦? 使用宏发邮件,就会不麻烦了,直接修改下称呼,修改下收件人地址,按下F5,就 ...

  5. linux 下crontabs使用

    安装crontab:[root@CentOS ~]# yum install vixie-cron[root@CentOS ~]# yum install crontabs说明:vixie-cron软 ...

  6. S1 : 递归

    递归函数是在一个函数通过名字调用自身的情况下构成的,如下所示 function f(num){ if(num<=1){ return 1; } else { return num*f(num-1 ...

  7. JAVA输出图形(网上找的)

    public class TuXing { public static void main(String[] args) { int i, j, k; for (i = 1; i <= 5; i ...

  8. appjs desktop

    /*   author: daimajia       name: appjs Express example       email: daimajia@gmail.com       any qu ...

  9. [转载]Android核心分析

    2013-12-19 15:44:03 转载自: http://blog.csdn.net/column/details/androidcore.html 很好的文章,阅读请跳转到转载链接,转载备以后 ...

  10. batch insert 1 million datas into mysql

    最近尝试插入1百万条数据进db,以mysql为例. 1. 顺序insert 先写了个无脑的for循环作为base-line,插1万条耗时1m53s,根本不敢插1百万. foreach(var stud ...