Forum: PC-Programmierung Checksum Berechnung herausfinden


von Michael U. (michaeluray)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich versuche mit einer Ericsson Businessphone Anlage eine Kommunikation 
über die serielle Schnittstelle aufzubauen. Leider ist keine 
Dokumentation verfügbar und daher muss ich über das Mitloggen von Daten 
das Protokoll herausfinden.

Ich habe jetzt nur das Problem, das am Ende vom Frame ein 1 Byte 
Checksumme angehängt wird. Nachdem ich jetzt schon die ganze Nacht 
versucht habe auf die Berechnung zu kommen, probiere ich es jetzt einmal 
hier bei euch.

Bis jetzt habe ich herausgefunden, das anscheinden eine Summe gebildete 
wird. Wenn sich bei ein Byte erhöht und ein Byte verringert bleibt die 
Prüfsumme gleich.
Wenn 1 Byte erhöht wird, fällt in manchen Fällen die Checksumme auch um 
1.
Ich weiß leider noch nicht, über welchen Bereich die Summe gebildet 
wird.

So schauen die Datenframes aus:

pre = Präfix
Nst = Nebenstelle
post = Postfix
checksum = Prüfsumme

   [pre]       [Nst]             [post][checksum]
10 02 30 08 52 F1 44 FF FF FF 99 10 03 47   (Nebenstelle 144)
10 02 30 08 52 F1 45 FF FF FF 99 10 03 46   (Nebenstelle 145)
10 02 30 08 52 F1 46 FF FF FF 99 10 03 45   (Nebenstelle ...)
10 02 30 08 52 F1 47 FF FF FF 99 10 03 44
10 02 30 08 52 F1 48 FF FF FF 99 10 03 4B
10 02 30 08 52 F1 49 FF FF FF 99 10 03 4A
10 02 30 08 52 F1 50 FF FF FF 99 10 03 53
10 02 30 08 52 F1 51 FF FF FF 99 10 03 52
10 02 30 08 52 F1 52 FF FF FF 99 10 03 51
10 02 30 08 52 F1 53 FF FF FF 99 10 03 50

Im Anhang sind noch mehr Daten welche ich mitgeloggt habe.

Weiß jemand von euch, wie dieser Berechnung funktionieren könnte?

lg.
michi

von Michael H. (mah)


Lesenswert?

mein Tipp:

das sind Rahmen, die beginnen mit 10 02 und enden mit 10 03
(02 = ascii stx, 03 = asci etx)

dazwischen sind die Nutzdaten, dahinter Prüfsumme

10 ist ein "escape" (verändert die Bedeutung des nächsten Zeichens)

wenn in den Nutzdaten ein 10 vorkommt, wird dieses "escaped" 
(verdoppelt) - muss empfangsseitig rausgenommen werden.

bei der Prüfsumme hast iW folgende Chancen: Summe mod 256, 256 - Summe 
mod 256, alle Bytes mit XOR verknüpft, irgendein crc8.

Jetzt kann man noch probieren, ob diese nur die Nutzdaten umfassen, stx 
und etx auch oder auch die escapes. Ich würde tippen - nur die 
Nutzdaten, weil das Escaping der 10 in den Nutzdaten den Einsersprung 
nicht verändert (attachment).

Bau mal ein kleines Programm zum Extrahieren der Nutzdaten und wende die 
verschiedenen Algorithmen auf Kandidaten an.

-Michael

von Marvin M. (marvin)


Lesenswert?

Das ist ein ordinäres XOR.
Alle Zahlen einer Zeile miteinander per XOR verknüpft ergibt FF.

von Michael U. (michaeluray)


Lesenswert?

Hallo Leute!

Ihr habt beide recht.
Es ist wirklich eine einfache XOR Verknüpfung (da bin ich etwas auf der 
Leitung gestanden) und das Escapezeichen 0x10 darf für die Berechnung 
nicht verwendet werden.

Dankeschön.

lg.
michi

von Marvin M. (marvin)


Lesenswert?

Das ESC-Zeichen kommt immer zweimal vor - Frame-Anfag, Frame-Ende oder 
im Datenstream (wird dann verdoppelt). Also ist es egal, ob Du es 
mitbenutzt oder nicht. Erspart eine Abfrage, wenn Du es einfach 
mitbenutzt.

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.