 So, hallo, dann möchte ich euch erstmal alle zu meinem Vortrag begrüßen. Ich möchte euch einfach ein paar Bausteine für das K-Hacken mal so ein bisschen vorstellen. Einfach, dass man mal so ein bisschen Gefühl kriegt, was heutzutage einfach schon mit ein bisschen Open-Sauce-Software, ein bisschen Open-Sauce-Hardware, alles schon möglich ist, was man machen kann. Ja, ich möchte mich ein bisschen aufs Kannt-Protokoll beschränken. Ein aktuelles Auto hat mehrere verschiedene Busse, da kommen wir nachher noch dazu. Das werde ich alles mit ein bisschen ausklammern, weil der Kannt-Bus ist, sag ich jetzt mal, der erste Bus im Auto, der sich durchgesetzt hat und das ist auch eigentlich derjenige, der eigentlich am meisten Verbreitung hat, auch außerhalb vom KFZ. Da werden wir auch nachher noch ein bisschen zukommen. Also, ein Auto besteht heutzutage meistens aus mehr als einem Bussystem. Deswegen, aber der Kannt-Bus ist, wie gesagt, also es gibt heute schon so Elektronikdinger. Die haben schon vollwertigen Kannt-Bus-Ship drauf, damit kann man die Horms-Automation oder sowas alles auch schon ansteuern. Das funktioniert eigentlich ganz gut. Hat irgendjemand von euch schon ein bisschen mal das Thema reingeschnuppert, irgendwas schon mal selber gemacht? Super, mit Arduino oder, sehr gut, Nacke, einfach ein bisschen Gefühl zu kriegen. Was ich vorstellen möchte, wie gesagt, ich möchte einmal Machina vorstellen. Machina ist ein Kickstarter-Open Source Projekt, das sieht so aus. Das besteht einmal aus einem OBD-Stecker, der im Auto einfach eingesteckt werden kann. Und es sind zwei Teile. Es ist eine Platine mit einer Schnittstelle und ein Arduino. Und der Arduino ist aber ungefähr um die Hälfte gestrumpft gegenüber einem Standard Arduino. Also, das ist eine extrem kleine, extrem schicke Geschichte. Und es ist auch ein Speichekartenslot drauf. Und es funktioniert halt trotzdem mit der Arduino IDE, was das sehr, sehr angenehm ist, weil diese ganzen, ja, mit Eclipse oder sowas, ich weiß nicht, da stehe ich nicht so drauf. Das zweite, was ich vorstellen möchte, ist Servicon. Das ist eine Software-Lösung, einfach um das Protokoll ein bisschen auszuwerten und zu interpretieren, weil das Schwierige beim Kandus ist einfach nachher das Entsperren, also das Zurückkodieren von den ganzen Nachrichten in irgendwas sinnvolles, weil ein Datenstrom rauszukriegen ist das eine. Aber man möchte ja auch schließlich wissen, was sich dahinter versteckt. Und das sieht man tatsächlich am besten oder ich habe das mit dem Servicon eben sehr, sehr viel gemacht und das funktioniert sehr, sehr gut. Danach noch eine kleine, so einen Kurzüberflug über das Kandus Protokoll. Da kann man allein Vorträge machen. Aber ich möchte einfach mal so ganz kurz einmal drüber, dass man sieht, wo ist das? Wie sieht das aus und was bringt uns das? Wenn wir dann noch Zeit haben, können wir noch ganz kurz über den OBD. Das ist der Standardstecker, der praktisch bei jedem Autom heutzutage mit dran sein muss. Und da können wir auch vielleicht noch mal kurz drauf reingehen. So, jetzt ist das Gleiche noch mal ein bisschen in groß. Das hier ist alles, was es von Machina gibt. Und zwar, das besteht immer aus zwei Teilen. Es besteht einmal eben aus dieser Interface-Karte und das zweite ist diese Arduino-Karte. Es gibt zwei Versionen. Es gibt eine, die einfach über den OBD Anschluss angesteckt wird. Das ist die, wo ich auch vorgezeigt habe. Und es gibt noch eine zweite, die hat zwei Schnittstellen. Die kann man direkt im Motorraum verbauen. Weil also ich zum Beispiel habe das Problem. Bei meinem Auto wird die OBD-Schnittstelle erst nach der Erzündung eingeschaltet. Das heißt, den ganzen Verkehr, der vorher geht, sehe ich gar nicht. Den kann ich aber mit dem hier dann trotzdem abfangen, weil ich halt direkt im Motorraum direkt zwischen den Bus rein gehe. Wie benutzt man das ganze Ding? Also, es ist eine Erweiterung von der Arduino Geschichte, wie gesagt. Das heißt, ich brauche einmal die Arduino IDE und ich tu einfach ein zusätzliches Board einfügen. Und dann bekomme ich auch sofort diese, die Machina-Boards. Und dann kann ich die einfach als Board auswählen. Das heißt, ich habe hier unten einen neuen Punkt, Machina-Boards. Und damit kann ich auch die ganz normalen Standardsachen machen. Das ist nicht auch immer so der Punkt. Ich muss natürlich immer erst noch mal gucken, okay, wird das wirklich erkannt? Und hier sieht man auch schon, das ist ein Arduino-Due-Clone. Das heißt, der hat auch ein bisschen mehr Leistung, sag ich jetzt mal, als ein paar mehr Schnittstellen als der Standard. So, genau. Empfehlung gerade von Anfang ist halt wirklich erst mal so zu gucken, funktioniert das ganze. Einfaches Beispiel ist dieses sogenannte Blinkbeispiel gucken, dass es drauf läuft. Und ja, dann sollte das Ding auch einfach blinken. Es hat eine ganz normale LED drauf und das funktioniert dann eigentlich auch ganz gut. Wenn das hier drauf ist, dann hat man sich eigentlich, ja, dann hat man die Funktionalität eigentlich schon nachgewiesen. Und das sind auch bei dem Kickstarteprojekt, die haben auch einen Forum gegründet und dort sind auch relativ gute Beispiele raus. Also gerade auch diese Anbildung an Servicen oder sowas. Dort ist tatsächlich das Forum dann wirklich mal ein richtig guter Einstiegspunkt. So, ich würde euch einfach jetzt das mal zeigen, wie das aussieht. Und zwar habe ich mit Servicen, ich mach das mal ganz kurz zu. So, das hier ist, das ist Servicen. Ich habe hier sogar schon, ich bin schon einen Schritt weiter. Und zwar, es gibt eine Datenbank dahinter, die hilft mir zu dekodieren, was diese Sachen sind. Das heißt, hier sehe ich schon diese komplette dekodierten Nachrichten. Und da kann ich dann auch draufgehen. Und da sehe ich plötzlich, dass in diesem Datenblock schon deutlich, deutlich mehr drin sind. Also da sehe ich zum Beispiel, welche Nachrichten gesendet werden, also welche Leuchten vorne im Motor zum Beispiel oder was im Dashboard alles angezeigt wird. Ich mach's mal noch mal zu. Okay, genau. Also das merkt man dann relativ schnell, dass man da schon jede Menge Daten schnipselt, dann ist sich sammelt. So, Servicen ist eine QT Anwendung, die gibt's für die ganzen normalen Betriebsnames, also für Windows gibt's es, es gibt's für Mac, es gibt's für Linux. Das fand ich eben sehr, sehr schick, weil ansonsten, ja, wenn man sich wieder bloß an eins, ja, das ist dann auch immer doof. So, ich habe mehrere von diesen Protokoll Dateien einfach und die kann ich einfach laden. Das hier war jetzt so eine 2-Stunden-Fahrt, ja, das sind dann schnell mal ein paar Gigabyte, wenn man da zusammenkriegt, wenn man da ein bisschen fährt. Am Anfang bringt mir das halt noch nichts, ich muss das dekodieren, weil ansonsten sehe ich einfach nicht, was passiert ist. Zum dekodieren gibt's genormtes Format, das sind sogenannte DWC-Teilen und die kann ich dann verknüpfen. Und sobald ich diese Knüpfung hergestellt habe, habe ich dann auch diese Auswertung. Es gibt von diesen DWC-Taten von .ai, das ist auch ein Open Source Projekt, die bauen an Open Source Autopiloten gerade nach. Und die fangen gerade an, diese DWC-Dateien komplett von den ganzen Herstellern zu dekodieren. Also das ist sehr, sehr geil, also über die .ai und das Problem ist, die sind nicht ganz deckungsgleich, wie die für Servican. Da gucke ich gerade, ob man da ein Paar so schreiben kann, weil die haben schon sehr, sehr viele, also die sind ein bisschen auf die Japaner, aber das ist ja im Prinzip egal. Also wenn man da einmal eine Schnittstelle hat, wenn man da einmal weiß, wie die kodiert sind, dann funktioniert das eigentlich schon ganz gut. Also der Canvas an sich wurde 87 vorgestellt, 88 sind die ersten Chips rausgekommen, es gab zwei Chips, es gab einen von Intel und es gab einen von Philips. Intel hat einen sogenannten Full Can Chip gemacht, die haben das ganze Protokoll implementiert. Während Philips, was Infanion ist, die haben das Ding Basic Can genannt und haben einfach den Befehltsatz reduziert. Das ist ein bisschen eklig, aber das kann einfach passieren, also ein Philips Chip kann zum Beispiel einfach, manche Befehle einfach nicht. Heute dadurch, dass der Pressverfall so hoch ist, gibt es eigentlich praktisch nur noch Full Can. Also die ganzen neuen Chips haben eigentlich immer den gesamten Befehltsatz von Bosch implementiert. Ich habe hier zwei S-Klassen drauf und zwar hat das den Grund, die S-Klasse der W140 war das erste Auto, was ein Canvas drin hatte. Und zwar hatten die das Problem, die hatten so viele Elektronik da drin, dass sie einfach schon gar nicht mehr das gehandelt bekommen haben. Und ja, kurz bevor ist, wie gesagt, der von Bosch vorgestellt worden. Zum Vergleich, damals haben fünf Steuergeräte gereicht. Also ich habe bei mir, ich habe ein Toyota von 2007, ich habe ungefähr 12 Steuergeräte. Wenn ich das vergleiche, mit einer aktuellen S-Klasse, der hat über 100. Also das ist schon ein Wahnsinn, was gerade in Limousine, sag ich, jetzt mal da verbaut wird. Dazu kommt, was ich vorher ja auch schon gesagt habe, es gibt nicht nur den Canvas, sondern die benutzen sehr, sehr viele Busse. Ich kann auch an einem Busstrang maximal 30 Geräte anschließen. Das heißt, wenn ich 100 Steuergeräte habe, sag ich jetzt schon mal, es gibt auf jeden Fall mindestens drei Busse. Die Hersteller können die Nachrichten selber vergeben. Das ist eine ganz, ganz wichtige Info. Das macht auch gerade diese DWC-Dateien, von denen ich gerade vorher geredet habe, so extrem wichtig. Weil ich muss wirklich wissen, was es für mein Auto, oder zumindest für mein Typ vom Auto, dieses Format, wie es es quadriert. Wenn ich das nicht habe, dann habe ich halt nur diesen Datenstrom, den wir vorher ja auch gesehen haben. Und das ist dann halt schon relativ schnell unübersichtlich. Da sieht man auch, wie gesagt, bei der ersten S-Klasse es gab 100 Nachrichten. Wenn ich heute sag, okay, ich habe heute ja bis zu 6000 oder mehr als 6000 sogar. Das ist schon echt gewaltig, was ich da getan habe. Und das war eine der Hauptgründe, warum ich meinen Auto auch jetzt nicht mehr hergebe. Weil einfach jetzt mit einem neuen anzufangen, das ist einfach so komplex. Da bin ich einfach froh, wenn ich einfach eins habe, was schon ein paar Jahre alt ist. Wo ich halt sage, okay, zehn Steuergeräte, das kriegt man noch einigermaßen hin. Ich habe auch jetzt schon so ungefähr 70 Nachrichten, wo ich einfach weiß, okay, was sie bedeuten, wo sie hingehören, was ich machen muss, dass sie sich so verhalten. Aber das ist schon, ja. Also, ein neueres Auto ist da nicht einfach. Also, ich mach jetzt mal das Kleine. Also, die kann Nachrichten, die bestehen immer aus zwei, also aus zwei Werten. Und zwar, ich habe für jedes Gerät eine Priorität und eine Adresse. Ganz wichtig beim Kanbuss ist, es ist einfach servolos. Das heißt, jeder kann mitreden. Das heißt, wenn der Bus voll ist, fällt halt irgendwas hinten runter. Das wäre jetzt natürlich ein bisschen ungünstig, wenn so Informationen für die Bremse oder sowas hinten runterfallen. Von dem her gibt es diese Priorisierung. Das heißt, auch wenn sich die drei um den Bus gerade streiten, ich glaube, das ist eine gute Idee, dass die Bremse gewinnt. Weil, ob mein Getriebe jetzt, sag ich mal, im optimalen Verlauf ist oder ob da gerade die Temperatur ein bisschen zu hoch ist, dass wenn ich gerade eine Vollbremsung mache oder der Brückenpfeiler kommt, dann ist das vielleicht doch gerade nicht so wichtig. Der Kanbuss an sich, der wird terminiert mit einem 120 Ohm Widerstand auf beiden Seiten. Da muss man auch ein bisschen darauf achten, wenn man so den Bus selber baut. Das ist auch etwas, was man ganz gerne immer so ein bisschen überseht, dass das dann nicht funktioniert. Also, das hatte ich am Anfang auch immer so, wenn man mag, naja, lernen. Genau. In dem Fall würde ich jetzt noch ein bisschen über die OBD-2-Schnittstelle was sagen und zwar die OBD-2-Schnittstelle, die muss jedes Auto haben, was in USA verkauft wird. Es gibt auch eine europäische Norm, es ist identisch wie die amerikanische, aber wichtig ist, dass jedes Auto heutzutage diese Schnittstelle hat. Je nachdem es gibt verschiedene, also der Pin 1 und der Pin 9 zum Beispiel, die kann jeder Hersteller selber benutzen, wie er sie möchte, ich habe jetzt einfach mal die Pins, die nur für ihn kann, wichtig sind, markiert. Allein mit denen kann ich im Prinzip schon, wenn ich ja einfach irgendeinen Stecker habe oder einfach so ein Kabel und schon ein Arduino-Shield oder sowas, kann ich von diesen Daten dann auch abgreifen. Also gerade auch für ein Arduino gibt es mittlerweile auch eine ganz erhebliche Anzahl von Shields, die das schon machen. Der OBD-2-Schnittstelle ist eigentlich zur Fehlerauswertung gedacht, deswegen kennen es wahrscheinlich auch sehr viele, da gibt es diese kleinen Chips, mit denen man dann auch die Fehlermeldung zurücksetzen kann. Damit das überhaupt funktioniert, gibt es verschiedene Gruppen. Es gibt diese vier Gruppen, also diese Nachrichten als Fehler, die besteht immer aus einer von diesen vier Buchstaben und dahinter kommt dann die ID. Und auch dort haben wir das dann wieder, dass die Hersteller die IDs auch wieder selber vergeben können. Und ich habe jetzt hier einfach mal geguckt, was verbirgt sich dann hinter jeweils 001 und genau also aus dem Bereich Motor, Getriebe zum Beispiel, da ist das hier dann so die Fehlermeldung. Was die ID. allerdings natürlich dann wieder interpretiert ist, das ist dann auch wieder das, wo jeder Hersteller wieder sein eigenes Macht, wie er es dann haben möchte. Das ist dann auch immer so der Punkt. Genau, ich würde jetzt nochmal das mit dem Savvy kennen. Das ist sehr gut, dass wir noch Zeit haben. Das ist nicht mal korrupte Dateien. Und zwar, ich kann nämlich im Savvy kennen, habe ich dann auch die Möglichkeit, diese ganzen Sachen je nach Steuergerät, kann ich die dann auch grafisch Paket für Paket ausgeben. Das ist extrem cool und das macht es natürlich dann auch ein bisschen einfacher, wenn man sagt, vorsicht, nicht erschrecken, wenn man so ein bisschen sieht, was die einzelnen Nachrichten heißen. Hier habe ich jetzt nämlich dann auch wieder den Punkt, ich kann halt jetzt sagen, okay, das hier ist von diesem Steuergerät, mit dieser ID, das ist das, was der alles gerade über den Bus sendet. Und so kann ich eben eins nach dem anderen vorgehen. Und so sieht man dann auch relativ schnell, was passiert. Man kann sich da wirklich Paket für Paket im Vorhängeln, das heißt, wenn man weiß, okay, über diesem Steuergerät läuft zum Beispiel einfach die Motorsteuerung oder sowas, und ich habe irgendeine Motorkontrollleuchte als im Display. Dann kann man sagen, okay, ich schalte mal die anderen einfach mal ab und ich fange mit dem einfach mal an und ich tu mir einfach mal diese Informationen raussuchen und ich kann ja dann auch gezielt manipulieren. Zum Beispiel Blinker oder Drehzahl oder Geschwindigkeit, das sind alle so Sachen, wo man dran spielen kann, wo man dann auch rauskriegt, wie man es, was dann rauskommt. Genau. Hier sind wie gesagt die Steuergeräte. Dadurch, dass doch jedes Steuergerät einen anderen Zweck hat, ist natürlich dann auch die Kurve jeweils unterschiedlich und es kommt wirklich ein bisschen drauf an. Also manchmal hilft es einfach zum Verständnis, aber manchmal wird es dann auch wieder, wenn man so springt an auf eine falsche Pferde, das ist dann auch immer so ein bisschen gemein. Haben wir vielleicht noch Zeit für ein, zwei Fragen? Also, in dem Fall, wenn noch jemand Fragen hat, ist korrekt. So, in dieser Moment, die Bremse hat zwei Nullen, Null, Null, und dann die Eins. Die Anzahl der Nullen, hier, die ist Teil der Adresse. Genau. Also so funktioniert die Adressierung eben. Deswegen, also hast du vollkommen recht, die Priorität wird eben über die Anzahl der Nullen gemacht. Und wie das Gerät angesprochen wird, ist immer aus diesen zwei Teilen also die Priorität und die Adresse. Das wird zur Adressierung verwendet. Ah, okay. Ja, normalerweise, wenn man Speck liest oder so, da wird es nicht aufgetrennt. Also, wenn es Standard-Adresen, dann ist die Elf-Bitlang. Wenn es Externate-Adresen sind, sind sie 29-Bitlang. Das ist vollkommen richtig. Aber die Priorität, wie gesagt, wird immer vor und vor noch mit geschickt, weil ansonsten hast du, kannst du nicht sagen, was was ist. Der Junge? Ja. Wenn du es bei dem Auto da rumbeißst und auch Nachrichten verschickst unter der Fahrt und hast du ein bisschen Bedenken, dass sie Sicherheit, ob der irgendwo im Schiffing ist. Ja, sehr stark. Also, ich würde definitiv erstmal anfangen, wie gesagt, wirklich nur mit dem lesenden Zugriff. Weil das ist natürlich, du bist auf dem Kanbus. Das ist schon ein sehr, sehr riskantes Spiel, natürlich. Und was natürlich ist ... Deswegen auf jeden Fall lesenden Zugriff. Ein bisschen hilft dir, dass beim Kanbus immer Werte, also so Werte hinterlegt sind. Das heißt, ein Steuergerät macht immer nur in der Range, wo es arbeiten soll. Das heißt, du kannst mir im VW Golf zum Beispiel nicht einfach sagen, okay, ich fahre jetzt 370 oder sowas. Dann wird der Tacho sagen, nee, das ist außerhalb des Wechs, das wird nicht funktionieren. Aber trotzdem, vollkommen richtig. Lesen ja, dekulieren ja, simulieren ja. Aber schreiben, wie gesagt, würde ich erstmal nicht machen, wenn man nicht weiß, was da dran hängt. Oder ansonsten auf IBS-Steuergeräte holen und der Sports, das funktioniert auch ganz gut. Anzahl der Nullen? Ja. Kann ich dir vielleicht mal definieren, was Anzahl der Nullen hier betrachtet? Links, genau. Also, du hast hier 2 Stufen, 0. Das heißt, die Bremse ist einfach in diesem Bus, hat immer die höchste Priorität von diesen 3. So mit Anzahl 0 ist gemeint ... Wie viel links? Korrekt, korrekt. Zweite Frage. Gibt es auch Möglichkeiten, mit den Teilen, die du da hast, die Daten zu manipulieren? Ne, was heißt die Daten? Es ist ein Textformat. Das heißt, dadurch, dass es nicht serverbasiert ist, kannst du wieder Sachen reinschreiben. Also ich kann nur neue Messages reinschreiben, oder kann ich vorhanden mehr ändern? Richtig, was aber fürs System dann wieder egal ist, weil die nicht wissen, wo es herkommt. Also es gibt keinen Quellfeld in dem Sinn. Das heißt, die Nachrichten, die auf dem Bus sind, sind auf dem Bus. Können wir im Nachgang einschauen. Kleiner Einschub dazu. Ich kann auch noch etwas sagen, ich kann natürlich zusätzliche Nachrichten auf dem Bus tun. Ich muss aber damit die originalen Nachrichten nicht abgearbeitet werden, muss ich sie kaputt machen. Also die ID steht vorne in der Nachricht drin, bedeutet ich kann einfach den Rest mindestens dann hinten halt den, wie nennt sich das, die Checksumme kaputt machen und dann kann die originalen Nachrichten nicht mehr abgearbeitet werden und aber deine zusätzliche eingefügte, die kann ja dann noch, wenn man das kaputt macht. Also mit der Methode können sich auch z.B. Seulgeräte, die amoklaufen, von einem anderen Seulgerät vom Netz genämmen werden. Also die machen dann die Nachrichten, das Gerät ist kaputt. Genau, wobei wenn ein Gerät amokläuft, dann könnte das einfach nur noch Nullen senden und dann kann niemand anderes mehr publizieren auf dem Bus. Super. Also in dem Fall, wie gesagt, ich steh nachher noch zur Verfügung, wenn ihr noch Fragen habt. Ich bedanke mich erstmal bei euch für die Aufmerksamkeit und ich wünsche euch noch ein wunderschönes erste Heck. Dankeschön.