如何了解IR校验和

时间:2018-09-25 08:25:46

标签: reverse-engineering checksum infrared

我试图了解如何计算未品牌空调遥控器的以下数据包的crc。它的最后4位似乎是crc,数据包长8个字节。我可以理解如何提取数据包,但不能提取crc。前3位是固定的。

数据模式,例如1)0010 0100 0100 0011 0000 0000 0000 0000 0000 0000 1110
数据模式,例如2)0010 1000 0101 0011 0000 0000 0000 0000 0000 0000 0000 1101
数据模式,例如3)0010 1000 0110 0011 0000 0000 0000 0000 0000 0000 0000 1100
数据模式,例如4)0010 1000 0111 0011 0000 0000 0000 0000 0000 0000 0000 1011
数据模式,例如5)0010 1000 1000 0011 0000 0000 0000 0000 0000 0000 0000 1010
数据模式,例如6)0010 1000 1001 0011 0000 0000 0000 0000 0000 0000 0000 1001
数据模式,例如7)0010 1000 1010 0011 0000 0000 0000 0000 0000 0000 0000 1000
数据模式,例如8)0010 1000 1011 0011 0000 0000 0000 0000 0000 0000 0000 0111
数据模式,例如9)0010 1000 0000 0011 0000 0000 0000 0000 0000 0000 0000 0010
数据模式,例如10)0010 1000 0001 0011 0000 0000 0000 0000 0000 0000 0000 0001
数据模式,例如11)0010 1000 0010 0011 0000 0000 0000 0000 0000 0000 0000 0000
数据模式,例如12)0010 1000 0011 0011 0000 0000 0000 0000 0000 0000 0000 1111

sample image

1 个答案:

答案 0 :(得分:0)

我认为这可能只是倒数。

将除最后4位以外的所有内容相加,然后加上((x&1111)^1111)

0010 + 0100 + 0100 + 0011 =  1101  ->  0010*
0010 + 1000 + 0101 + 0011 = 10010  ->  1101
0010 + 1000 + 0110 + 0011 = 10011  ->  1100
0010 + 1000 + 0111 + 0011 = 10100  ->  1011
0010 + 1000 + 1000 + 0011 = 10101  ->  1010
0010 + 1000 + 1001 + 0011 = 10110  ->  1001
0010 + 1000 + 1010 + 0011 = 10111  ->  1000
0010 + 1000 + 1011 + 0011 = 11000  ->  0111
0010 + 1000 + 0000 + 0011 =  1101  ->  0010
0010 + 1000 + 0001 + 0011 =  1110  ->  0001
0010 + 1000 + 0010 + 0011 =  1111  ->  0000
0010 + 1000 + 0011 + 0011 = 10000  ->  1111

请注意,第一个样本不正确(应为1110),但其余匹配。我不确定这是我的算法错误还是输入数据错误(看照片,看不到0010 0100出现在哪里)。

还请注意,提供的示例非常相似(如果排除第一个示例,则仅第8、9、10、11位不同),因此可能有很多方法可以得出“解决方案”。