HackRF One - 对车库门的重放攻击不起作用(12 个 DIP 开关)

逆向工程 硬件 协议
2021-06-16 10:34:48

TL;DR 解决方案

  • 在捕获选项卡中设置 4MHz 采样率和 2Mhz 带宽(根据 Nyquist 定理,采样率必须是带宽的两倍)
  • 使用样本中 DIP 开关位置的长度作为样本/符号参数
  • 使用 DC 校正滤波器
  • 使用生成器选项卡生成一个新的细化信号,如下所示:在此处输入图片说明

我和我的同事使用 HackRF One 为大学承担了一个 HackRF 项目。目标之一是车库门控制器。

我们为同一扇门拥有两个带 DIP 开关的控制器,一个有 10 个开关,另一个有 12 个。

控制器有一块PIC16C54芯片,广播频率为27.015Mhz。

使用 hackrf 和 Universal Radio Hacker,我们能够从两个控制器获取信号(顶部是 10 个开关,底部是 12 个):

在此处输入图片说明 我们可以很容易地认识到,在每个信号之后都有很长的等待期。DIP开关是00001111100000111110000分别在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

其中1111dip 开关设置为 0,1100dip 开关设置为 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,因为这是一个符号的近似宽度:

在此处输入图片说明

简单地重放信号是行不通的,但是从 Generator 选项卡中生成一个新信号,并带有自动检测参数 DID ! 在此处输入图片说明

1个回答

我相信两个密钥卡都发送相同的数据

1111 0000 0100

第二个遥控钥匙重复信号 3 次。

信号的 DIP 编码将逐字节交换半字节。

00001111 10 =>  11 11 00 00 01

在此处输入图片说明

尝试在 URH 中使用Autodetect 参数