AI a CAN bus — reverzné inžinierstvo automobilových dát pomocou Claude Code

Čo je reverzné inžinierstvo CAN bus a prečo ho AI mení od základov

Každé moderné vozidlo obsahuje desiatky elektronických riadiacich jednotiek (ECU), ktoré si neustále vymieňajú správy po CAN bus zbernici. Tieto správy nesú informácie o otáčkach motora, rýchlosti, teplote chladiacej kvapaliny, polohe plynového pedálu a stovkách ďalších parametrov. Problém je, že väčšina výrobcov nezverejňuje presný význam jednotlivých CAN ID a dátových bajtov — sú to proprietárne dáta.

Reverzné inžinierstvo CAN bus je proces, pri ktorom sa snažíte pochopiť, čo znamenajú jednotlivé správy na zbernici bez oficiálnej dokumentácie. Cieľom je vytvoriť DBC súbor — databázu signálov, ktorá mapuje konkrétne bity v CAN správach na fyzikálne veličiny (rýchlosť v km/h, otáčky v RPM, teplota v °C).

Tradične to bol manuálny, časovo náročný proces trvajúci dni až týždne. S príchodom veľkých jazykových modelov (LLM) ako Claude Code sa však tento proces dramaticky zrýchľuje — AI dokáže analyzovať tisíce CAN správ za sekundy a identifikovať vzory, ktoré by ľudský analytik hľadal hodiny.

Tradičný prístup — manuálne reverzné inžinierstvo

Pred nástupom AI vyzeralo reverzné inžinierstvo CAN bus takto:

  1. Záznam surových dát — pripojenie CAN loggera na zbernicu (zvyčajne cez OBD2 port) a nahrávanie všetkých správ počas rôznych jazdných scenárov. Typický 10-minútový záznam pri mestskej jazde obsahuje stovky tisíc CAN správ
  2. Filtrovanie podľa CAN ID — identifikácia najaktívnejších identifikátorov a ich triedenie podľa frekvencie vysielania. Niektoré správy sa vysielajú každých 10 ms (motorové parametre), iné len pri zmene stavu (stlačenie tlačidla)
  3. Korelácia s fyzickými akciami — otáčanie volantom, stláčanie brzdového pedálu, zapínanie smeroviek — a súčasné sledovanie, ktoré bajty sa v správach menia. Analytik musel vykonávať jednotlivé akcie opakovane a izolovane, aby eliminoval náhodné korelácie
  4. Bitová analýza — manuálne skúmanie jednotlivých bitov a bajtov, hľadanie vzorov: ktoré bity sa menia lineárne (rýchlosť, otáčky), ktoré sú binárne (spínače), ktoré kolíšu (senzory teploty). Najnáročnejšou časťou je určenie byte orderu (big-endian vs little-endian) a toho, či signál prechádza cez hranicu bajtu
  5. Kalibrácia — porovnávanie nameraných hodnôt s palubným počítačom alebo externým GPS na určenie mierky a ofsetu signálu. Napríklad rýchlosť 100 km/h sa môže v CAN dátach zobraziť ako hodnota 10 000 (faktor 0,01) alebo 1 000 (faktor 0,1) — bez referenčného bodu to nemôžete určiť

Tento proces vyžadoval hlboké znalosti o CAN bus protokoloch, trpezlivosť a značné skúsenosti. Jeden signál mohol zabrať hodiny práce, pričom moderné vozidlo vysiela stovky rôznych správ. Kompletné reverzné inžinierstvo jedného modelu vozidla — identifikácia 30–50 kľúčových signálov — mohlo trvať skúsenému inžinierovi aj niekoľko týždňov.

Prečo je manuálna analýza tak náročná

Hlavným problémom je objem dát a ich nejednoznačnosť. Na jednej CAN zbernici môže komunikovať 20–30 ECU, pričom každá vysiela viacero správ s rôznou frekvenciou. Výsledkom je nepretržitý prúd dát, v ktorom treba nájsť zmysluplné vzory. Navyše rovnaký CAN ID môže niesť rôzne signály v rôznych bajtoch — napríklad CAN ID 0x1A0 môže v bajtoch 0–1 obsahovať rýchlosť kolies a v bajtoch 4–5 uhol natočenia volantu. Manuálne rozlíšenie všetkých signálov v jednej správe je mimoriadne pracné.

AI-driven prístup — ako Claude Code automatizuje analýzu

Veľké jazykové modely prinášajú do reverzného inžinierstva CAN bus zásadnú zmenu. Namiesto manuálneho prechádzania tisícov riadkov hexadecimálnych dát môžete celú analýzu delegovať na AI. Tu je typický pracovný postup:

Krok 1: Načítanie surových CAN dát

Nahráte záznam CAN správ — typicky CSV alebo LOG súbor — priamo do Claude Code. Model spracuje celý dataset a vytvorí si internú mapu všetkých CAN ID, ich frekvencií a dátových vzorcov.

timestamp,can_id,dlc,data
0.000,0x0C8,8,00 00 00 00 00 00 00 00
0.010,0x0B6,8,80 00 20 00 F0 00 00 00
0.010,0x0C8,8,00 00 04 00 00 00 00 00
0.020,0x1A0,8,00 00 00 00 80 12 00 00
0.020,0x0C8,8,00 00 0C 00 00 00 00 00

Krok 2: Automatická detekcia vzorov

AI analyzuje bitovú aktivitu naprieč celým datasetom. Pre každý CAN ID vytvorí akúsi „tepelnú mapu" — ktoré bity sa menia často, ktoré zostávajú konštantné a ktoré sa menia korelovane. Toto je ekvivalent niekoľkohodinovej manuálnej práce, no AI to zvládne za sekundy.

Model dokáže identifikovať:

  • Lineárne signály — monotónne rastúce alebo klesajúce hodnoty (rýchlosť, otáčky, teplota)
  • Binárne prepínače — bity, ktoré prepínajú medzi 0 a 1 (smerovky, brzdový spínač, stav dverí)
  • Multiplexované správy — CAN ID, kde prvý bajt určuje typ správy a zvyšné bajty menia význam
  • Čítače a kontrolné súčty — rolling counters a CRC polia používané na detekciu chýb

Krok 3: Generovanie DBC súboru

Po identifikácii signálov Claude Code automaticky vygeneruje DBC (Database CAN) súbor — štandardný formát používaný nástrojmi ako Vector CANalyzer, PCAN Explorer alebo python-can. DBC súbor obsahuje definíciu každého signálu vrátane pozície v správe, dĺžky v bitoch, mierky (factor), ofsetu a fyzikálnej jednotky.

Príklad vygenerovanej DBC definície pre signál rýchlosti:

BO_ 180 VehicleSpeed: 8 Vector__XXX
 SG_ VehicleSpeed : 0|16@1+ (0.01,0) [0|655.35] "km/h" Vector__XXX
 SG_ WheelSpeedFL : 16|16@1+ (0.01,0) [0|655.35] "km/h" Vector__XXX

Takýto DBC súbor potom môžete priamo importovať do vizualizačných nástrojov a okamžite dekódovať živý CAN bus traffic vo vašom vozidle.

Krok 4: Analýza video záznamu z palubnej dosky

Pokročilou technikou je súčasný záznam CAN dát a videa z palubnej dosky. AI s multimodálnymi schopnosťami dokáže extrahovať hodnoty zobrazené na prístrojovom paneli (rýchlosť, otáčky, teplota) z video snímok a korelovať ich s CAN dátami — čím automaticky kalibruje detegované signály.

Postup je nasledovný: kameru namierite na prístrojový panel, spustíte súčasný záznam CAN dát a videa, potom vykonáte jazdný scenár (zrýchlenie, brzdenie, zatáčanie). AI potom z video snímkov extrahuje zobrazené hodnoty a hľadá CAN signály, ktoré im najlepšie zodpovedajú. Výsledkom je automaticky nakalibrovaný DBC súbor s overenou presnosťou.

Porovnanie: manuálny vs AI prístup

Rozdiel medzi tradičným a AI-driven prístupom je najlepšie vidieť na konkrétnych číslach:

  • Čas na identifikáciu jedného signálu: manuálne 1–4 hodiny, s AI 2–10 minút
  • Kompletná analýza vozidla (30–50 signálov): manuálne 1–3 týždne, s AI 1–2 dni (vrátane verifikácie)
  • Potrebné skúsenosti: manuálne vyžaduje pokročilé znalosti CAN protokolu a bitovej aritmetiky, AI prístup stačí základné pochopenie CAN bus a schopnosť formulovať otázky
  • Presnosť: porovnateľná — AI výsledky však vyžadujú vždy ľudskú verifikáciu na reálnom vozidle
  • Náklady: oba prístupy vyžadujú rovnaký hardvér; AI prístup pridáva len náklady na API volania alebo predplatné AI nástroja

Praktický príklad — identifikácia rýchlosti a otáčok motora

Pozrime sa na konkrétny scenár. Máte záznam CAN bus dát z jazdy, pri ktorej ste postupne zrýchľovali z 0 na 100 km/h a potom brzdili do zastavenia. Hľadáte signál rýchlosti a otáčok motora.

Postup s AI asistentom

  1. Nahráte CAN log do Claude Code s inštrukciou: „Analyzuj CAN dáta a nájdi signál rýchlosti vozidla a otáčok motora."
  2. AI identifikuje kandidátov — nájde CAN ID, ktoré obsahujú lineárne rastúcu hodnotu korelujúcu s popisom jazdy. Typicky ide o 16-bitový signál v rozsahu 0–65 535 s faktorom okolo 0,01 (pre rýchlosť) alebo 0,25 (pre otáčky).
  3. Verifikácia — model vám ukáže graf detegovaného signálu a porovná ho s očakávaným priebehom. Ak ste zrýchľovali lineárne, signál by mal zodpovedať.

Príklad výstupu analýzy:

CAN ID 0x0B4 — bajty 0–1 (big-endian)
  Rozsah surových hodnôt: 0–6200
  Faktor: 0.01, Ofset: 0
  Fyzikálny rozsah: 0–62 km/h → pravdepodobne RÝCHLOSŤ
  Korelácia s jazdným profilom: 94.2%

CAN ID 0x0C8 — bajty 2–3 (big-endian)
  Rozsah surových hodnôt: 0–28000
  Faktor: 0.25, Ofset: 0
  Fyzikálny rozsah: 0–7000 RPM → pravdepodobne OTÁČKY MOTORA
  Korelácia s jazdným profilom: 91.8%

Čo by manuálne trvalo hodiny, AI zvládne za niekoľko minút — vrátane identifikácie byte orderu, mierky a ofsetu.

Overenie výsledkov a iterácia

Dôležitým krokom je overenie identifikovaných signálov. Claude Code vám navrhne konkrétne testy: „Zapnite motor a nechajte ho na voľnobeh — otáčky by mali byť 700–900 RPM. Potom zvýšte otáčky na 3 000 RPM a sledujte, či sa signál na CAN ID 0x0C8 lineárne zvýši." Ak hodnoty nesedia, model upraví faktor alebo ofset a navrhne ďalší test.

Pri zložitejších signáloch — napríklad teplota chladiacej kvapaliny, ktorá sa mení pomaly — AI odporučí dlhší záznam (od studeného štartu po zahratie motora na prevádzkovú teplotu) a identifikuje signál podľa charakteristickej krivky ohrevu. Tento iteratívny prístup je oveľa efektívnejší ako manuálne hádanie.

Nástroje a vybavenie pre AI reverzné inžinierstvo

Na začiatok s AI-driven reverzným inžinierstvom CAN bus budete potrebovať:

Hardvér

  • CAN bus rozhranie — od jednoduchého ELM327 OBD2 adaptéra (od 10 EUR) až po dedikované CAN loggery (CSS Electronics CLX000, Peak PCAN-USB). Pre základný záznam postačí aj ELM327, no pre plnú zbernicu bez OBD2 filtra sú potrebné profesionálne loggery
  • Notebook alebo počítač s dostatočným úložiskom pre CAN záznamy (desiatky MB za minútu pri vysokej frekvencii správ)

Softvér

  • python-can — open-source Python knižnica na prácu s CAN bus dátami. Podporuje desiatky hardvérových rozhraní a formátov záznamov
  • cantools — Python knižnica na prácu s DBC súbormi, konverziu a dekódovanie CAN správ
  • Claude Code — AI asistent s možnosťou vytvárania vlastných promptov a nástrojov (skills) špecializovaných na CAN bus analýzu
  • SavvyCAN / BUSMASTER — open-source nástroje na vizualizáciu CAN bus dát a grafickú analýzu

Príklad: Záznam CAN dát pomocou python-can

Nasledujúci Python skript ukazuje základný záznam CAN dát cez ELM327 adaptér, ktorý potom môžete analyzovať pomocou AI:

import can
import csv
import time

bus = can.interface.Bus(channel='/dev/ttyUSB0',
                        bustype='slcan', bitrate=500000)

with open('can_log.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['timestamp', 'can_id', 'dlc', 'data'])
    start = time.time()
    while time.time() - start < 60:  # 60s zaznam
        msg = bus.recv(timeout=1.0)
        if msg:
            data_hex = ' '.join(f'{b:02X}' for b in msg.data)
            writer.writerow([
                f'{msg.timestamp:.3f}',
                f'0x{msg.arbitration_id:03X}',
                msg.dlc, data_hex
            ])

Výsledný CSV súbor potom jednoducho nahráte do Claude Code a necháte AI identifikovať všetky signály automaticky.

Užitočné zdroje na canbus.sk

Video ukážka — CAN bus sniffing v praxi

Nasledujúce video demonštruje praktické použitie CAN bus snifferu na zachytávanie a analýzu správ na zbernici. Uvidíte, ako vyzerá surový CAN traffic v reálnom čase, ako sa filtrujú jednotlivé CAN ID a ako sa dáta interpretujú pomocou DBC databázy.

Video ukazuje kompletný pracovný postup od pripojenia CAN rozhrania cez záznam dát až po dekódovanie signálov — presne ten proces, ktorý AI dokáže výrazne urýchliť.

Bezpečnosť a etika — zodpovedné reverzné inžinierstvo

Reverzné inžinierstvo CAN bus je mocný nástroj, no nesie so sebou zodpovednosť. CAN bus komunikácia riadi bezpečnostne kritické systémy — od bŕzd cez airbagy až po riadenie — preto je nevyhnutné dodržiavať prísne zásady:

  • Pracujte len s vlastným vozidlom — reverzné inžinierstvo cudzieho vozidla bez súhlasu majiteľa je právne problematické a eticky neprípustné. Ak pracujete na vozidle klienta v rámci servisu, vždy si zabezpečte písomný súhlas
  • Nikdy neposielajte CAN správy počas jazdy — pasívne čítanie je bezpečné, no aktívne vysielanie na zbernicu môže ovplyvniť bezpečnostné systémy (ABS, ESP, airbagy). Testovanie zápisov robte výlučne na stojace vozidlo s vypnutým motorom a nikdy na verejnej ceste
  • Výskumné a vzdelávacie účely — reverzné inžinierstvo na účely opravy, diagnostiky a vzdelávania je v EÚ legálne podľa smernice o softvérových licenciách a práve na opravu. Využitie na obchádzanie bezpečnostných systémov, úpravu emisných parametrov (chip tuning na zníženie emisných kontrol) alebo manipuláciu s počítadlom najazdených kilometrov je nelegálne
  • Zdieľajte zodpovedne — ak objavíte bezpečnostnú zraniteľnosť v CAN bus implementácii, kontaktujte výrobcu (responsible disclosure) namiesto verejného zverejnenia. Automobilová bezpečnosť sa týka životov ľudí

Záver — AI posúva autodiagnostiku do novej éry

Reverzné inžinierstvo CAN bus bolo ešte pred pár rokmi doménou úzkeho kruhu špecialistov s osciloskopmi a hex editormi. Dnes vďaka nástrojom ako Claude Code dokáže túto analýzu vykonať každý technicky zdatný nadšenec s OBD2 adaptérom a notebookom.

AI nenahradí hlboké pochopenie automobilovej komunikácie — stále potrebujete vedieť, čo hľadáte a prečo. Ale dramaticky znižuje bariéru vstupu a zrýchľuje proces z dní na minúty. Kombinácia python-can knižnice, otvoreného CAN rozhrania a AI asistenta vytvára dostupnú platformu pre:

  • Nadšencov, ktorí chcú pochopiť, ako ich auto komunikuje
  • Nezávislé servisy, ktoré potrebujú diagnostické dáta bez drahých OEM nástrojov
  • Výskumníkov v oblasti automobilovej kybernetickej bezpečnosti
  • Vývojárov aftermarket riešení (telematika, fleet management, závodné dátové systémy)

S pokračujúcim vývojom AI modelov a rastúcim množstvom zdieľaných DBC databáz sa reverzné inžinierstvo CAN bus stáva čoraz prístupnejším — a CAN bus zostáva chrbtovou kosťou automobilovej elektroniky aj v ére elektromobilov a autonómnej jazdy.

Ak chcete začať, pripojte ELM327 adaptér k vášmu vozidlu, nahrajte 10-minútový CAN log pomocou python-can a nechajte Claude Code analyzovať výsledky. Možno budete prekvapení, koľko zaujímavých dát vaše auto neustále komunikuje — a ako rýchlo vám AI pomôže ich pochopiť.

Odporúčané diagnostické prístroje