神刀安全网

逆向破解H.Koenig 遥控器 Part 2

这篇文章是 part1的后续 如果你还没有 看过 part1 请看 第一部分 。( 本站中文翻译 )

到目前为止,我们已经 知道了 RF收发器的安装 过程 下面是我们所掌握的东西

无线电收发器是一 Avantcom A7105

调制是FSK

频率偏差 设置为186 KHz

基本频率为2.40 GHz

任何传输之前信道被设定为100

道空间是500千赫

因此,工作频率为2.45 GHz

ID是 0×58 0 x 52 0xD2   0×41

带宽为500 kbps

分组8字节长

前导码4字节长

禁用CRC

禁用数据 百花

禁用FEC编码

固件 由于是 进行了优化的收发器复位 ,因此 绝对不适合 电源 ,且 每一个FIFO操作前 安装完了

下面是描述数据包格式收发器数据表的 格式:

逆向破解H.Koenig 遥控器 Part 2

在本例中,根据我们所解码的,包的头部被限制到4个字节,随后是4个字节的ID码以及最后的8个字节的有效载荷(不进行编码,没有数据白化,没有CRC)。

好吧,现在对协议进行深层次挖掘。

首先, Hook我们 最喜欢的逻辑分析仪的SPI总线,并尝试每一个按钮!遥控器图片如下:

逆向破解H.Koenig 遥控器 Part 2

有14个按钮,所以我们期待在14个不同的数据包发送。

事实上,对于每个按钮,当按下按钮时,遥控器发送分组而另一个就被释放,所以我们会得到28包。

MCU会在50 ms和 55ms之间等待,并在每个传输和发送“IDLE”到最后“按钮弹起”事件后的收发器的时间是55ms。

下面捕捉的画面,你可以看到,按下的按钮已发送3次,其次是数据包中的“发布”按钮。在右上角的数据包中,你可以看到两个传输之间的延迟是55ms。

逆向破解H.Koenig 遥控器 Part 2

如果你想知道最后的微小 的跳变 是什么,答案可以在这最后一张 图片 找到

逆向破解H.Koenig 遥控器 Part 2

好了, 等的够久了 下面 是每个按钮的数据包。第一个是用于“ 向下 ”事件,而第二个表示一个“ 向上 ”事件。

“Thursday” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x01 0xF7

0xAA 0x00 0x03 0x49 0x00 0x00 0x11 0x07

“Full Go” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x02 0xF8

0xAA 0x00 0x03 0x49 0x00 0x00 0x12 0x08

“Wednesday” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x03 0xF9

0xAA 0x00 0x03 0x49 0x00 0x00 0x13 0x09

“Friday” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x04 0xFA

0xAA 0x00 0x03 0x49 0x00 0x00 0x14 0x0A

“Sunday” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x05 0xFB

0xAA 0x00 0x03 0x49 0x00 0x00 0x15 0x0B

“Monday” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x06 0xFC

0xAA 0x00 0x03 0x49 0x00 0x00 0x16 0x0C

“OK” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x07 0xFD

0xAA 0x00 0x03 0x49 0x00 0x00 0x17 0x0D

“Saturday” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x08 0xFE

0xAA 0x00 0x03 0x49 0x00 0x00 0x18 0x0E

“Tuesday” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x09 0xFF

0xAA 0x00 0x03 0x49 0x00 0x00 0x19 0x0F

“Red” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x0A 0x00

0xAA 0x00 0x03 0x49 0x00 0x00 0x1A 0x10

“Down” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x0B 0x01

0xAA 0x00 0x03 0x49 0x00 0x00 0x1B 0x11

“Left” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x0C 0x02

0xAA 0x00 0x03 0x49 0x00 0x00 0x1C 0x12

“Right” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x0D 0x03

0xAA 0x00 0x03 0x49 0x00 0x00 0x1D 0x13

“Up” button

0xAA 0x00 0x03 0x49 0x00 0x00 0x0E 0x04

0xAA 0x00 0x03 0x49 0x00 0x00 0x1E 0x14

可能已经注意到,只有最后的两个字节发生变化。

到目前为止,我们可以假设,第二到最后一个字节编码在低半字节和其状态的按钮(按下/释放)在较高的半字节。

我的猜测是,最后一个字节计算 针对上一个 (或者 都是之前 的)。

但是,我们仍然 丢失了一 些东西。根据手册,有一个配对过程来与给定 远程机器人 进行 工作: 按下 “OK”按钮 保持5秒钟 它仍按下 后,启动机器人 。两声提示音(机器人 发出 确认 遥控器 进行 配对。

如果我们试图用我们SPI总线上的逻辑分析仪 进行上述 过程 的话 ,我们 前几秒钟(2.3秒) 就能捕获到 分组:

0xAA 0x00 0x03 0x49 0x00 0x00 0x07 0xFD

然后,分组更改为:

0x55 0x00 0x03 0x49 0x00 0x00 0x00 0xA1

因此,第一个字节是用来告诉机器人一些“代码”。不幸的是我没有其他遥控器来测试 这个观点, 机器人本身更难以采取APPART, 来处理它的 固件。但我 猜测可能是这样的

1. 第一个字节 使能 操作模式

2. 下面的5个字节是遥控器的硬编码的序列号,该机器人 会去自我 配对

3. 第二 最后一个字节编码按钮

4. 最后一个字节是一种校验和(因为它们禁用内部CRC)

这是第二部分。第三 部分 (也是最后一 个部分 )我们将建立一个计算机控制的遥控器。

*参考来源: blog.j-michel.org  ,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 逆向破解H.Koenig 遥控器 Part 2

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址