逆向工程校验和 - LG 485 a/c 协议

逆向工程 解密 二进制
2021-06-17 10:37:14

我正在尝试对串行协议进行逆向工程,除了校验和字节外,一切似乎都很简单。似乎是一些简单的算法 - 当所有字节的总和相同时,校验和/crc 保持不变。但是还是想不出确切的算法:

最后一个字节是校验和。

80,6F,A3,01,02,B0,08,18
80,6F,A3,03,00,80,00,40
80,6F,A3,02,00,80,00,41
80,6F,A3 ,04,00,80,00,43
80,6F,A3,01,01,81,08,48
80,6F,A3,01,02,80,08,48
80,6F,A3,01,00, 81,08,49
80,6F,A3,01,04,80,08,4A
80,6F,A3,01,00,80,08,4E
80,6F,A3,01,02,A0,08,68
80,6F,A3,01,01,A2,08,6B
80,6F,A3,01,02,88,08,70
80,6F,A3,01,06,80,08,74
80,6F,A3 ,01,00,88,08,76
80,6F,A3,01,02,90,08,78
80,6F,A3,01,12,80,08,78

回应:

10,03,A3,00,01,00,38,06,73,9C,9B,94,00,12,12,02 10,03
,A3,00,01,00,38,0A,74,A0 ,8E,94,00,12,12,06 10,03
,A3,00,01,00,40,06,72,9E,99,94,00,12,12,0B 10,03
,A3,00 ,01,00,30,07,72,9B,9A,8E,00,12,12,12 10,03
,A3,00,01,00,38,04,74,77,78,CC,01, 12,12,12 10,03
,A3,00,01,00,30,07,71,9B,99,90,00,12,12,12 10,03
,A3,00,01,00,30, 07,6F,9F,92,94,00,12,12,13 10,03
,A3,00,01,00,30,07,6E,A1,8C,94,00,12,12,14
10, 03,A3,00,01,00,30,07,6E,A0,8E,94,00,12,12,17 10,03
,A3,00,01,00,30,07,72,9B,9A ,90,00,12,12,1C 10,03
,A3,00,01,00,30,06,72,A1,91,94,00,12,12,1C 10,03
,A3,00,01 ,00,30,07,72,9B,99,90,00,12,12,1D 10,03
,A3,00,01,00,30,07,70,9C,98,94,00,12, 12,1F 10,03
,A3,00,01,00,38,05,74,76,77,00,00,12,12,2C
10,03,A3,00,01,00,B4,03,6C,3E,3A,00,00,12,00,31 10,03
,A3,00,01,00,30,06,72,72 ,71,00,00,12,12,33

第一个字节保持不变,不确定我是否应该将它们计入校验和。

所有帮助表示赞赏。

1个回答

没有检查第二套

但你的第一组似乎被 0x55 异或

0x55 ^ 0x18 == 0x4d(8 位校验和)

编辑

好的,我的猜测是这里是一个 python 脚本,它使用粘贴到文本文件的数据副本打印 chksum

infile = open("timepass.txt" , "r")
while True:
    line = infile.readline()
    a = line.split(",")
    sum = 0x0;
    for i in range(0,len(a)-1,1):
        sum = sum + int(a[i],16)
    if not line:
        break
    print hex( ((sum % 0x100) ^ 0x55) ),
infile.close()

这是结果

C:\>python chksum.py
0x18 0x40 0x41 0x43 0x48 0x48 0x49 0x4a 
0x4e 0x68 0x6b 0x70 0x74 0x76 0x78 0x78 
0x2 0x6 0xb 0x12 0x12 0x12 0x13 0x14 
0x17 0x1c 0x1c 0x1d 0x1f 0x2c 0x31 0x33