Forum: Mikrocontroller und Digitale Elektronik Richtiges Checksummenverfahren finden?!


von Robert P. (robertoo)


Angehängte Dateien:

Lesenswert?

Hallo Liebe Leute
Ich brauche wieder Eure Hilfe.
Ich habe da ein Zigbee Gerät mit einem MSP430F437 Chip
Das hat intern einen EEprom Speicher, dass scheinbar in zwei gleiche 
Bereiche aufgeteilt ist. (2 gleiche Bänke)
Ich möchte gerne in einem dieser Speicherbereiche(Bänke) etwas ändern.
Scheinbar ist das aber mit einer Checksumme gesichert. (letzten zwei 
Byte)
Wenn ich in diesem Bereich etwas ändere (ohne die Cecksumme zu ändern) 
geht das Ding auf Systemtest.

Der Ganze Speicher schaut so aus:
@00001000
00 D2 46 97 76 7E 05 46 BB D2 49 46 63 7E 14 97
94 00 12 44 44 00 01 43 53 DE AD BE EF 60 0D F0
0D DE AD CA FE F0 0D CA FE A6 4B D1 EC 9F 98 C8
69 00 00 49 D4 00 00 00 01 FF FF 00 1E 84 80 FF
FF FF FF FF FF 32 30 30 36 2D 30 31 2D 30 31 20
30 30 3A 30 30 3A 30 30 00 07 0D 00 00 00 01 00
00 FF FF FF FF 08 0C 03 84 00 00 FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF 3D 94
55 D2 46 97 76 7E 05 46 BB D2 49 46 63 7E 14 97
94 00 12 44 44 00 01 43 53 DE AD BE EF 60 0D F0
0D DE AD CA FE F0 0D CA FE A6 4B D1 EC 9F 98 C8
69 00 00 49 D4 00 00 00 01 FF FF 00 1E 84 80 FF
FF FF FF FF FF 32 30 30 36 2D 30 31 2D 30 31 20
30 30 3A 30 30 3A 30 30 00 07 0D 00 00 00 01 00
00 FF FF FF FF 08 0C 03 84 00 00 FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF 3D 94


Ab 0x1080 scheint es der untere Speicherbereich zu sein.
(beide sind von den Daten her gleich, außer das erste Byte)
Checksumme scheint hier die "3D 94" (auf 0x10FE ) zu sein.
Gleich wie auf 0x107E

Also Bank 1: (oben)
00 D2 46 97 76 7E 05 46 BB D2 49 46 63 7E 14 97
94 00 12 44 44 00 01 43 53 DE AD BE EF 60 0D F0
0D DE AD CA FE F0 0D CA FE A6 4B D1 EC 9F 98 C8
69 00 00 49 D4 00 00 00 01 FF FF 00 1E 84 80 FF
FF FF FF FF FF 32 30 30 36 2D 30 31 2D 30 31 20
30 30 3A 30 30 3A 30 30 00 07 0D 00 00 00 01 00
00 FF FF FF FF 08 0C 03 84 00 00 FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF 3D 94

und untere Bank 2
55 D2 46 97 76 7E 05 46 BB D2 49 46 63 7E 14 97
94 00 12 44 44 00 01 43 53 DE AD BE EF 60 0D F0
0D DE AD CA FE F0 0D CA FE A6 4B D1 EC 9F 98 C8
69 00 00 49 D4 00 00 00 01 FF FF 00 1E 84 80 FF
FF FF FF FF FF 32 30 30 36 2D 30 31 2D 30 31 20
30 30 3A 30 30 3A 30 30 00 07 0D 00 00 00 01 00
00 FF FF FF FF 08 0C 03 84 00 00 FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF 3D 94

Die 3D 94 am Ende scheint die Checksumme zu sein.

Leider finde ich nicht raus, wie diese Checksumme errechnet wird.
Habe schon alle Online Kalkulatoren versucht, aber kein Ergebnis passt.
Eins habe ich rausgefunden, dass wenn ich einen Wert um 1 erhöhe, geht 
die
Checksumme auch um 1 rauf...
Habe auch probiert das erste Byte pro Bank weg zu lassen..
Weill 00 und 55 ja sehr unterschiedlich sind und vielleicht nicht zur 
Checksummenberechung verwenden werden ?

Habe jetzt auch probiert die Adressen mit in die Berechnung aufzunehmen.
Geht aber auch nicht :-(

Habt Ihr vielleicht einen Tip, wie ich die Checksumme neu berechnen kann 
?

Bitte bitte um Hilfe !

Danke für Eure Antworten  :-)

l.G. Robert

von Lukas (Gast)


Lesenswert?

XOR auch schon versucht? Notfalls duchprobieren gibt ja nur 255 
Möglichkeiten.

von Lukas (Gast)


Lesenswert?

Das Tool hier
https://toolslick.com/math/bitwise/xor-calculator
spuckt bei Intermediate Result 2 94 als checksum aus.

versuch wärs Wert.

von MaWin (Gast)


Lesenswert?

Robert P. schrieb:
> Eins habe ich rausgefunden, dass wenn ich einen Wert um 1 erhöhe, geht
> die
> Checksumme auch um 1 rauf...

Na dann wird die Checksumme wohl ganz einfach eine Summe aller Bytes mod 
0x10000 sein.

von Lukas (Gast)


Lesenswert?

Lukas schrieb:
> spuckt bei Intermediate Result 2 94 als checksum aus.

Sorry war totaler blödsinn ;-)

von Michael B. (laberkopp)


Lesenswert?

Robert P. schrieb:
> ich einen Wert um 1 erhöhe, geht die
> Checksumme auch um 1 rauf...

Na da wird es schon etwas mehr tests benötigen.

Ist egal welches byte um 1 erhöht wird, und wenn es um 2 erhoht wird, 
und was passiert nachdem 256 bytes um 1 erhöht wurden, ...

Ja, es gibt die simple summe, byteweise oder wortweise, es gibt summe 
von wert xor adresse...

von A. S. (Gast)


Lesenswert?

Michael B. schrieb:
> Robert P. schrieb:
>> ich einen Wert um 1 erhöhe, geht die
>> Checksumme auch um 1 rauf...
>
> Na da wird es schon etwas mehr tests benötigen

Also entweder ist die Aussage des UP wahr, dann braucht man nur noch 
ggf. einen Startwert finden.

Oder sie ist falsch, dann muss man weitersuchen.

von Dirk F. (dirkf)


Lesenswert?

es könnte auch evtl. mit "Fletcher’s Checksum" berechnet sein....

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.