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

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

l 无线电收发器是一个Avantcom A7105

l 调制是FSK

l 频率偏差设置为186KHz

l 基本频率为2.40 GHz

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

l 频道空间是500千赫

l 因此,工作频率为2.45 GHz

l ID是0×58 0x52 0xD2  0×41

l 带宽为500 kbps

l 分组8字节长

l 前导码4字节长

l 禁用CRC

l 禁用数据百花

l 禁用FEC编码

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

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

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

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

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

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

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

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

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

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

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

“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)。

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

逆向破解H.Koenig 遥控器 Part 2的更多相关文章

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

    逆向破解 H.Koenig 遥控器(Part 1)   最近我正在尝试一研究些自动吸尘器机器人.iRobot公司的Roomba貌似是该领域的领导者,但是作为实验来讲的话这些东西真是太昂贵了,我也找不到 ...

  2. 20165309 《网络对抗技术》实验一:PC平台逆向破解

    20165309 <网络对抗技术>实验一:PC平台逆向破解 目录 实践目标 基础知识 实验原理.内容及步骤 问题与解决 实验收获 一.实践目标 本次实践的对象是一个名为pwn1的linux ...

  3. 20165214 2018-2019-2 《网络对抗技术》Exp1 PC平台逆向破解 Week3

    <网络对抗技术>Exp1 PC平台逆向破解之"逆向及Bof基础实践说明" Week3 一. 实验预习 1.什么是漏洞?漏洞有什么危害? 漏洞就是在计算机硬件.软件.协议 ...

  4. 2018-2019-2 20165312《网络攻防技术》Exp1 PC平台逆向破解

    2018-2019-2 20165312<网络攻防技术>Exp1 PC平台逆向破解 一.Exp1.1 直接修改程序机器指令,改变程序执行流程 知识要求:Call指令,EIP寄存器,指令跳转 ...

  5. 2017-2018-2 20155303『网络对抗技术』Exp1:PC平台逆向破解

    2017-2018-2 『网络对抗技术』Exp1:PC平台逆向破解 --------CONTENTS-------- 1. 逆向及Bof基础实践说明 2. 直接修改程序机器指令,改变程序执行流程 3. ...

  6. 20144306《网络对抗》MAL_PC平台逆向破解_Advanced

    PC平台逆向破解_Advanced 一.注入shellcode并执行 1.什么是shellcode? shellcode顾名思义就是一段为了获取交互式shell的机器指令,是用来发送到服务器利用特定漏 ...

  7. 20145206邹京儒《网络对抗技术》 PC平台逆向破解

    20145206邹京儒<网络对抗技术> PC平台逆向破解 注入shellcode并执行 一.准备一段shellcode 二.设置环境 具体在终端中输入如下: apt-cache searc ...

  8. 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验

    20145330 <网络对抗>PC平台逆向破解:注入shellcode 实验步骤 1.用于获取shellcode的C语言代码 2.设置环境 Bof攻击防御技术 需要手动设置环境使注入的sh ...

  9. 20145336张子扬 《网络对抗技术》 PC平台逆向破解

    #20145336张子扬 <网络对抗技术> PC平台逆向破解 ##Shellcode注入 **基础知识** Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对 ...

随机推荐

  1. Linux系统调优相关工具

    一.系统调优概述 系统的运行状况: CPU -> MEM -> DISK*-> NETWORK -> 应用程序调优 分析是否有瓶颈(依据当前应用需求) 调优(把错误的调正确) ...

  2. Linux系统管理_主题02 :管好文件(1)_2.3 拷贝、剪切、删除和创建文件_cp_mv_rm

    用法:cp [选项]... [-T] 源文件 目标文件 或:cp [选项]... 源文件... 目录 或:cp [选项]... -t 目录 源文件... 将源文件复制至目标文件,或将多个源文件复制至目 ...

  3. —Entity Framework实例详解

    Entity Framework Code First的默认行为是使用一系列约定将POCO类映射到表.然而,有时候,不能也不想遵循这些约定,那就需要重写它们.重写默认约定有两种方式:Data Anno ...

  4. Base64加密 解密

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. python3速查参考- python基础 4 -> 元组 + 字典 + 字符串 的学习

    元组 元组:特点就是内容不可变,算只读的列表,可以被查询,不能被修改 a = 2, print(a) print(type(a)) b = ('a','b','c') print(b[1]) 运行结果 ...

  6. 【Web网站服务器开发】apache和tomcat 阿帕奇和汤姆猫

    经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总 ...

  7. dubbo分布式服务框架-study1

    本文参考“如何给老婆解释RPC”一文进行的... 1.首先了解下dubbo: dubbo是一款高性能.轻量级的开源java RPC服务框架(RPC即远程过程调用,具体解释见:https://www.j ...

  8. 【LOJ】#3043. 「ZJOI2019」线段树

    LOJ#3043. 「ZJOI2019」线段树 计数转期望的一道好题-- 每个点设两个变量\(p,q\)表示这个点有\(p\)的概率有标记,有\(q\)的概率到祖先的路径上有个标记 被覆盖的点$0.5 ...

  9. Magazine Delivery(POJ1695)【DP】

    题意:要求用三辆车往n座城市投递货物,起点都在一号城市,每辆车可以载任意数量的货物,投递顺序必须与城市编号递增序一致,并且,每次同时都只能有一辆车在跑路.求最短总路径之和. 思路:每时每刻,能够充分决 ...

  10. luffy后台相关设置

    目录 项目创建 环境 创建项目 重构项目目录 配置开发环境 配置日志 环境变量 dev.py 在写项目直接导入utils文件夹也不''错误提示'' 封装logger dev.py utils/logg ...