RKS+CAN Adapter für CAN-Bus Sniffing
CAN-Interface
CAN Hardware, CAN Software, CAN Protokolle - CAN-Bus Forum für Dein CAN-Bus Projekt. CAN-Bus und Elektronik.

CAN-Bus "hacken", welche Methoden?


 
Neues Thema beginnen Auf Beitrag antworten Weitergeben, Thema teilen Lesezeichen setzen Druckansicht CANhack.de - Übersicht » Allgemein
Autor Nachricht
schlumpfkopf
Gast




 


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag16-10-2016, 21:55    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

Hallo,

ich beschäftige mich seit kurzem mit dem Thema. Nachdem mir die Funktionsweise und Hardware inzwischen einigermaßen klar ist, frage ich mich aber, wie ich unter der Masse an Nachrichten, nach und nach die entsprechenden Sensoren/Aktoren/Ereignisse zuordnen kann?

Einfach irgendwas drücken und schauen was sich im Datenstrom verändert ist nicht, dafür kommt da viel zu viel auch ohne das ich etwas betätige. Wie also starten?

Gibt es sowas wie allgemeingültige CAN-IDs, die jeder Hersteller so nimmt, oder ist das wirklich aus Prinzip bei jedem Hersteller völlig wild verteilt?

Welche Zusammenhänge gibt es bei ID, Periode und Anzahl? Kann man daraus was ableiten? Sind niedrige IDs per se vom PCM oder ABS und hohe von Komfortsystemen? Kann man sagen, das alles oberhalb 500ms Wiederholtrate eher Komfortsysteme sind? Wir eher mit Challenge/Response oder mit sich wiederholenden IDs bei aktiver Funktion gearbeitet?

So ein paar IDs hab ich mir über Netz zusammengesucht. Es scheint wohl auch so zu sein, das innerhalb von Ford auch über verschiedene Modelle und Baujahre gleiche IDs für gleiche Funktionen genutzt werden.

Wie gesagt, ich stehe noch ganz am Anfang. Als Test-Equipment habe ich einen SL-CAN fähigen Tranceiver mit PC Anschluß über USB. Über einen Umschalter kann ich den auf alle drei Fahrzeug CANs nach Bedarf aufschalten. In meinem Fahrzeug liegen die CAN-Busse direkt an der OBD-Schnittstelle an, da ist kein Gatewaymodul mehr dazwischen was filtert.


P.S.: Hier im Forum gibt es viel Info über VW-Fahrzeuge. Bin ich hier mit meinem Ford Mondeo eigentlich total falsch?
Nach oben
candev
Gast




 


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag16-10-2016, 22:48    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

Hi,

auch wenn Dir meine Antwort nicht schmecken wird: Ereignisse auslösen, dann auf Veränderungen schauen und daraus Signale ableiten - so geht's.

Klar ist das nicht immer einfach. Im Innenraum geht das schon recht passabel, den Fensterheber löse ich ja selber aus und kann dann allein aus zeitlicher Korrelation auf die Lage des Signals auf dem Bus folgern.

Oft hilft der Eiweißcomputer (Hirn) weiter. Bei mehreren Fensterhebern frage ich mich: 'Wie hätte ich das umgesetzt?'. Dann komme ich auf die Idee, ein Byte für 4 FH vorzusehen. Oberes Nibble = Fenster hoch, unteres Nibble = Fenster runter. Ist nur ein Beispiel, evtl, ist es auch umgekehrt, aber erstmal schaue ich auf entsprechende Korrelationen.
Dann gibt es die Komfort-Funktionen, also Fenster komplett heben oder senken. Würde ich über ein anderes Byte der selben Botschaft abbilden genau wie momentanes Heben/Senken.

Mit diesem Ansatz kommt man sehr schnell sehr weit, mein Innenraum hat mich keine 30 Minuten gekostet (leistungsfähige Software setze ich voraus).

Auf dem Antriebs-CAN wird es eckig, da man da die Ergeignisse nicht komplett steuern kann. Wie willst Du z.B. das Signal 'Schalteingriff unterbinden' des ESP auslösen? Eben, gezielt mal gar nicht. Auch Zündwinkel oder Einspritzmenge lassen sich gezielt nicht ohne weiteres Ansteuern. Bei letztgenannten Fällen hilft es, sich die entsprechenden Informationen zu besorgen, sprich, die entspr. Kennfelder auszulesen, und zu skalieren. Dazu kann man Testfahrten mit entsprechendem Mess-Equipment durchführen oder den Code der Anlage disassemblieren und verstehen. Letzteres machen so geizige Buben wie ich...

Generelle Botschaften gibt es herstellerübergreifend nicht, hier kocht jeder sein eigenes Süppchen. Klar, Konzerne bündeln wieder ihre Marken.
Innerhalb eines Herstellers/Konzerns gibt es aber oft Pattern die eingehalten werden. Beim Innenraum ändern sich diese von Zeit zu Zeit, beim Antrieb sind diese deutlich stabiler - insbesondere wenn der Hersteller CAN-Profi ist und sich des CANs zu bedienen weiss, speziell was die abwärtskompatible Erweiterbarkeit angeht. Ohne jetzt Namen nennen zu wollen mag ich von (auch hier im Forum bevorzugten) Volumenherstellern in dieser Hinsicht nichts wissen.

Gruß,
candev
Nach oben
schlumpfkopf
Gast




 


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag17-10-2016, 8:28    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

Danke candev! Ich suche halt nach Ansätzen, wie das Beispiel mit dem Fensterheber. Mich interessieren nur die Komfortfunktionen. Vom Motor CAN lass ich fein die Finger.

Da der CAN nachrichtenorientiert ist, weiss man ja auch nicht von welchem Steuermodul die Nachrichten auf dem Bus kommen. Diese Info würde schon viel erklären und man könnte sich fokussieren.

Leider scheinen die CAN Enthusiasten bei VW-Konzern-Modellen auf deutlich mehr öffentliche Information zurückgreifen zu können, als die bei Ford.

Das mit überprüfen auf Änderungen am Bus kann ich noch schwer umsetzen, denn es ändert sich für meinen Begriff einfach zuviel. Ich erkenn da nix. Es sind teils an die hundert IDs am werkeln, selbst wenn ich nichts tue. Die bekomme ich nicht mal auf einem Schirm dargestellt.

Einen Ansatz hab ich jedoch: Ich habe ein Navi-Radio (MCA) zum Testen hier liegen. Wenn ich das starte erhalte ich auf dem Bus etliche Infos, vom Radio selbst halt, weil es keine anderen Teilnehmer gibt. Ich kenne zwar nicht die Bedeutung der Nachrichten, aber kann diese IDs eindeutig dem Radio zuordnen icon_smile.gif Habe mal einen solchen leeren Trace angehangen (Radio-Labor trace).

Dann habe ich denselben Bus mal im Auto überprüft um mögliche Antworten auf die Nachrichten zu finden. Als Aktionen darauf kann ich mir vorstellen: Radio am GEM/IPC anmelden, Aktuellen Betriebsmodus (Radio, CD, USB) zum IPC senden, Lenkradfernb. abfragen. Dies ist im anderen Trace enthalten.

Ich weiss auch noch nicht wie ich meine Ergebnisse protokollieren soll. Einen freien CAN DB Editor hab ich noch nicht gefunden. Ich denke aber es wäre sinnvoll die Ergebnisse strukturiert zu speichern um daraus später Filter oder Programmroutinen ableiten zu können. Als Software nutze ich derzeit u.a. can tool. Da gibt es ja die Möglichkeit bekannte Signale auszufiltern und sich so anzunähern.

Also wenn Du für einen vollständigen CAN Hack nur ne halbe Stunde brauchst, würd ich dich gern mal zu nem Kaffee einladen icon_wink.gif))



Du bist nicht berechtigt diese Datei(en) zu sehen, logge Dich ein bzw. registriere Dich für erweiterte Rechte oder Status-Updates.

Nach oben
candev
Gast




 


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag17-10-2016, 8:45    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

Hi,

einen freien CANdb-Editor habe ich damals auch nicht gefunden, daher die Eigenimplementierung.

Wie gesagt, zum Aufspüren von Signalen ist Ideenreichtum hilfreich. V.a. sollte man sich stets bewusst sein, dass jedes Weglassen/Hinzufügen von Busteilnehmern Änderungen am Trace nach sich ziehen kann, die nicht nur im Wegfall/Hinzufügen der unmittelbar aus den jeweiligen Steuergeräten stammenden Nachrichten resultieren.

Der Anfänger denkt oft in einer Abbildung von Funktionen auf Steuergeräte, d.h. n Funktionen werden in einem Steuergerät angesiedelt. In der Praxis ist es andersherum, hier wird z.B. eine Funktion auf mehrere Steuergeräte verteilt (Powermanagement, ESP-Eingriff etc.). Dadurch können bei Wegfall eines Steuergeräts Funktionen abgeschaltet werden und damit auch die Nachrichten anderer Steuergeräte fehlen oder verändert werden.

Auf alle Fälle ist eine fundierte Kenntnis der Programmierung sowie der konzeptionellen Auslegung der Steuergeräte sowie der softwaretechnischen Architekturen sehr hilfreich.

Mit Ford hast Du hier natürlich weniger Freude als mit den verbreiteteren und damit auch häufiger untersuchten VAG-Fahrzeugen. Dafür dreht sich jenseits des Teichs die Lage um. Dort bin ich vor 20 Jahren sehr umfassend von den jeweiligen Entwicklern selbst unterstützt worden. Einfach mal nach passenden Mailing-Lists suchen - das WWW ist nur für Leute, die der Tastaturbedienung nicht mächtig sind. icon_biggrin.gif

Gruß,
candev

PS: Mein Innenraum-CAN ist einfacher als Deiner, ich tippe auf ca. 30%.
Nach oben
schlumpfkopf
Gast




 


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag18-10-2016, 7:41    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

Die Prinzipien des CAN sind mir durchaus klar. Da ich was Elektronik und Programmierung angeht kein absoluter Neuling bin, kann ich mir auch einiges vorstellen. Deiner These zurfolge könnte man aber erst einen Bus verstehen, wenn man selbst schon welche konzpiert hat. Ist das nicht ein Henne-Ei Problem?

Ich sehe ein das die Lernkurve steil ist, aber irgendwo muss jeder anfangen. Ich versuche mal Deinen Ansatz mit einer Logikmethode weiterzuführen. Sag mir, ob ich da in die richtige Richtung denke!

Ich suche die Nachricht mit der aktuellen Motordrehzahl.
These 1) Eine solche Nachricht wird es sehr wahrscheinlich geben, da die Drehzahl für viele Funktionen im Fahrzeug eine Führungsgrösse darstellt. Wenigstens das Kombiinstrument nutzt diese zur Anzeige.
These 2) Die Drehzahl wird über einen taktgebenden Sensor irgendwo an der Kurbelwelle abgenommen. Üblicherweise ist das induktiv und ein Zahnrad erzeugt darin mehrere Impulse pro Umdrehung. Die Frequenz der Impulse ist ein direktes Maß für die Drehzahl.
These 3) Die Impulse gelangen zu einem Motorsteuergerät, welches diese verarbeitet und in Verbindung mit der Zeit intern einen Drehzahlwert berechnet. Dieser Wert ist vermutlich vorzeichenlos und ein Integer. Das Modul erzeugt daraus eine CAN Nachricht auf dem Motorbus.
These 4) Die Nachricht gelangt, ggf. über ein Gateway zum Kombiinstrument und wird dort in eine analoge Spannung für den Drehzahlmesser umgewandelt.

Um nun die Nachricht zu finden, müsste ich wissen welche Daten ich suche. Der Drehzahlbereich eines Verbrennungsmotors liegt wohl zwischen 0 - 8000 U/min, bei Motorrädern bis zu 14.000. Diese Werte lassen sich problemlos mit 2 Byte darstellen und haben sogar noch Luft nach oben. Negative Drehzahlen gibt es nicht, auch Kommawerte machen kaum Sinn bei diesem Wertebereich.

Die Motordrehzahl ist geregelt, bewegt sich also immer innerhalb gewisser Regelgrenzen. Ich suche also einen sich leicht ändernden Wert. Im Leerlauf zeigt das Kombiinstrument ca. 900 U/min an. Hexadezimal wären das '03 84'. Aufgrund der Regelung sollte der gesuchte Wert zwischen 700 und 1000 U/min, also '02 BC' und '03 E8' liegen.

Ich müsste also anstelle nach IDs, nach diesen Daten suchen. Wenn ich meine etwas passendes gefunden zu haben, muss ich die in Frage kommenden Nachrichten beobachten und z.b. die Drehzahl ändern um das Ergebnis zu überprüfen. Alles unter der Annahme, das es keine andersartige Kodierung der Drehzahl gibt, oder ein Offset vorhanden ist.

Wenn das alles soweit schlüssig ist, ergibt sich für mich folgende Logik: Je kleiner der Datenwert ist den ich suche, um so schwieriger ist er zu finden, je grösser umso einfacher. Einfach weil ein einzelnes sich änderndes Bit häufiger vorkommt, als eine Kombination von 10 oder 12 Bits. Man müsste also beim Hacking mit den vermeintlich grössten Werten beginnen und sich zu den Schaltsignalen herab hangeln.
Nach oben
shavenne
CAN-Profi
CAN-Profi


CAN Hacker seit: 27.04.2015
Beiträge: 37
Karma: +6 / -0   Danke, gefällt mir!
Wohnort: Paderborn

CAN Support

Beitrag18-10-2016, 9:01    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

Mhm, leider werden die Zahlen nicht immer direkt angegeben sondern müssen ggf. mit Wert x multipliziert werden, wobei man da ja ggf. irgendwo einen gemeinsamen Teiler erkennt, falls man den gewünschten Wert irgendwo schon angezeigt bekommt. Beispiel war bei mir z.B. Kilometer seit der letzten Partikelfilterreinigung. Der Wert sprang immer um 5km hoch (gesehen im OPCOM (ein Opel Diagnose Tool)), entsprechend wurde er auch durch 5 geteilt über CAN übertragen.

Im schlimmsten Fall könnten sogar Teile eines Bytes einen Wert ergeben. So war es zum Beispiel bei mir bei der Übertragung von Datum/Uhrzeit zum OEM-Display (siehe hier).
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Zampan0
CAN-Profi
CAN-Profi


CAN Hacker seit: 28.06.2016
Beiträge: 30
Karma: +20 / -0   Danke, gefällt mir!


CAN Support

Beitrag18-10-2016, 11:46    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

Ich bin zwar mehr im Marinebereich unterwegs, aber da ist es sehr ähnlich.
In den vielen Fällen sind Datensätze sogar mehrfach vorhanden, da z.B. oft mehrere Motoren verbaut sind (Instanzen).

Auch da kann man die sich ändernden Werte schön zuordnen.

Ich suche immer nach 1, 2, 4 Byte Werten, diese werden im Marinebereich aber immer positiv dargestellt und auch multipliziert.

Eine Temperatur wird in Kelvin * 100 am Bus transportiert, also immer positiv und auf 2 Kommastellen genau.

Und wie candev schon geschrieben hat, sind je nach vorhandenen Geräten auch entsprechende Datensätze die von Busteilnehmern gesendet werden oder nicht.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
schlumpfkopf
Gast




 


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag18-10-2016, 17:04    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

Sehr interessant!

Es klingt logisch das Dezimalwerte um Zehnerpotenzen erhöht werden um eine virtuelle Fliesskommazahl zu erhalten. Pro Nachkommastelle eine Multiplikation mit 10.

Temperaturwerte zu suche ist auch gut. Irgendwo sitzt ja ein Aussenfühler. Und die Aussentemperatur lässt sich ja gut selbst ermitteln, wird aber je nach Fahrzeug auch digital angezeigt. Wenn die Temperatur in Kelvin übertragen wird, was bei angelsächsischem Ursprung solcher Systeme fast logisch ist, dann hat der Wert einen Offset von 273,5 zur Temperatur in Celsius.

Ich bin echt beeindruckt über den analytischen Verstand der Teilnehmer hier. Da bin ich wohl noch weit weit von entfernt...

Ich habe gelernt: Digitale angezeigte, grosse Messwerte sind leichter zu ermitteln. Mitunter gibt es unbekannte Offsets aufgrund von Kommaverschiebungen oder Bezugspunkten. Wichtig sind kontrollierte Messreihen, bei denen in gleichen Zeitabständen bekannte Sollwerte ermittelt werden können. Auch hier wieder die Frage zu stellen: Wie würde ich diese Werte übertragen?

Werde jetzt mal versuchen an die Aussen- und/oder Motoröltemperatur ran zu kommen.
Nach oben
schlumpfkopf
Gast




 


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag18-10-2016, 20:47    Titel: CAN-Bus "hacken", welche Methoden? Antworten mit Zitat

So, habe die Daten wie oben beschrieben umgerechnet in Dezimalwerte (Bytewert/100) und alles mal in eine Excel Tabelle gegossen. Zeitintervall zwischen jeder Nachricht beträgt konstant 100ms.

Flux ein Diagramm draus erstellt und TATSÄCHLICH! mein Fahrprofil!



Du bist nicht berechtigt diese Datei(en) zu sehen, logge Dich ein bzw. registriere Dich für erweiterte Rechte oder Status-Updates.

Nach oben
Neues Thema beginnen Auf Beitrag antworten Weitergeben, Thema teilen Lesezeichen setzen Druckansicht CANhack.de - Übersicht » Allgemein
Ähnliche Fachartikel und Themen
Thema Community Bereich
Keine neuen Beiträge Arduino + MCP2515 --> Signale "blockieren"? Mikrocontroller und Elektronik, Programmierung
Keine neuen Beiträge Mit "Can-USB-Kit" Messages an RNS510 schicken CAN Softwaretools und Software
Keine neuen Beiträge CAN-IDs für "Volkswagen Sound" Soundsystem Innenraum- / Komfort CAN
Keine neuen Beiträge Zwei "Busse" verbinden Innenraum- / Komfort CAN
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.