
Датская компания CSS Electronics, известный производитель оборудования для работы с автомобильными шинами, показала необычный эксперимент: ее инженер Мартин Фальк собрал скилл для Claude Code, который сам реверсит закрытые сигналы CAN-шины машины и превращает их в готовый файл с правилами декодирования (DBC). На старом логе с Mercedes E350 агент за пять минут вытащил из проприетарного потока скорость и обороты двигателя — то, на что у специалиста вручную обычно уходят часы.
Реверс CAN-шины — классическая задача "car hacking" и фундамент для кастомных приборок, телеметрии, тюнинга и глубокой диагностики. Казалось бы, многие параметры машина и так отдает по стандарту OBD2 — но проприетарные сигналы точнее (0.1 км/ч против 1 км/ч у OBD2) и обновляются куда чаще (10 раз в секунду против примерно одного раза в пять секунд), а считывать их можно молча, не засыпая машину запросами. Главное же — многих сигналов в OBD2 просто нет: положение педали, угол руля, состояние замков иначе не достать. Проблема в том, что добывать их тяжело: шина выдает тысячи кадров в секунду по десяткам идентификаторов, а нужный параметр спрятан где-то в сырых байтах. Скилл (выложен на GitHub под лицензией MIT) связывает в один конвейер интерфейс CANsub.2, библиотеку python-can и самого агента, который по шагам гоняет небольшие Python-скрипты и сам решает, какой инструмент применить.
Главная хитрость в том, что агенту нужен эталонный сигнал, с которым он сверяет сырые данные. Скилл умеет получать его тремя способами:
из самой шины — например, скорость или обороты по стандарту OBD2 либо данные GPS, если они тоже пишутся в лог;
по видео — вы снимаете спидометр на смартфон, а агент распознает цифры на приборке через OCR и строит из них опорный сигнал;
вручную — если оцифровать нечего (положение педали, угол руля, замок двери), скилл открывает браузерное приложение, где вы двигаете ползунок в такт реальному действию, а отметки времени синхронизируются с записью шины.
Дальше агент работает по понятной схеме. Сначала он смотрит на всю шину сразу и отбрасывает заведомо ненужное — байты, которые вообще не меняются, и служебные поля вроде счетчиков и контрольных сумм. Затем сравнивает оставшихся кандидатов с эталоном и оставляет те, что меняются с ним в такт. После этого перебирает варианты, чтобы найти, где именно внутри сообщения "зашит" нужный показатель. И в самом конце переводит сырые числа в реальные единицы — километры в час, обороты — попутно проверяя результат на здравый смысл: например, скорость не должна быть ненулевой, когда машина стоит на месте.
Любопытнее всего, как сделан сам скилл: Фальк сознательно не писал ни строчки Python и ни строчки инструкций — все сгенерировал Claude, на это ушло 5–10 часов. По оценке автора, при хорошем эталоне так можно вскрыть 90% с лишним проприетарных сигналов "почти без экспертизы", а экономия времени доходит до 95%. Даже на шумном ручном вводе агент в его тестах декодировал сигнал с первого захода, а в одном кейсе сам додумался, где лежат остальные семь сигналов модуля, и достроил их. Ограничение честное: без физического эталона, который можно оцифровать, метод не работает — но там, где он есть, реверс из многочасовой ручной возни превращается в задачу на минуты.
P.S. Поддержать меня можно подпиской на канал "сбежавшая нейросеть", где я рассказываю про ИИ с творческой стороны.
