CAN-Hacker Bomber

Иногда нужно быстро выяснить какой пакет в CAN шине за какую функцию отвечает, если протокол обмена не стандартизирован то сделать это достаточно сложно и долго по времени. Или другая ситуация: Мы имеем от автомобиля только панель приборов и хотим выяснить какой пакет отвечает, например, за индикацию скорости автомобиля или за угол поворота стрелки тахометра.  Не имея автомобиля целиком нам будет сложно это узнать.  Мы задались целью облегчить процесс поиска пакетов в CAN шине и определения их назначения. Результатом решения этой задачи стала простая утилита CAN-Hacker Bomber<-качайте которая позволяет изучить CAN шину методом спуфинга т.е. программа просто посылает пакеты с заданными нами байтами данных в заданном диапазоне ID.  На текущий момент CAN-Hacker Bomber поддерживает работу с 11-битными и 29 битными ID.

Кроме того CAN-Hacker Bomber способен работать в двух режимах:

  1. ID Counter — режим инкремента ID. Каждый последующий пакет будет на 1 больше предшествующего
  2. Data counter — режим инкремента данных. В этом режиме ID не изменяется, но изменяются выбранные байты пакета.

CAN-Hacker Bomber 29bit_jpg

CAN-Hacker Bomber работает по протоколу LAWICEL поэтому он поддерживает все ранее выпущенные и текущие CAN-USB адаптеры работающие по такому же протоколу.

Работать с программой просто:

  1. Подключаем CAN-USB адаптер к CAN шине и USB нашего компьютера
  2. Выбираем COM порт и жмем Connect
  3. Выбираем скорость CAN шины,  нажимаем Open CAN
  4. Установим флаг RX Enable, чтобы видеть приходящие пакеты
  5. Если на CAN шине есть активность и правильно определена ее скорость — мы увидим передаваемые данные
  6. Для запуска перебора пакетов в режиме инкремента ID выбираем диапазон ID, для начала лучше от 000 до 700 если вы работаете в сети с 11 битными ID.
  7. Задаем количество пакетов передаваемых за один шаг в поле Msg per Step,  для первого прохода рекомендуем ставить 5
  8. Забиваем тело пакета данными. Если мы хотим сделать все значения одинаковыми,то запишем нужное значение в поле Value и нажмем Fill Data, для первого прохода рекомендуем записать FF
  9. Выставляем период между посылками в миллисекундах, чем меньше значение тем быстрее идет процесс, но тем сложнее понять зоны ответственности ID и пакетов. Рекомендуем поставить 10
  10. Ставим флаг ID counter — если его не установить будет отправлен только один пакет при нажатии кнопки Go\Stop
  11. Жмем Go и начнется процесс передачи, нам останется наблюдать за реакцией исследуемого модуля
  12. Если мы увидели искомую реакцию, например дернулась стрелка тахометра, нажимаем Stop и далее кнопками Step- и Step+ можем точно локализовать пакет отвечающий за необходимую функцию
  13.  Для максимально точного выявления всех функций как правило необходимо сделать несколько проходов с разными данными, например первый проход тело пакет =FF FF FF FF FF FF FF FF, второй проход 55 55 55 55 55 55 55 55. А на третий проход можно установить флаг Data rotation и в процессе отправки пакетов тело пакета в области данных будет динамически изменяться.
  14.  Так же возможен режим работы с инкрементом любого выбранного байта пакета. Для этого мы задаем ID пакета в поле From — именно во From это ВАЖНО.
  15. Ставим флажки над теми байтами которые хотим инкрементировать
  16. Ставим флаг Data counter и снимаем флаг ID counter
  17. Нажимаем Go! В этом случае ID будет оставаться неизменным, а выбранные байты будут инкрементироваться.

Поле Static message for IGN-ON emulation позволяет запустить параллельную передачу CAN пакета для эмуляции сигнала зажигания. Это актуально для панелей приборов и других ECU которым кроме подачи питания для включения необходимо посылать определенный пакет.

Поле CRC Calculator служит для расчета контрольной суммы передаваемого пакета и позволяет вставить полученное значение в любой байт CAN пакета. Контрольная сумма  как правило расположена в последнем байте пакета.  С помощью флагов мы может установить какие данные пакета участвуют в расчете CRC, как правило это ID и поля данных с 1 по 6.

Поле User Command for CAN interface позволяет отправлять произвольные ASCII команды на CAN интерфейс. Это может быть актуально если CAN интерфейс имеет отличную от LAWICEL\slcan систему команд.

Следуя этой методике и используя CAN-Hacker Bomber можно достаточно быстро получить массу информации об исследуемом автомобиле, очень удобно работать с панелями приборов.

Так же следует понимать что мы передаем некорректные данные и автомобиль может на них по разному реагировать, в том числе могут быть изменены какие-либо программные настройки. Будьте внимательны, вся ответственность лежит на вас.

Пример работы с программой CAN-Hacker Bomber для поиска пакетов в CAN шине Renault Kaptur 2017

Обзор версии от 09 февраля 2018

 

Добавить комментарий