A
Andrus
Device connected to serial port accepts data packets in the form
02 0x57 ll ll 00 00 00 00 dd..dd cc cc
02 (1 byte ) is message prefix
0x57 (1 byte) is message type (W=Write)
ll ll ( 2 bytes) are message data length
00 00 00 00 (4 bytes) seems to be constant zero bytes
dd..dd ( ll ll bytes) is message content which I can vary.
cc cc ( 2 bytes ) is problebly message checksum
I need to determine method which is used for checksum calculation.
Application which generates those packets is in 50 KB .exe file form, no
source code.
It must be some simple method.
I can genereate data packets and listen them to observe created checksums.
I experimented with 1 byte data packets and got the following results.
Any idea which method is used for checksum calculation ?
Observed checksum is in the last two bytes.
57 00 01 00 00 00 00 00 89 EF
57 00 01 00 00 00 00 01 09 EA
57 00 01 00 00 00 00 02 09 E0
57 00 01 00 00 00 00 03 89 E5
57 00 01 00 00 00 00 04 09 F4
57 00 01 00 00 00 00 05 89 F1
57 00 01 00 00 00 00 06 89 FB
57 00 01 00 00 00 00 07 09 FE
57 00 01 00 00 00 00 08 09 DC
57 00 01 00 00 00 00 09 89 D9
57 00 01 00 00 00 00 0A 89 D3
57 00 01 00 00 00 00 0B 09 D6
57 00 01 00 00 00 00 0C 89 C7
57 00 01 00 00 00 00 0D 09 C2
57 00 01 00 00 00 00 0E 09 C8
57 00 01 00 00 00 00 0F 89 CD
57 00 01 00 00 00 00 10 09 8C
57 00 01 00 00 00 00 11 89 89
57 00 01 00 00 00 00 12 89 83
57 00 01 00 00 00 00 13 09 86
57 00 01 00 00 00 00 14 89 97
57 00 01 00 00 00 00 15 09 92
57 00 01 00 00 00 00 16 09 98
57 00 01 00 00 00 00 17 89 9D
57 00 01 00 00 00 00 18 89 BF
57 00 01 00 00 00 00 19 09 BA
57 00 01 00 00 00 00 1A 09 B0
57 00 01 00 00 00 00 1B 89 B5
57 00 01 00 00 00 00 1C 09 A4
57 00 01 00 00 00 00 1D 89 A1
57 00 01 00 00 00 00 1E 89 AB
57 00 01 00 00 00 00 1F 09 AE
57 00 01 00 00 00 00 20 09 2C
57 00 01 00 00 00 00 21 89 29
57 00 01 00 00 00 00 22 89 23
57 00 01 00 00 00 00 23 09 26
57 00 01 00 00 00 00 24 89 37
57 00 01 00 00 00 00 25 09 32
57 00 01 00 00 00 00 26 09 38
.....
57 00 01 00 00 00 00 F9 8B F9
57 00 01 00 00 00 00 FA 8B F3
57 00 01 00 00 00 00 FB 0B F6
57 00 01 00 00 00 00 FC 8B E7
57 00 01 00 00 00 00 FD 0B E2
57 00 01 00 00 00 00 FE 0B E8
57 00 01 00 00 00 00 FF 8B ED
Andrus.
02 0x57 ll ll 00 00 00 00 dd..dd cc cc
02 (1 byte ) is message prefix
0x57 (1 byte) is message type (W=Write)
ll ll ( 2 bytes) are message data length
00 00 00 00 (4 bytes) seems to be constant zero bytes
dd..dd ( ll ll bytes) is message content which I can vary.
cc cc ( 2 bytes ) is problebly message checksum
I need to determine method which is used for checksum calculation.
Application which generates those packets is in 50 KB .exe file form, no
source code.
It must be some simple method.
I can genereate data packets and listen them to observe created checksums.
I experimented with 1 byte data packets and got the following results.
Any idea which method is used for checksum calculation ?
Observed checksum is in the last two bytes.
57 00 01 00 00 00 00 00 89 EF
57 00 01 00 00 00 00 01 09 EA
57 00 01 00 00 00 00 02 09 E0
57 00 01 00 00 00 00 03 89 E5
57 00 01 00 00 00 00 04 09 F4
57 00 01 00 00 00 00 05 89 F1
57 00 01 00 00 00 00 06 89 FB
57 00 01 00 00 00 00 07 09 FE
57 00 01 00 00 00 00 08 09 DC
57 00 01 00 00 00 00 09 89 D9
57 00 01 00 00 00 00 0A 89 D3
57 00 01 00 00 00 00 0B 09 D6
57 00 01 00 00 00 00 0C 89 C7
57 00 01 00 00 00 00 0D 09 C2
57 00 01 00 00 00 00 0E 09 C8
57 00 01 00 00 00 00 0F 89 CD
57 00 01 00 00 00 00 10 09 8C
57 00 01 00 00 00 00 11 89 89
57 00 01 00 00 00 00 12 89 83
57 00 01 00 00 00 00 13 09 86
57 00 01 00 00 00 00 14 89 97
57 00 01 00 00 00 00 15 09 92
57 00 01 00 00 00 00 16 09 98
57 00 01 00 00 00 00 17 89 9D
57 00 01 00 00 00 00 18 89 BF
57 00 01 00 00 00 00 19 09 BA
57 00 01 00 00 00 00 1A 09 B0
57 00 01 00 00 00 00 1B 89 B5
57 00 01 00 00 00 00 1C 09 A4
57 00 01 00 00 00 00 1D 89 A1
57 00 01 00 00 00 00 1E 89 AB
57 00 01 00 00 00 00 1F 09 AE
57 00 01 00 00 00 00 20 09 2C
57 00 01 00 00 00 00 21 89 29
57 00 01 00 00 00 00 22 89 23
57 00 01 00 00 00 00 23 09 26
57 00 01 00 00 00 00 24 89 37
57 00 01 00 00 00 00 25 09 32
57 00 01 00 00 00 00 26 09 38
.....
57 00 01 00 00 00 00 F9 8B F9
57 00 01 00 00 00 00 FA 8B F3
57 00 01 00 00 00 00 FB 0B F6
57 00 01 00 00 00 00 FC 8B E7
57 00 01 00 00 00 00 FD 0B E2
57 00 01 00 00 00 00 FE 0B E8
57 00 01 00 00 00 00 FF 8B ED
Andrus.