You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Proflame 2射频遥控器校验和计算逆向工程技术问询

SIT Proflame壁炉遥控器校验和逆向需求

引言

SIT Proflame系列壁炉控制器适配多品牌壁炉,配套使用315MHz频段的射频遥控器。我需要实现为任意序列号生成有效命令包,通过带射频发射器的自定义微控制器控制壁炉,最终集成到Home Assistant中,让所有人都能以此方式控制壁炉,核心需求是支持任意序列号的校验和计算。

目前校验和的大部分计算逻辑已逆向完成,但不同序列号遥控器的校验和差异原因尚未明确,推测序列号会修改校验和计算逻辑,需要逆向该关联逻辑,这是当前的核心问题。现有研究已接近目标,缺失的关键步骤是找出序列号如何使校验和计算唯一化,恳请技术指引。

细节

过往研究

已有多项针对该协议及校验和算法的逆向工程研究:

  • John Ellinwood的初始研究项目
  • 关于校验和计算及潜在位掩码的详细讨论项目

数据包格式

示例数据包:a4ed02013ecab5

SerialVersionCommand 1Command 2Checksum 1Checksum 2
a4ed02013ecab5

该结构为逆向所得,Version字段为推测值——目前捕获的Proflame 2遥控器数据包中该字段均为0x02。Proflame 1与Proflame 2遥控器共享相同FCC ID及外壳设计。数据包长度固定,同一遥控器的Serial和Version字段始终不变。

已知的校验和计算逻辑

已逆向得到以下信息:

  1. Checksum 1与Checksum 2相互独立,分别对应Command 1和Command 2(仅修改Command 1时,仅Checksum 1变化)。
  2. 两者计算方式相同,公式为:
    checksum = (init ^ ((cmd&0xf0) << 1) ^ (cmd&0xf0) ^ ((cmd&0xf0) >> 4) ^ (cmd&0x0f) ^ ((cmd&0x0f) << 5)) & 0xff
    
    其中init值为缺失项,且Command 1和Command 2的init值不同。
  3. 相同命令字节在不同遥控器上生成不同校验和,推测序列号是决定init值的因素。
  4. 对已有数据包可通过暴力破解得到init值,能计算已知遥控器的校验和,但无法支持任意序列号。

我的目标是:随机生成序列号,推导对应的校验和计算所需init值,发送有效命令与控制器配对(控制器配对需进入配对模式后接收一次开、关信号),以替代故障或丢失的遥控器。

样本数据

已捕获多个不同遥控器的数据包,对应暴力破解得到的init值(原研究中称为C和D):

SerialInit1 (C)Init2 (D)
21dd7d8b
47eb61a7
7d147e9e
a4edeb28
bf39dd1c

已尝试方法

使用reveng工具猜测校验和的CRC算法,尝试多种消息格式组合(完整数据包、单独/组合序列号字节、包含/排除Version字段)均未匹配成功。

现寻求技术指引,以找出序列号与init值的关联逻辑,实现任意序列号的校验和计算。

内容的提问来源于stack exchange,提问作者Felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 09:02:03