Prüfsumme in Software-Datenübertragung

OP #3508350
Lesenswert?

Hallo,

ich versuche gerade in einer Software (Client-Server-Kommunikation) den 
Prüfsummenalgorithmus herauszufinden, aber ich komme nicht weiter. Es 
ist kein CRC32 mit Standardpolynom, keine XOR-Verknüpfung, kein CRC32 
mit einigen weiteren verbreiteten Polynomen. Da allerdings eine ziemlich 
einfache Übertragung (gerade mal 2 bit gesetzt, siehe unten) eine so 
krumme Prüfsumme ergibt, vermute ich, dass es irgendeine "echte" 
Prüfsumme und nicht einfache Addition oder XOR-Rechnung von 
irgendwelchen Teilen ist.

Wenn ich einige Bytefolgen (8 bis ca. 500 Byte, die meisten haben 204 
Byte) und die dazugehörige Prüfsumme (4 Byte) posten würde, könnte mir 
dann einer der Profis helfen und mal schauen, ob er da etwas bezüglich 
der Prüfsumme rauslesen kann?

Was würde bei so einer Analyse mehr helfen? Datenübertragungen, bei 
denen die Prüfsumme nahezu gleich ist? Datenübertragungen, bei denen die 
Nutzwerte möglichst gleich sind?

Es gibt leider nur ein einziges ziemlich kurzes Paket mit Prüfsumme, 
einige weitere habe ich mal in den Anhang gepackt.

Daten:      1000 0000 0000 0000
Checksumme: 9000 7a7e

Vielen Dank für eure Hilfe,

Florian B.
Angehängte Dateien:
OP #3508380
Lesenswert?

Es mag vielleicht bei dieser einen Bytefolge so aussehen, aber bei den 
anderen Übertragungen (Anhang) sieht das schon mehr nach Prüfsumme aus. 
Ich bin mir relativ sicher, dass das eine 4-Byte-Prüfsumme ist.

Ich habe mal über meine gesammelten Übertragungen ein Script laufen 
lassen - die Prüfsummen sind ungefähr gleichnäßig verteilt. Es wird also 
wohl keine einfache Summe o. ä. sein da - wie gesagt - viele Pakete so 
aussehen wie im Anhang und es dann auch viele ähnliche Prüfsummen geben 
müsste.
#3576299
Lesenswert?

wenn das auf nem PC berechnet wird und nicht auf nem µC wo Speicher und 
Rechenzeit knapp sind:

schau Dir auch mal die MD5- und SHA1-Summe an. Vielleicht ist es ein 
Teil davon (also z.B. die ersten oder letzten 32 Bit davon).

Hab ich auch schon als Prüfsumme verwendet gesehen.

Ach so: immer sowohl den tatsächlich übertragenen Klartext, als auch die 
Binärdaten anschauen. Du weißt ja nicht worüber von beidem die Prüfsumme 
gemacht wird.
OP #3695497
Lesenswert?

Nach langer Zeit habe ich es endlich rausgefunden!

Für den Fall, dass das später jemand findet, der auch die Lösung sucht:

Die Prüfsumme ist eine ganz normale CRC32, die allerdings nicht über den 
Datenbereich gebildet wird, sondern über das ganze Paket inkl. 
Prüfsumme.

Zur Prüfung, ob eine Prüfsumme stimmt, ersetzt man diese durch vier 
Nullbytes, berechnet dann vom gesamten Paket (inklusive der leeren 
Prüfsumme) eine CRC32-Prüfsumme. Dabei sollte dann die Prüfsumme 
herauskommen, die vorher im Paket stand.

Eigentlich hätte ich auf eine so simple Lösung viel früher kommen 
sollen, gerade da dieses "Prüfsumme auf 0 setzen" auch in TCP / UDP 
gemacht wird...

Dennoch Danke an alle, die versucht haben, mir zu helfen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren