Фреймворк для эмуляции USB-устройств и фаззинга USB-стеков с целью выявления уязвимостей в хост-контроллерах и драйверах.
Швейцарский нож для тестирования безопасности CAN-шины автомобилей. Модули: обнаружение ECU, fuzzing CAN-фреймов, сканирование UDS-сервисов, запись/воспроизведение сообщений, …
Инструмент для разработки USB-периферии — используется для аппаратного взаимодействия и реверс-инжиниринга устройств.
Кастомная прошивка Flipper Zero с расширенными функциями Sub-GHz, NFC, RFID и BadUSB.
Прошивка для ESP32 с Wi-Fi/Bluetooth-атаками, включая deauth, beacon spam, sniffing и анализ пакетов.
pip install facedancer
Этот репозиторий содержит новое поколение программного обеспечения Facedancer. Являясь потомком оригинального Facedancer на базе GoodFET, этот репозиторий предоставляет Python-модуль с расширенной поддержкой Facedancer — включая поддержку нескольких плат и некоторые значительные новые функции.
Документация Facedancer размещена на Read the Docs. Исходные файлы документации находятся в папке docs/.
Установите этот пакет с помощью следующей команды:
pip install facedancer
После этого вы можете импортировать пакет facedancer как обычно:
$ python
>>> import facedancer
Facedancer 3.0 — это полная переработка оригинального ядра эмуляции и не поддерживает устаревшие скрипты.
Если вы используете скрипты или учебные материалы, зависящие от функций или API, устаревших в v3.0.x, вы можете установить последнюю версию v2.9.x Facedancer с помощью:
pip install "facedancer<=3"
Устаревшие апплеты и примеры можно найти в ветке v2.9.x.
Платы Facedancer — это простые аппаратные устройства, которые действуют как "дистанционно управляемые" USB-контроллеры. С помощью соответствующего программного обеспечения вы можете использовать эти платы для быстрого и простого эмулирования USB-устройств — а также для фаззинга USB-хостов!
Этот конкретный репозиторий программного обеспечения в настоящее время позволяет легко создавать эмуляции USB-устройств на Python. Управление достаточно детализированное, чтобы можно было вызывать всевозможные некорректные поведения USB. :)
Для получения дополнительной информации см.:
Одной из основных новых функций нового кодовой базы Facedancer является возможность MITM (Meddler-In-The-Middle) USB-соединений — заменяющая оригинальный проект одного из авторов USBProxy. Это открывает целый новый спектр приложений — включая анализ протоколов и манипуляцию USB-пакетами в реальном времени — и особенно полезно, когда вы не контролируете программное обеспечение, работающее на целевом устройстве (например, на встраиваемых системах или игровых консолях).
+-----------------------------------------------------------------------+
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| | | | | | | | | |
| PROXIED | | | HOST COMPUTER | | FACEDANCER DEVICE | | | TARGET USB |
| DEVICE <------> running Facedancer software <---> acts as USB-Controlled <------> HOST |
| | | | | | USB Controller | | | |
| | | | | | | | | |
+------------+ | +--------------------------------+ +---------------------------+ | +--------------+
| |
| MITM Setup (HOST + FACEDANCER) |
+-----------------------------------------------------------------------+
Эта функция завершена, но ей не хватает документации. Приветствуются пулл-реквесты. :)
Сначала вам, вероятно, захочется установить переменную окружения BACKEND, которая сообщает программному обеспечению, какой тип платы Facedancer вы хотите использовать. Если эта переменная не установлена, программное обеспечение попытается угадать на основе подключённых устройств. Оно не всегда делает лучшие предположения, поэтому вам, вероятно, лучше установить её самостоятельно.
Далее, вероятно, вы захотите ознакомиться с одним из примеров или готовых скриптов. Примеры в новой синтаксисе находятся в папке examples. Основные скрипты Facedancer в "старом" синтаксисе находятся в legacy-applets.
Например:
export BACKEND=greatfet
./examples/rubber-ducky.py
BACKEND=cynthion)BACKEND=greatfet)BACKEND=greatfet)BACKEND=greatfet)BACKEND=goodfet)BACKEND=raspdancer)BACKEND=hydradancer)Обратите внимание, что аппаратные ограничения не позволяют платам MAX3420/MAX3421 эмулировать более сложные устройства — существуют ограничения на количество/тип конечных точек, которые можно настроить. Платам на базе LPC4330, таким как GreatFET, присущи меньшие ограничения.
По аналогичной причине платы MAX3420/MAX3421 (BACKEND=goodfet или BACKEND=raspdancer) в настоящее время не могут использоваться в качестве устройств USBProxy-nv MITM. Все современные платы (BACKEND=greatfet, BACKEND=hydradancer) должны быть полностью функциональны.
Обратите внимание, что платы HydraDancer и HydraUSB3 (BACKEND=hydradancer) в настоящее время не поддерживают режим хоста.
Обратите внимание, что фактический FaceDancer 3.0 не работает в Windows (некоторые проблемы с pyusb...) и только в GNU/Linux.
Дорожная карта находится в разработке, но помимо поддержки нескольких платформ, этот репозиторий в будущем станет домом для ряда крутых новых функций, включая:
Есть много людей, которых можно винить за крутость этого репозитория, в том числе:
... всегда приветствуется. Присылайте пулл-реквесты!