3

I am trying to reverse engineer an 8-bit checksum algorithm of a Chinese machine with RS485 communication and ASCII encoding. I tried with all the algorithm I could find, but it seems that data packets don't have a standard structure.

Example 1:

!13.2210101.3<

The frame included and all frame characters seem to be from ";" to "Z".

Example 2:

!14.0000000.0A
!13.0000000.0@

I guess that the checksum will be linear because (4-3) = (A-@).

Another Frame:

!13.0450000.0L
!13.3280102.5>
!13.6190106.7G
!131.390104.8I
!131.670101.4C
!131.960101.1B
!132.150100.4=
!132.150100.4=
!13.0680100.4<
!13.3540090.5M
!13.6340090.7P
!13.9230089.7X
!131.200089.8T
!131.690089.1R
!131.970088.2R
!132.260088.0I
!132.540087.3L
!132.740087.3O
!132.740087.3O
!13.0590087.3I
!13.3310094.2H
!13.6280093.3H
!13.9080093.7M

I really want to go build a neutral network for solving this problem. Somebody help me please.

Edit

Some raw data when I changed the address from 1 to 0:

!03.0000000.0?
!03.1970100.3D
!03.1990113.5L
!03.2010108.9D
!03.1980099.1T
!04.0000000.0@
!04.0040168.1D
!04.0050149.9L
!04.0040173.3B
!04.0050167.7J
Elian Kamal
  • 364
  • 2
  • 10
  • I've been toying around with the data but could not find a solution. Can you clarify the format of what you posted? For example, did you add the '!' and '.'? Did you fix the length of the middle field? In my testing I assumed the last 2 characters are the checksum, but that means the character range is from '0' (zero) to 'Z', which is 42 characters. I assume it's a base42 encoding of the actual checksum with a custom alphabet but it didn't result in anything helpful. – Johann Aydinbas Sep 04 '18 at 16:47
  • that is raw data i receive from device. i just remove in the end. I think '!' just a identify character for RS485, maybe no need for checksum calculation. – Giàu Nguyễn Thanh Sep 05 '18 at 03:08

0 Answers0