TL;DR 解决方案
- 在捕获选项卡中设置 4MHz 采样率和 2Mhz 带宽(根据 Nyquist 定理,采样率必须是带宽的两倍)
- 使用样本中 DIP 开关位置的长度作为样本/符号参数
- 使用 DC 校正滤波器
- 使用生成器选项卡生成一个新的细化信号,如下所示:
我和我的同事使用 HackRF One 为大学承担了一个 HackRF 项目。目标之一是车库门控制器。
我们为同一扇门拥有两个带 DIP 开关的控制器,一个有 10 个开关,另一个有 12 个。
控制器有一块PIC16C54芯片,广播频率为27.015Mhz。
使用 hackrf 和 Universal Radio Hacker,我们能够从两个控制器获取信号(顶部是 10 个开关,底部是 12 个):
我们可以很容易地认识到,在每个信号之后都有很长的等待期。DIP开关是
0000111110
和0000111110000
分别在10和开关12开关控制器上。
我们能够注意到信号的长部分对应于 0,而短突发(可能包括它们之后的一些“沉默”以保持相同的长度)是 1。在这一点上,我期待信号是这样的:
0 1111 0 1111 0 1111 0 1111 0 1100 0 1100 0 1100 0 1100 0 1100 0 1111 0 1100 0 1100
其中1111
dip 开关设置为 0,1100
dip 开关设置为 1。
我们为车库门重放信号的努力是徒劳的,即使是在它的正前方。我们尝试在 Audacity 中导入数据并对信号进行标准化,以充分利用它,但 Universal Radio Hacker 无法从 RAW 8 位无符号 PCM 48KHz 格式正确导入它(这是预期的格式,对吗?) .
尽管在不使用audacity的情况下使用从URH捕获的信号进行重放攻击没有成功,但出现了以下问题:
- 为什么在信号末尾有两个短脉冲(1s)而不是预期的零?
- 10 开关控制器在开始时有一个没有两个零的信号。车库代码应该是 10 位然后 (?)
- 为什么将12个开关控制器的最后2个开关设置为1而不是0不开门?
我们在这里错过了更重要的东西吗?
编辑:门不是滚动代码,因为我们在每次按下时都捕获相同的信号(这是一扇有 30 年历史的门)
编辑(2):带有自动检测参数的信号如下:
11111111111111111111111111111111111111111111 011101110111011101 1 001001001001 1 0011101 1 00100 11111111111111111111111111111111111111111111 011101110111011101_001001001001_0011101_00100 11111111111111111111111111111111111111111111 011101110111011101_001001001001_0011101_001(00)
但我相信 2000 个样本/符号更好,因为它产生:
111111111111111111111111111111111110110110110110100100100100100110100100 111111111111111111111111111111111110110110110110100100100100100110100100 111111111111111111111111111111111110110110110110100100100100100110100100
问题是,URH 重放样本而不是比特,那么为什么重放不起作用?
编辑 (3):我读到HackRF 附带的天线对于在该频率 (27.015Mhz) 上传输没有用,这是真的吗?
编辑 (4):在摆弄 URH 过滤器后,我获得了一些很好的参数,用于捕获我命名为“重复”的长按。相同的信息在印刷期间重复传输。
我还没有测试过这种攻击。信号被解码成比特的方式会改变它的重复方式吗?参数也会影响重复吗?过滤器呢?
更新:通过“解释”选项卡中的重复选项进行测试失败(检查编辑 4)。
编辑 (4):我刚刚意识到我可以使用 Generator 选项卡...
明天将测试并相应更新!
5k 样本/符号给出了@roscoe 提到的所需解码,但不适用于生成
编辑 (6):在录制期间将采样率设置为 4M,将带宽设置为 2M,结果如下:
自动检测似乎得到了正确的值,每个符号的样本被手动设置为 4000,因为这是一个符号的近似宽度: