我正在尝试对家庭自动化项目的Fujitsu AC远程控制协议进行逆向工程。我已经知道哪些字节对应于哪些控制信息,但最后有一个校验和。
我相信校验和是使用其他三个字节(温度,模式和风扇速度)计算的。
我使用电子表格尝试逆向工程已执行的操作以获得校验和,并发现温度为" 00001010"以及任何模式/风扇速度组合,以下算法都适用;
校验和= 392 - (温度+模式+风扇速度)
Example
392 - (10 + 64 + 128) = 190
392 - (10 + 192 + 128) = 62
392 - (10 + 32 + 128) = 222
然而,没有其他温度(我已经测试过)以这种方式工作。我目前的理论是温度首先对其进行了一些其他操作,无论这种操作是什么,都会产生相同的温度值,而不是其他温度。
原始数据:
Temperature, Mode, Fan Speed, Checksum
00000110, 10000000, 10000000, 01110110
00001010, 10000000, 10000000, 01111110
00000010, 10000000, 10000000, 01110001
完整的电子表格:This link
我无法确定正在对温度执行哪些操作,或者实际上,如果我对算法的假设是正确的,那么我就无法理解。
我想知道是否有人对此类问题有更多经验,可能会对此有所了解?
附加功能:
温度值是温度的整数比如21度(00010101)
1. Reversed to get 10101000
2. Only the first four bits taken - 1010
3. Then expanded to get a value of 00001010
因此,上述原始数据中的00001010是21度的温度
原始问题已被编辑,因为我最初接近这个并且假设我的假设是正确的
答案 0 :(得分:1)
在对Google搜索结果进行一些筛选后,我找到了以下解决方案。
感谢George Dewar Github
1. Reverse (flip) bytes 8 - 13 (I - N in spreadsheet)
2. Sum those bytes
3. (208 - sum) % 256
4. Reverse (flip) bytes of result
E.g。
Data: 00000110, 10000000, 10000000, 00000000, 00000000, 00000000
1. Reverse:
01100000, 00000001, 00000001, 00000000, 00000000, 00000000
96, 1, 1, 0, 0, 0
2. Sum:
96 + 1 + 1 + 0 + 0 + 0 = 98
3. Calculate:
(208 - 98) % 256 = 110 (dec) or 01101110 (bin)
4. Reverse:
01110110
@ george-dewar在Github上提供的答案。所以非常感谢他。我永远不会这样做。我的唯一不同之处在于我的遥控器有更少的选项,因此反转和求和的字节更少,否则它就像乔治在他的示例代码中那样工作。