Симулятор приборной панели автомобиля для обучения CAN-bus анализу. Создаёт виртуальную CAN-сеть с симуляцией ECU: спидометр, поворотники, замки дверей. Позволяет практиковаться в реверсе CAN-протоколов без реального автомобиля. Используется на DEF CON Car Hacking Village.
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
Автор: 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-интерфейса
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.Если lib.o не линкуется, скорее всего, это происходит потому, что он собран не для той архитектуры вашей платформы. Чтобы исправить это, вам нужно скомпилировать can-utils и скопировать вновь скомпилированный lib.o в каталог icsim. Вы можете получить can-utils по адресу: https://github.com/linux-can/can-utils
При запуске ./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 вы можете воспроизвести пример записи включенного в этот репозиторий 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 арбитража.