How to determine checksum calculation method


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.
 
Ad

Advertisements

F

Flash Gordon

Andrus said:
Device connected to serial port accepts data packets in the form

Standard C knows nothing about serial ports.

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.

<sbip>

Standard C also knows exactly nothing about this application of yours.

Nothing else you posted has anything to do with C either. So your post
is completely off topic. And no, we don't care if the application was
written in C or if you think we could do the analysis with a C program.
There are billions of programs written in C and an infinite number that
could be written in C.

I suggest you go and ask the people who supplied the SW and if they
won't tell you I suggest you throw it away and use something else instead.
 
Ad

Advertisements


Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top