Türschlösser über CAN-Bus steuern

9

Ich versuche herauszufinden, wie die Türen eines 2010 Toyota RAV4 über den CAN-Bus über den OBD-II-Anschluss ver- und entriegelt werden können. Ich habe einen Mikrocontroller über einen CAN-Controller und einen CAN-Empfänger angeschlossen und eine Firmware zum Erfassen und Wiedergeben von Nachrichten geschrieben.

Wenn ich die Türen entweder über den Schlüsselanhänger oder den Türknopf entriegle, erhalte ich eine Reihe von Nachrichten in einem ansonsten leisen Bus (Schlüssel ist heraus). Die Wiedergabe bewirkt jedoch nichts. Ich vermutete, dass es sich um ein Authentifizierungsproblem handeln könnte, und versuchte es mit etwas weniger Sensiblem - den Scheinwerfern. Interessanterweise leuchtet die Scheinwerferanzeige im Kombiinstrument kurz auf, wenn ich die Meldungen vom Einschalten der Scheinwerfer wiedergebe, aber die tatsächlichen Scheinwerfer tun nichts.

Ich glaube, ich habe mehrere Fragen:

1) Sollte dies über den am OBD-II-Port freiliegenden CAN-Bus möglich sein? Ich habe Quellen gesehen, die besagen, dass Türen von einem anderen, langsameren Bus gesteuert werden, aber ich habe auch beworbene Geräte gesehen, die die Türen verriegeln, wenn Sie eine bestimmte Geschwindigkeit erreichen.

2) Sind die anderen Busse in irgendeiner Weise ausgesetzt?

3) Gibt es eine Möglichkeit, die Bedeutung der von mir erfassten Nachrichten herauszufinden, ohne große Geldbeträge an Toyota zu zahlen?

Isvara
quelle
Wo konnten Sie dies durch den OBD-II zum Laufen bringen oder mussten Sie einen anderen Weg gehen?
SWard

Antworten:

5

Was Sie tun möchten, ist möglich. Ich habe ähnliche Erfahrungen und Wünsche für meinen 2010 Camry gehabt. Nach meiner Erfahrung brachte mich das Lesen von Nachrichten vom OBD-II-Port nicht weiter. Es war, als wären die CAN-Nachrichten nur eine Antwort darauf, dass ich das Auto manuell manipuliert habe.

Ich würde eine Antwort erhalten, wenn ich die Türen mit dem Schlüssel FOB verriegelte oder entriegelte, aber das Senden derselben Nachricht brachte nichts.

Was Sie tun sollten, ist ein OBD-II-Splitterkabel und eine Kopie von Toyota Techstream mit einem "Mini-VCI-Kabel". Auf diese Weise können Sie die Nachrichten lesen, an die die Techstream-Software über den OBD-II-Port sendet.

Du solltest in der Lage sein zu:

1- Fahrer / alle Türen verriegeln und entriegeln

2- Pop Kofferraum

3- Schalten Sie Abblend- und Fernlicht und Blinker ein

4- Hupen Sie die Hupe

5- Fenster hoch- und runterrollen

6- usw.

..oder zumindest hat alles bei mir funktioniert !!

YMMV und viel Glück! : D.

(Ich bin nicht verantwortlich für Schäden an mir selbst oder am Auto.)

mccoy
quelle
1
Mccoy, ich versuche genau das zu tun, was du gepostet hast. Ich habe Techstream installiert und das USB-Adapterkabel an meine 2012 Corolla angeschlossen, aber es scheint keine der Anpassungen voranzutreiben. Könnten Sie mir bitte mitteilen, wie Sie dieses Ziel erreicht haben? Danke
4

Normalerweise wird der OBD-CAN-Bus auf die anderen CAN-Busse des Fahrzeugs "überbrückt", um die Diagnose von Steuergeräten auf den anderen Bussen zu erleichtern. Die Bridge leitet jedoch möglicherweise nur Diagnosemeldungen weiter :( Sie ist auf jeder Plattform unterschiedlich.

In Bezug auf das Protokoll - es ist ein klassisches Reverse Engineering-Problem. Sie müssen einige Spuren der CAN-Aktivität erfassen, wenn Sie auf die Schaltfläche zum Entsperren klicken und das Format der Nachrichten ermitteln. Ihr Scheinwerferbeispiel zeigt möglicherweise an, dass es mehrere Busse gibt und Sie nur auf einen von ihnen zugreifen können (der zur Armaturenbretteinheit und in diesem Fall nicht zu den Scheinwerfern führt).

Mit den Türschlössern ist es durchaus möglich, dass auch eine Art Herausforderungsreaktion stattfindet, die Ihren einfachen "Wiederholungsangriff" stoppt.

Martin Thompson
quelle
Möglicherweise befinden sich die Scheinwerfer selbst nicht einmal auf einem CAN-Bus, sondern auf dedizierten Kabeln und Relais. während sich die Scheinwerferanzeige mit dem Rest des Kombiinstruments auf dem CAN-Bus befindet.
Mac
@ Mac - in der Tat
Martin Thompson
3

Wenn ich der Typ wäre, der die Elektronik entworfen hat, würde ich es unmöglich machen, dies über CAN-Bus zu tun, einfach weil Sie Bluetooth-Adapter für OBD2 erhalten, mit denen jemand, der außerhalb des Autos steht, die Entsperranweisung koppeln und senden könnte.

Es ist ein Sicherheitsrisiko, daher würde ich es nicht unterstützen.

Kapitän Kenpachi
quelle
2
Bluetooth-Adapter tun nichts, es sei denn, Sie haben bereits Zugriff auf das Auto, um einen Bluetooth-Empfänger anzuschließen. Wie auch immer, es stellt sich heraus, dass es möglich ist.
Isvara
Das ist ein beängstigender Gedanke. Zu Ihrer Information: Sie erhalten auch WLAN-OBD-II-Adapter, deren Reichweite beträchtlich ist.
Kapitän Kenpachi
3

Selbst wenn Sie eine Verbindung zum richtigen Bus herstellen und die richtige CAN-Nachricht senden, tritt immer noch das Problem auf, eine CAN-Nachricht zu übertragen, die bereits von einem anderen Steuergerät gesendet wird.

So wie CAN funktioniert, hat jede Dosen-Nachricht eine Arbitration-ID, die auch als Nachrichten-ID bezeichnet wird. Im Normalbetrieb sendet kein Steuergerät jemals eine Nachricht mit derselben ID auf demselben Bus. Wenn du das machst. Theoretisch sollten Sie in der Lage sein, die Tür zu verriegeln oder zu entriegeln, indem Sie den Bus mit der gewünschten Nachricht überfluten. Dies würde ich jedoch nicht in einem Produkt verwenden, da Ihr Missbrauch des Busses die Kommunikation der Steuergeräte beeinträchtigt auf dem Bus, der mit einer niedrigeren Priorität sendet.

Wenn die CAN-Nachricht zum Ver- und Entriegeln der Tür vollständig ereignisgesteuert ist und nicht regelmäßig gesendet wird, ist das, was Sie versuchen, vollständig machbar.

Auch die Nachrichten, die Sie schnüffeln und die sich ändern, wenn Sie die Tür ver- oder entriegeln, sind möglicherweise nicht von Interesse. Statusmeldungen werden häufig an andere Busse weitergeleitet. Sie müssten die richtige Nachricht auf dem Bus senden, von dem sie stammt.

Tipp: Suchen Sie online nach der Pinbelegung für den OBD-Stecker in Ihrem Fahrzeug.

1) Sollte dies über den am OBD-II-Port freiliegenden CAN-Bus möglich sein? Ich habe Quellen gesehen, die besagen, dass Türen von einem anderen, langsameren Bus gesteuert werden, aber ich habe auch beworbene Geräte gesehen, die die Türen verriegeln, wenn Sie eine bestimmte Geschwindigkeit erreichen.

Ja, es ist möglicherweise möglich, aber Sie müssen die Pinbelegung für den OBDII in Ihrem Auto kennen, bei der es sich wahrscheinlich nicht um öffentliche Informationen handelt. Sie können jedoch herausfinden, welche von Interesse sind, indem Sie die Standard-OBDII-Pins entfernen.

2) Sind die anderen Busse in irgendeiner Weise ausgesetzt?

Wie oben beantwortet, besteht meiner Meinung nach eine gute Chance, die Standard-OBD-Pins zu entfernen, und die verbleibenden Paare werden diejenigen von Interesse sein. Jeder Dosendatenkanal hat Daten hoch und Daten niedrig.

3) Gibt es eine Möglichkeit, die Bedeutung der von mir erfassten Nachrichten herauszufinden, ohne große Geldbeträge an Toyota zu zahlen?

Sie benötigen ein CAN-Tool, um die Daten auf den verdächtigen Pins zu überwachen. Die gute Nachricht ist, dass Sie nur Dosenmeldungen abfangen, wenn Sie mit den richtigen Pins verbunden sind. Andernfalls wird das Tool Fehler auslösen. und Sie benötigen möglicherweise ein Tool, das die Baudraten automatisch erkennt, oder Sie können raten.

Es wird ein bisschen Zeit und Hacking erfordern.

am6sigma
quelle
1
Übertragung und Kollisionen sind kein Problem. Der CAN-Controller kümmert sich um all das - dafür ist er da. Ich habe den Schaltplan für das Auto und es gibt nur einen Bus. Ich habe einen Dongle, der die Türen mit einer festgelegten Geschwindigkeit (ca. 8 km / h) verriegelt, und der die Meldung "Tür verriegeln" ein einziges Mal sendet. Es sieht so aus, als ob dies ziemlich einfach zu replizieren sein sollte.
Isvara
Sie haben wahrscheinlich Recht, aber in der Praxis senden mehrere Steuergeräte nicht dieselbe Nachrichten-ID zur selben Zeit auf demselben Bus. Wenn Sie jedoch einfach replizieren, einen Dongle verwenden, müssen Sie die von ihm kommenden Nachrichten verarbeiten und sehen, welche Bits umdrehen, oder wann die Nachricht gesendet wird, wenn sie ereignisbasiert ist.
Am6Sigma