ICSim

Hardware & Industrial

Симулятор приборной панели автомобиля для обучения CAN-bus анализу. Создаёт виртуальную CAN-сеть с симуляцией ECU: спидометр, поворотники, замки дверей. Позволяет практиковаться в реверсе CAN-протоколов без реального автомобиля. Используется на DEF CON Car Hacking Village.

Добавлен 13.07.2026 · Обновлён 13.07.2026 · Hardware & Industrial
Установка
sudo apt install libsdl2-dev libsdl2-image-dev can-utils
git clone https://github.com/zombieCraig/ICSim
cd ICSim && make
./setup_vcan.sh
./icsim vcan0 & ./controls vcan0
переведено ИИ

Симулятор приборной панели для SocketCAN

Автор: OpenGarages agent.craig@gmail.com

Компиляция

Вам понадобятся: * SDL2 * SDL2_Image * can-utils

Вы можете получить can-utils с github или на Ubuntu можете запустить следующую команду

  sudo apt-get install libsdl2-dev libsdl2-image-dev can-utils  

После установки зависимостей вы можете использовать систему сборки Meson для сборки проекта:

  meson setup builddir && cd builddir
  meson compile

Тестирование на виртуальном CAN-интерфейсе

Вы можете запустить следующие команды для настройки виртуального CAN-интерфейса

  sudo modprobe can
  sudo modprobe vcan
  sudo ip link add dev vcan0 type vcan
  sudo ip link set up vcan0

Если вы введете ifconfig vcan0, вы должны увидеть интерфейс vcan0. В этом репозитории также предоставлен файл setup_vcan.sh.

Использование

Операции по умолчанию:

Запуск симулятора приборной панели (IC):

  ./icsim vcan0

Затем запустите панель управления

  ./controls vcan0

Настройки по умолчанию, заданные в коде, должны быть синхронизированы, и панель управления должна управлять приборной панелью. В идеале используйте контроллер, похожий на XBox, для взаимодействия с панелью управления. Приложение управления будет генерировать соответствующие CAN-пакеты на основе нажимаемых вами кнопок. Симулятор IC перехватывает CAN-шину и ищет соответствующие CAN-пакеты, которые изменяют отображение.

Устранение неполадок

  • Если вы получаете ошибку, связанную с canplayer, то, возможно, вы неправильно установили can-utils или он не находится в вашем PATH.
  • Если контроллер, похоже, не реагирует, убедитесь, что окно панели управления выбрано и активно.

Не linking lib.o

Если lib.o не линкуется, скорее всего, это происходит потому, что он собран не для той архитектуры вашей платформы. Чтобы исправить это, вам нужно скомпилировать can-utils и скопировать вновь скомпилированный lib.o в каталог icsim. Вы можете получить can-utils по адресу: https://github.com/linux-can/can-utils

read: Bad address

При запуске ./icsim vcan0 вы можете получить сообщение read: Bad Address, это обычно является результатом необходимости перекомпиляции с обновленными библиотеками SDL. Убедитесь, что у вас установлены рекомендуемые последние библиотеки SDL2. Некоторые пользователи сообщали об исправлении этой проблемы путем создания символических ссылок на файлы SDL.h вручную, либо вы можете отредактировать Makefile и изменить CFLAGS, чтобы указать на место, куда ваш дистрибутив устанавливает заголовочный файл SDL.h, например: /usr/include/x86_64-linux-gnu/SDL2.

Также было сообщение о том, что в Arch Linux необходима библиотека sdl2_gfx.

Использование для обучения взлому CAN

Для безопасного обучения взлому CAN вы можете воспроизвести пример записи включенного в этот репозиторий generic CAN трафика. Это создаст нечто, похожее на обычный CAN «шум». Затем запустите симулятор IC с ключом -r (случайность).

  ./icsim -r vcan0
  Using CAN interface vcan0
  Seed: 1401717026

Теперь скопируйте начальное число (seed number) и вставьте его как опцию -s (seed) для панели управления.

  ./controls -s 1401717026 vcan0

Это рандомизирует какие CAN-пакеты требуются IC, и передавая seed панели управления, вы синхронизируете их. Рандомизация изменяет ID арбитража, а также позицию байтов в используемых пакетах. Это даст вам опыт в обнаружении различных типов CAN-пакетов на CAN-шине.

Для максимально реалистичного обучения вы можете изменять уровни сложности. Установите сложность на 2 с помощью панели управления:

  ./controls -s 1401717026 -l 2 vcan0

Это добавит дополнительную рандомизацию к целевым пакетам, имитируя другие данные, хранящиеся в том же ID арбитража.

Комментарии
Войдите, чтобы оставить комментарий