Forum: Mikrocontroller und Digitale Elektronik Prüfsummen berechnung herausfinden


von dave (Gast)


Lesenswert?

Hallo,
ich untersuche gerade ein Protokoll, welches zwei Parteien über eine 
RS232 Verbindung miteinander sprechen. Der Aufbau ist nicht sonderlich 
kompliziert. Das Einzige was mir Kopfzerbrechen bereitet ist das 
Verfahren mit dem die Prüfsumme berechnet wird. Ich hab schon alles 
Mögliche ausprobiert wie Aufsummieren (mit modulo 256 etc), XOR, CRC-8, 
das alles über die gesamte Nachricht oder nur die Nutzdaten...
Vielleicht sieht ja jemand sofort wie das Verfahren funktioniert oder 
ich hab irgendwas triviales übersehen.

Das Protokoll ist folgendermaßen aufgebaut:
Start der Nachricht - 10 02 (ascii stx)
Danach kommt Nachrichtentyp, Parameterkennung und Parameterwert
Ende der Nachricht - 10 03 (ascii etx)
und das letzte Byte ist die Prüfsumme.

Hier also ein paar Nachrichten aus dem Protokoll:

10 02 A0 0B 62 02 DC 00 1E 10 03 35
10 02 A0 0B 62 02 DC 75 30 10 03 40

10 02 A0 0B 62 02 DB 00 1E 10 03 4F
10 02 A0 0B 62 02 DB 13 37 10 03 49

10 02 A0 0B 62 02 D2 00 5A 10 03 E6
10 02 A0 0B 62 02 D2 00 8C 10 03 6C

10 02 A0 0B 62 02 A3 00 FE 10 03 6C
10 02 A0 0B 62 02 A3 02 B2 10 03 18

10 02 A0 0B 62 81 70 00 10 03 C4
10 02 A0 0B 62 81 70 01 10 03 9A

Jedes Nachrichtenpaar setzt den gleichen Parameter, nur der Wert ist 
jeweils unterschiedlich.

Vielen Dank für jeden Tipp
Dave

von Karl H. (kbuchegg)


Lesenswert?

dave schrieb:

> Jedes Nachrichtenpaar setzt den gleichen Parameter, nur der Wert ist
> jeweils unterschiedlich.

Kannst du versuchen ein paar Nachrichtenpärchen zu forcieren, die sich 
nur in 1 Bit unterschieden (Wert um 1 höher).

Wenn sich die Proüfsumme dann auch nur um 1 Bit oder 1 Wert 
unterscheidet, schätze ich mal, dass es eher was einfaches auf Bitebene 
sein könnte. Wenn da aber heftige Sprünge entstehen, dann wirds wohl 
eine etwas komplexere Verrechnung der Einzelbytes sein.

von spontan (Gast)


Lesenswert?

Zeile 1 und 3 unterscheiden sich nur um ein Bit.
Schon wirds kompliziert.

von Karl H. (kbuchegg)


Lesenswert?

spontan schrieb:
> Zeile 1 und 3 unterscheiden sich nur um ein Bit.

Na ja. Von B auf C sind 3 Bit.

Allerdings ....
> Schon wirds kompliziert.
... ich fürchte du hast recht.

von Dave (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Kannst du versuchen ein paar Nachrichtenpärchen zu forcieren, die sich
> nur in 1 Bit unterschieden (Wert um 1 höher).

10 02 A0 0B 62 82 9F 03 E8 10 03 C5
10 02 A0 0B 62 82 9F 03 E9 10 03 9B
10 02 A0 0B 62 82 9F 03 EA 10 03 79
10 02 A0 0B 62 82 9F 03 EB 10 03 27

von Karl H. (kbuchegg)


Lesenswert?

Dave schrieb:
> Karl Heinz Buchegger schrieb:
>> Kannst du versuchen ein paar Nachrichtenpärchen zu forcieren, die sich
>> nur in 1 Bit unterschieden (Wert um 1 höher).
>
> 10 02 A0 0B 62 82 9F 03 E8 10 03 C5
> 10 02 A0 0B 62 82 9F 03 E9 10 03 9B
> 10 02 A0 0B 62 82 9F 03 EA 10 03 79
> 10 02 A0 0B 62 82 9F 03 EB 10 03 27

Ach du Schande. Ich würde mal sagen, damit sind alle Systeme die einfach 
nur auf einfachen Bitoperationen der Einzelbytes beruhen (egal ob 
invertiert oder Nibble getauscht oder sonstwie) draussen.

von asdf (Gast)


Lesenswert?

Wenn du 10 Mal hintereinander das gleiche Paket schickst, ist die 
Prüfsumme auch 10 Mal die selbe?

von Dave (Gast)


Lesenswert?

asdf schrieb:
> Wenn du 10 Mal hintereinander das gleiche Paket schickst, ist die
> Prüfsumme auch 10 Mal die selbe?

Ja. Und ein Packet das ich letzte Woche mitgeschnitten habe, ist heute 
auch immer noch gültig und tut das Erwartete.

von asdf (Gast)


Lesenswert?

Hm. Kannst du mal 256 Einträge posten, wobei ein Byte im Paket von 0-255 
durchiteriert wird und alle anderen gleich bleiben?

Was sind das für Geräte die da miteinander sprechen?

Evtl. ist es auch irgendein XOR oder MD5 or sonstwas mit speziellem 
"Key" oder Seed der da angewendet wird, d.h. eine Zusatzinfo die man 
braucht, die aus dem Stream nicht (ohne weiteres) ersichtlich ist.

von Dave (Gast)


Lesenswert?

asdf schrieb:
> Kannst du mal 256 Einträge posten, wobei ein Byte im Paket von 0-255
> durchiteriert wird und alle anderen gleich bleiben?

10 02 A0 0B 62 81 73 00 00 10 03 4F
10 02 A0 0B 62 81 73 00 01 10 03 11
10 02 A0 0B 62 81 73 00 02 10 03 F3
10 02 A0 0B 62 81 73 00 03 10 03 AD
10 02 A0 0B 62 81 73 00 04 10 03 2E
10 02 A0 0B 62 81 73 00 05 10 03 70
10 02 A0 0B 62 81 73 00 06 10 03 92
10 02 A0 0B 62 81 73 00 07 10 03 CC
10 02 A0 0B 62 81 73 00 08 10 03 8D
10 02 A0 0B 62 81 73 00 09 10 03 D3
10 02 A0 0B 62 81 73 00 0A 10 03 31
10 02 A0 0B 62 81 73 00 0B 10 03 6F
10 02 A0 0B 62 81 73 00 0C 10 03 EC
10 02 A0 0B 62 81 73 00 0D 10 03 B2
10 02 A0 0B 62 81 73 00 0E 10 03 50
10 02 A0 0B 62 81 73 00 0F 10 03 0E
10 02 A0 0B 62 81 73 00 10 10 10 03 D2 (10 maskiert)
10 02 A0 0B 62 81 73 00 11 10 03 8C
10 02 A0 0B 62 81 73 00 12 10 03 6E
10 02 A0 0B 62 81 73 00 13 10 03 30
10 02 A0 0B 62 81 73 00 14 10 03 B3
10 02 A0 0B 62 81 73 00 15 10 03 ED
10 02 A0 0B 62 81 73 00 16 10 03 0F
10 02 A0 0B 62 81 73 00 17 10 03 51
10 02 A0 0B 62 81 73 00 18 10 03 10
10 02 A0 0B 62 81 73 00 19 10 03 4E
10 02 A0 0B 62 81 73 00 1A 10 03 AC
10 02 A0 0B 62 81 73 00 1B 10 03 F2
10 02 A0 0B 62 81 73 00 1C 10 03 71
10 02 A0 0B 62 81 73 00 1D 10 03 2F
10 02 A0 0B 62 81 73 00 1E 10 03 CD
10 02 A0 0B 62 81 73 00 1F 10 03 93
10 02 A0 0B 62 81 73 00 20 10 03 6C
10 02 A0 0B 62 81 73 00 21 10 03 32
10 02 A0 0B 62 81 73 00 22 10 03 D0
10 02 A0 0B 62 81 73 00 23 10 03 8E
10 02 A0 0B 62 81 73 00 24 10 03 0D
10 02 A0 0B 62 81 73 00 25 10 03 53
10 02 A0 0B 62 81 73 00 26 10 03 B1
10 02 A0 0B 62 81 73 00 27 10 03 EF
10 02 A0 0B 62 81 73 00 28 10 03 AE
10 02 A0 0B 62 81 73 00 29 10 03 F0
10 02 A0 0B 62 81 73 00 2A 10 03 12
10 02 A0 0B 62 81 73 00 2B 10 03 4C
10 02 A0 0B 62 81 73 00 2C 10 03 CF
10 02 A0 0B 62 81 73 00 2D 10 03 91
10 02 A0 0B 62 81 73 00 2E 10 03 73
10 02 A0 0B 62 81 73 00 2F 10 03 2D
10 02 A0 0B 62 81 73 00 30 10 03 F1
10 02 A0 0B 62 81 73 00 31 10 03 AF
10 02 A0 0B 62 81 73 00 32 10 03 4D
10 02 A0 0B 62 81 73 00 33 10 03 13
10 02 A0 0B 62 81 73 00 34 10 03 90
10 02 A0 0B 62 81 73 00 35 10 03 CE
10 02 A0 0B 62 81 73 00 36 10 03 2C
10 02 A0 0B 62 81 73 00 37 10 03 72
10 02 A0 0B 62 81 73 00 38 10 03 33
10 02 A0 0B 62 81 73 00 39 10 03 6D
10 02 A0 0B 62 81 73 00 3A 10 03 8F
10 02 A0 0B 62 81 73 00 3B 10 03 D1
10 02 A0 0B 62 81 73 00 3C 10 03 52
10 02 A0 0B 62 81 73 00 3D 10 03 0C
10 02 A0 0B 62 81 73 00 3E 10 03 EE
10 02 A0 0B 62 81 73 00 3F 10 03 B0
10 02 A0 0B 62 81 73 00 40 10 03 09
10 02 A0 0B 62 81 73 00 41 10 03 57
10 02 A0 0B 62 81 73 00 42 10 03 B5
10 02 A0 0B 62 81 73 00 43 10 03 EB
10 02 A0 0B 62 81 73 00 44 10 03 68
10 02 A0 0B 62 81 73 00 45 10 03 36
10 02 A0 0B 62 81 73 00 46 10 03 D4
10 02 A0 0B 62 81 73 00 47 10 03 8A
10 02 A0 0B 62 81 73 00 48 10 03 CB
10 02 A0 0B 62 81 73 00 49 10 03 95
10 02 A0 0B 62 81 73 00 4A 10 03 77
10 02 A0 0B 62 81 73 00 4B 10 03 29
10 02 A0 0B 62 81 73 00 4C 10 03 AA
10 02 A0 0B 62 81 73 00 4D 10 03 F4
10 02 A0 0B 62 81 73 00 4E 10 03 16
10 02 A0 0B 62 81 73 00 4F 10 03 48
10 02 A0 0B 62 81 73 00 50 10 03 94
10 02 A0 0B 62 81 73 00 51 10 03 CA
10 02 A0 0B 62 81 73 00 52 10 03 28
10 02 A0 0B 62 81 73 00 53 10 03 76
10 02 A0 0B 62 81 73 00 54 10 03 F5
10 02 A0 0B 62 81 73 00 55 10 03 AB
10 02 A0 0B 62 81 73 00 56 10 03 49
10 02 A0 0B 62 81 73 00 57 10 03 17
10 02 A0 0B 62 81 73 00 58 10 03 56
10 02 A0 0B 62 81 73 00 59 10 03 08
10 02 A0 0B 62 81 73 00 5A 10 03 EA
10 02 A0 0B 62 81 73 00 5B 10 03 B4
10 02 A0 0B 62 81 73 00 5C 10 03 37
10 02 A0 0B 62 81 73 00 5D 10 03 69
10 02 A0 0B 62 81 73 00 5E 10 03 8B
10 02 A0 0B 62 81 73 00 5F 10 03 D5
10 02 A0 0B 62 81 73 00 60 10 03 2A
10 02 A0 0B 62 81 73 00 61 10 03 74
10 02 A0 0B 62 81 73 00 62 10 03 96
10 02 A0 0B 62 81 73 00 63 10 03 C8
10 02 A0 0B 62 81 73 00 64 10 03 4B
10 02 A0 0B 62 81 73 00 65 10 03 15
10 02 A0 0B 62 81 73 00 66 10 03 F7
10 02 A0 0B 62 81 73 00 67 10 03 A9
10 02 A0 0B 62 81 73 00 68 10 03 E8
10 02 A0 0B 62 81 73 00 69 10 03 B6
10 02 A0 0B 62 81 73 00 6A 10 03 54
10 02 A0 0B 62 81 73 00 6B 10 03 0A
10 02 A0 0B 62 81 73 00 6C 10 03 89
10 02 A0 0B 62 81 73 00 6D 10 03 D7
10 02 A0 0B 62 81 73 00 6E 10 03 35
10 02 A0 0B 62 81 73 00 6F 10 03 6B
10 02 A0 0B 62 81 73 00 70 10 03 B7
10 02 A0 0B 62 81 73 00 71 10 03 E9
10 02 A0 0B 62 81 73 00 72 10 03 0B
10 02 A0 0B 62 81 73 00 73 10 03 55
10 02 A0 0B 62 81 73 00 74 10 03 D6
10 02 A0 0B 62 81 73 00 75 10 03 88
10 02 A0 0B 62 81 73 00 76 10 03 6A
10 02 A0 0B 62 81 73 00 77 10 03 34
10 02 A0 0B 62 81 73 00 78 10 03 75
10 02 A0 0B 62 81 73 00 79 10 03 2B
10 02 A0 0B 62 81 73 00 7A 10 03 C9
10 02 A0 0B 62 81 73 00 7B 10 03 97
10 02 A0 0B 62 81 73 00 7C 10 03 14
10 02 A0 0B 62 81 73 00 7D 10 03 4A
10 02 A0 0B 62 81 73 00 7E 10 03 A8
10 02 A0 0B 62 81 73 00 7F 10 03 F6
10 02 A0 0B 62 81 73 00 80 10 03 C3
10 02 A0 0B 62 81 73 00 81 10 03 9D
10 02 A0 0B 62 81 73 00 82 10 03 7F
10 02 A0 0B 62 81 73 00 83 10 03 21
10 02 A0 0B 62 81 73 00 84 10 03 A2
10 02 A0 0B 62 81 73 00 85 10 03 FC
10 02 A0 0B 62 81 73 00 86 10 03 1E
10 02 A0 0B 62 81 73 00 87 10 03 40
10 02 A0 0B 62 81 73 00 88 10 03 01
10 02 A0 0B 62 81 73 00 89 10 03 5F
10 02 A0 0B 62 81 73 00 8A 10 03 BD
10 02 A0 0B 62 81 73 00 8B 10 03 E3
10 02 A0 0B 62 81 73 00 8C 10 03 60
10 02 A0 0B 62 81 73 00 8D 10 03 3E
10 02 A0 0B 62 81 73 00 8E 10 03 DC
10 02 A0 0B 62 81 73 00 8F 10 03 82
10 02 A0 0B 62 81 73 00 90 10 03 5E
10 02 A0 0B 62 81 73 00 91 10 03 00
10 02 A0 0B 62 81 73 00 92 10 03 E2
10 02 A0 0B 62 81 73 00 93 10 03 BC
10 02 A0 0B 62 81 73 00 94 10 03 3F
10 02 A0 0B 62 81 73 00 95 10 03 61
10 02 A0 0B 62 81 73 00 96 10 03 83
10 02 A0 0B 62 81 73 00 97 10 03 DD
10 02 A0 0B 62 81 73 00 98 10 03 9C
10 02 A0 0B 62 81 73 00 99 10 03 C2
10 02 A0 0B 62 81 73 00 9A 10 03 20
10 02 A0 0B 62 81 73 00 9B 10 03 7E
10 02 A0 0B 62 81 73 00 9C 10 03 FD
10 02 A0 0B 62 81 73 00 9D 10 03 A3
10 02 A0 0B 62 81 73 00 9E 10 03 41
10 02 A0 0B 62 81 73 00 9F 10 03 1F
10 02 A0 0B 62 81 73 00 A0 10 03 E0
10 02 A0 0B 62 81 73 00 A1 10 03 BE
10 02 A0 0B 62 81 73 00 A2 10 03 5C
10 02 A0 0B 62 81 73 00 A3 10 03 02
10 02 A0 0B 62 81 73 00 A4 10 03 81
10 02 A0 0B 62 81 73 00 A5 10 03 DF
10 02 A0 0B 62 81 73 00 A6 10 03 3D
10 02 A0 0B 62 81 73 00 A7 10 03 63
10 02 A0 0B 62 81 73 00 A8 10 03 22
10 02 A0 0B 62 81 73 00 A9 10 03 7C
10 02 A0 0B 62 81 73 00 AA 10 03 9E
10 02 A0 0B 62 81 73 00 AB 10 03 C0
10 02 A0 0B 62 81 73 00 AC 10 03 43
10 02 A0 0B 62 81 73 00 AD 10 03 1D
10 02 A0 0B 62 81 73 00 AE 10 03 FF
10 02 A0 0B 62 81 73 00 AF 10 03 A1
10 02 A0 0B 62 81 73 00 B0 10 03 7D
10 02 A0 0B 62 81 73 00 B1 10 03 23
10 02 A0 0B 62 81 73 00 B2 10 03 C1
10 02 A0 0B 62 81 73 00 B3 10 03 9F
10 02 A0 0B 62 81 73 00 B4 10 03 1C
10 02 A0 0B 62 81 73 00 B5 10 03 42
10 02 A0 0B 62 81 73 00 B6 10 03 A0
10 02 A0 0B 62 81 73 00 B7 10 03 FE
10 02 A0 0B 62 81 73 00 B8 10 03 BF
10 02 A0 0B 62 81 73 00 B9 10 03 E1
10 02 A0 0B 62 81 73 00 BA 10 03 03
10 02 A0 0B 62 81 73 00 BB 10 03 5D
10 02 A0 0B 62 81 73 00 BC 10 03 DE
10 02 A0 0B 62 81 73 00 BD 10 03 80
10 02 A0 0B 62 81 73 00 BE 10 03 62
10 02 A0 0B 62 81 73 00 BF 10 03 3C
10 02 A0 0B 62 81 73 00 C0 10 03 85
10 02 A0 0B 62 81 73 00 C1 10 03 DB
10 02 A0 0B 62 81 73 00 C2 10 03 39
10 02 A0 0B 62 81 73 00 C3 10 03 67
10 02 A0 0B 62 81 73 00 C4 10 03 E4
10 02 A0 0B 62 81 73 00 C5 10 03 BA
10 02 A0 0B 62 81 73 00 C6 10 03 58
10 02 A0 0B 62 81 73 00 C7 10 03 06
10 02 A0 0B 62 81 73 00 C8 10 03 47
10 02 A0 0B 62 81 73 00 C9 10 03 19
10 02 A0 0B 62 81 73 00 CA 10 03 FB
10 02 A0 0B 62 81 73 00 CB 10 03 A5
10 02 A0 0B 62 81 73 00 CC 10 03 26
10 02 A0 0B 62 81 73 00 CD 10 03 78
10 02 A0 0B 62 81 73 00 CE 10 03 9A
10 02 A0 0B 62 81 73 00 CF 10 03 C4
10 02 A0 0B 62 81 73 00 D0 10 03 18
10 02 A0 0B 62 81 73 00 D1 10 03 46
10 02 A0 0B 62 81 73 00 D2 10 03 A4
10 02 A0 0B 62 81 73 00 D3 10 03 FA
10 02 A0 0B 62 81 73 00 D4 10 03 79
10 02 A0 0B 62 81 73 00 D5 10 03 27
10 02 A0 0B 62 81 73 00 D6 10 03 C5
10 02 A0 0B 62 81 73 00 D7 10 03 9B
10 02 A0 0B 62 81 73 00 D8 10 03 DA
10 02 A0 0B 62 81 73 00 D9 10 03 84
10 02 A0 0B 62 81 73 00 DA 10 03 66
10 02 A0 0B 62 81 73 00 DB 10 03 38
10 02 A0 0B 62 81 73 00 DC 10 03 BB
10 02 A0 0B 62 81 73 00 DD 10 03 E5
10 02 A0 0B 62 81 73 00 DE 10 03 07
10 02 A0 0B 62 81 73 00 DF 10 03 59
10 02 A0 0B 62 81 73 00 E0 10 03 A6
10 02 A0 0B 62 81 73 00 E1 10 03 F8
10 02 A0 0B 62 81 73 00 E2 10 03 1A
10 02 A0 0B 62 81 73 00 E3 10 03 44
10 02 A0 0B 62 81 73 00 E4 10 03 C7
10 02 A0 0B 62 81 73 00 E5 10 03 99
10 02 A0 0B 62 81 73 00 E6 10 03 7B
10 02 A0 0B 62 81 73 00 E7 10 03 25
10 02 A0 0B 62 81 73 00 E8 10 03 64
10 02 A0 0B 62 81 73 00 E9 10 03 3A
10 02 A0 0B 62 81 73 00 EA 10 03 D8
10 02 A0 0B 62 81 73 00 EB 10 03 86
10 02 A0 0B 62 81 73 00 EC 10 03 05
10 02 A0 0B 62 81 73 00 ED 10 03 5B
10 02 A0 0B 62 81 73 00 EE 10 03 B9
10 02 A0 0B 62 81 73 00 EF 10 03 E7
10 02 A0 0B 62 81 73 00 F0 10 03 3B
10 02 A0 0B 62 81 73 00 F1 10 03 65
10 02 A0 0B 62 81 73 00 F2 10 03 87
10 02 A0 0B 62 81 73 00 F3 10 03 D9
10 02 A0 0B 62 81 73 00 F4 10 03 5A
10 02 A0 0B 62 81 73 00 F5 10 03 04
10 02 A0 0B 62 81 73 00 F6 10 03 E6
10 02 A0 0B 62 81 73 00 F7 10 03 B8
10 02 A0 0B 62 81 73 00 F8 10 03 F9
10 02 A0 0B 62 81 73 00 F9 10 03 A7
10 02 A0 0B 62 81 73 00 FA 10 03 45
10 02 A0 0B 62 81 73 00 FB 10 03 1B
10 02 A0 0B 62 81 73 00 FC 10 03 98
10 02 A0 0B 62 81 73 00 FD 10 03 C6
10 02 A0 0B 62 81 73 00 FE 10 03 24
10 02 A0 0B 62 81 73 00 FF 10 03 7A
10 02 A0 0B 62 81 73 01 00 10 03 8B

> Was sind das für Geräte die da miteinander sprechen?
Steuerungssoftware und Frequenzumrichter

von Dave (Gast)


Lesenswert?

Ich hab jetzt noch mal nach ein paar möglichst kurzen Nachrichten 
gesucht, um die Rechnung nachzuvollziehen. Allerdings bekomm ich es 
nicht hin.

10 02 80 00 10 03 2F

10 02 C0 34 01 10 03 1B

10 02 40 34 00 06 10 03 7D
10 02 40 34 00 15 10 03 02
10 02 40 34 00 17 10 03 BE
10 02 40 34 00 18 10 03 FF
10 02 40 34 00 19 10 03 A1

10 02 00 04 02 7D 10 03 0A

von Stefan W. (dl6dx)


Lesenswert?

dave schrieb:
> Aufsummieren (mit modulo 256 etc)

Hi,

ich hab gerade mal in der Doku eines uralten Projekts gestöbert, in dem 
ein ähnliches Protokoll verwendet wurde. Dort war die Prüfsumme das 
Zweierkomplement der modulo 256 berechneten Bytesumme.

Schau dir also auch mal solche Varianten an.

Viel Erfolg!

Grüße

Stefan

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.