![Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht](misc/logos/logo.png) |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ThePuppetMaster
![](images/avatars/15203237124744b0302dc46.gif)
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 09.03.2023, 19:39 Titel: {GELÖST] Suche Prüfsummen Algo |
|
|
Hiho ....
vieleicht kann mir einer von euch hierbei helfen.
Ich arbeite gerade an der Aufschlüsselung eines Kommunikationsprotokolls und suche hierfür den richtigen Prüfsummen-algo.
Aber, erstmal, damit Ihr wisst, was genau das alles für Daten sind, und wie weit ich es inzwischen zerlegen konnte:
Das folgende ist ein Daten-Block in Binary
Code: | '10010101 01001100 00110000 00000001 00000011 00000000 |
Das erste Byte hat folgende Bedeutung:
Code: | '10010101 01001100 00110000 00000001 00000011 00000000
' ^^^-- Anzahl nachfolgender Bytes
' ^^^----- Commando
'^^-------- unbekannt (vermutlich die Zeiladresse des geräts)
|
Das letzte Byte ist vermutlich eine Prüfsumme, dessen Algo ich nicht kenne aber wissen muss. Ich habe bereits ein XOR und ein UByte Überlauf über Alle Bytes bis auf das letzte, sowie auf alle bis auf das erste und letzte versucht, beides führt nicht zum richtigen Ergebnis.
Was mich auch stutzig macht ist die tatsache, das das 8.Bit im letzten Byte nur sehr selten eine 1 bringt.
Dieses Spezielle Datenblock, bzw. dieses kommando ist eine "Zoom"-Anweisung. Sprich, sie ändert den Zoom eines Objektivs von Wide in Tele. Die Geschwindigkeit wird (vermutlich) im Vorletzten Byte codiert.
Code: |
'10010101 01001100 00110000 00000001 00000011 00000000
'^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^___ Vermutlich Checksumme
' | | | | |________________ Poti-Wert
' | | | |_________________________ unbekannt (Vermutlich teil des kommandos)
' | | |___________________________________unbekannt (Vermutlich teil des kommandos)
' | |___________________________________________ unbekannt (Vermutlich teil des kommandos)
' |____________________________________________________ Ziel, Kommando, Anzahl folgender Bytes
|
Hier findet Ihr eine Aufzeichnung einer Sequenz, mit aufsteigendem Poti-Wert
http://ops.deltalabs.de/code?id=313
Die Prüfsumme wird von einem ATMega8 berechnet. Kann also nicht ganz so komplex sein
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Zuletzt bearbeitet von ThePuppetMaster am 15.03.2023, 14:20, insgesamt einmal bearbeitet |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
ThePuppetMaster
![](images/avatars/15203237124744b0302dc46.gif)
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 09.03.2023, 23:55 Titel: |
|
|
Inzwischen konnte ich etwas mehr herausfinden.
Mit folgendem verfahren komme ich sehr häufig zu einem richtigem Ergebnis.
Alles ab dem 2. byte zusammen zählen (ausser dem letzen checksummenbyte), und wenn es über 128 ist, dann -128.
beispiel:
Code: |
[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000000 00011000 00010100
[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000000 00010000 00001100
[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000000 00001111 10010101
|
ist
Code: |
149 76 48 0 24 20
149 76 48 0 16 12
149 76 48 0 15 149
|
ergibt:
149 76 48 0 24 20
76 + 48 + 0 + 24 = 148 ... größer 128 .. daher 148 - 128 = 20 (checksumme)
Das ganze funktioniert solange, bis auf die letzte zeile (welche sehr selten auftritt) Dort ist der wert deutlich über 128 und das 8.bit ist gesetzt. Aber, ich weis nicht, wie das zustande kommt.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1215 Wohnort: Ruhrpott
|
Verfasst am: 15.03.2023, 13:47 Titel: |
|
|
ThePuppetMaster hat Folgendes geschrieben: | Alles ab dem 2. byte zusammen zählen (ausser dem letzen checksummenbyte), und wenn es über 128 ist, dann -128. |
Das kann auch nicht sein. Die Zeilen
[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000001 00010000 10010101
[RMC > CAM] CMD: ???, Zoom 10010101 01001100 00110000 00000001 00010000 10010011
sind soweit gleich, das letzte Byte ist aber trotzdem unterschiedlich. Daraus kann man wohl ableiten, daß es sich hier nicht um eine Prüfsumme handelt.
Es gibt auch noch andere Zeilen, bei denen diese Korrelation nicht passt.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
ThePuppetMaster
![](images/avatars/15203237124744b0302dc46.gif)
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 15.03.2023, 14:19 Titel: |
|
|
In der tat konnte ich inzwischen etwas mehr in Erfahrung bringen.
Erste Tests scheinen auch gut zu funktionieren. Es ist wohl, wie schon vermutet, eine 7Bit Prüfsumme über alle Werte (ausgenommen 1 und letztes byte).
Der Fall, das es manchmal eine 1 voransteht, scheint wohl auf einen BUG zurück zu gehen, der nur sehr selten auftritt und eventuell ein Überlauf in der 8-Bit MCU entsteht.
Wenn ich den Kram von Hand erzeuge und via PC zum Gerät sende, mit berechneter Prüfsumme, dann werden die Kommandos alle akzeptiert.
Ich gehe daher erstmal davon aus, das der Algo wohl zu stimmen scheint.
Dennoch THX an alle
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
![](templates/subSilver/images/spacer.gif) |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|