artikel:can-bus:hacking:bit-finder

Die "Bit-Finder" Methode

Bei der Methode geht es darum, einfache An/Aus Signale zu finden. Beispielsweise das Signal das der Rückwärtsgang eingelegt, oder das Bremspedal betätigt ist. Hierzu erstellt man einfach zwei Logs gleicher Länge, einmal mit und einmal ohne Betätigung und vergleicht diese anschließend. Um möglichst wenig „Störsignale“ zu erhalten, sollte man alles ausschalten was nicht gebraucht wird, also Lüftung, Radio, Außenbeleuchtung, usw.

Sucht man z.B. das Bremspedal, schaltet man die Zündung ein, wartet ca. eine Minute bis sich die Systeme „beruhigt“ haben und startet dann die Aufzeichnung. Währenddessen betätigt man für 0,5 Sekunden das Pedal und lässt es wieder für 0,5 Sekunden los. Das ganze wiederholt man 4 mal, stoppt dann die Aufzeichnung und merkt sich die Dauer derselben. Anzahl und Rythmus sind damit das spätere Suchmuster. Es sollte sich von anderen Wertänderung so klar unterscheiden, das man es mühelos und zweielsfrei wiedererkennt. Damit hat man un das „Action“-Log erzeugt.

Über die gleiche Dauer startet man nun gleich im Anschluß eine weitere Aufzeichnung, in der man aber nichts betätigt. Dies ist das „Idle“-Log. Nun vergleich man beide Aufzeichnungen und sucht nach dem einen Bit das sich ändert. Je nachdem an welcher Bitposition im Byte dies steht, ändert sich der Zahlenwert wenig oder viel. Man findet diese Werte relativ leicht, muss aber zunächst die Anzahl der zu durchsuchenden IDs reduzieren. Hierzu wende ich immer folgendes Verfahren an:

Ich erzeuge mit einem Programm eine Übersicht aller IDs die im Log vorkommen. Pro ID sammle ich dann in einem Array alle unterschiedlichen Datenmuster und schreibe hinter die ID die Anzahl der Änderungen während des Logs. Ist diese Anzahl 0, also ändert sich der Wert im gesamten Verlauf des Action-Logs nicht, ist die ID uninteressant und kann ignoriert werden.

Danach vergleiche ich die ID-Übersicht beider Logs. Überall wo im Action-Log mehr Änderungen sind als im Idle-Log sollte man genauer prüfen, besonders wenn es genau einen Änderungswert mehr gibt. Für diese Prüfung geht man Datenbyte für Datenbyte über die Zeit des Logs durch und sammelt alle vorkommenden Werte pro Byte. Sind in einer dieser Sammlungen später nur zwei unterschiedliche Werte enthalten, hat man einen möglichen Kandidaten.

Für die Kandidaten lässt man sich dann über die Zeit des Logs die Änderung anzeigen. Dabei stellt man einen Wert als „-“ und den anderen als „X“ dar. So kann man in einer Zeile oder Spalte sehr schnell die HIGH/LOW Phasen ausmachen. Deckt sich dann das angezeigte Muster mit dem zuvor verwendeten Betätigungsintervall hat man die ID und das Byte gefunden. Nun vergleicht man die binäre Darstellung beider Werte und hat auch das entsprechende Bit, bzw. die Bitmaske.

Am Ende kann es sein das man noch einige potentielle Kanditaten hat. Auch ist nicht selten ein Signal in mehr als einer ID kodiert. Man muss also am Fahrzeug den Beweis antreten indem man den Live-Monitor vom Scantool aktiviert und sich genau die ermittelten Bytes ansieht. Dann löst man die Betätigung aus (z.B. Bremspedal drücken) und schaut ob das Byte diesem Ereignis folgt. Nach zwei dreimal drücken kann man sich völlig sicher sein das es stimmt.

Dieses Verfahren lässt sich grundsätzlich auf alle binären Schaltvorgänge anwenden. Zum Beispiel: Bremspedal, Kupplungspedal, Handbremse, Tür auf/zu, usw.

  • artikel/can-bus/hacking/bit-finder.txt
  • Zuletzt geändert: Wed. 23.01.2019 10:45
  • von go4it