
Отслеживайте активность USB на лету

[!NOTE] USBvalve версии 1.0.0
Была выполнена полная переработка приложения:
- отказ от среды Arduino IDE, теперь код написан для Pi Pico SDK
- зависимости от внешних библиотек значительно сокращены
- поддержка USB-хоста для Low Speed устройств теперь более надёжна (ATTiny85, EvilCrow и т.д.)
- аппаратное обеспечение и функциональность почти не изменились, подробности см. в примечаниях ниже
Я уверен, что вас, как и меня, просили вставить вашу USB-флешку в неизвестное устройство... и затем возникало сомнение:
что произошло с моим бедным донглом за кулисами? Кража моих файлов? Шифрование? Или просто установка вредоносного ПО? С USBvalve вы можете выявить это за секунды: построенный на сверхдешёвом готовом оборудовании, он позволяет быстро протестировать любую активность USB-файловой системы и понять, что происходит, прежде чем станет слишком поздно!
С USBvalve вы можете получить мгновенную обратную связь о том, что происходит с флешкой; экран покажет вам, осуществляется ли доступ, чтение или запись поддельной файловой системы, созданной на устройстве:
а начиная с версии 0.8.0 вы также можете использовать его как USB-хост для обнаружения BADUSB устройств:
Это пример отладчика BADUSB, доступного через последовательный порт:
Если вы предпочитаете видео, вы также можете посмотреть мою презентацию на Insomni'hack
Начиная с версии 0.15.0 поддерживается новая версия Pi Pico Watch. Чтобы скомпилировать новую версию, вам нужно раскомментировать строку #define PIWATCH в начале кода. Аппаратное обеспечение — это плата часов с 1,28-дюймовым TFT-дисплеем на базе RP2040. Дополнительную информацию можно найти здесь.
Это также полностью совместимо с Waveshare RP2040-LCD-1.28.
docs: документация по проекту, включая презентацию, где вы можете ознакомиться со всеми функциями
firmware: готовые прошивки для Raspberry Pi Pico. Вы можете просто использовать их и прошить плату. У нас есть несколько различных версий: для 32 или 64 строк OLED, для Pico 1 или Pico2, Pi Pico Watch и т.д.
PCB: файл Gerber, если вы хотите напечатать кастомную печатную плату. Это не обязательно, вы можете использовать свою собственную или собрать на макетной плате
src и data: исходники, если вы хотите изменить и собрать прошивку самостоятельно
utils: некоторые утилиты, которые могут пригодиться для создания кастомной файловой системы
pictures: изображения и ресурсы, используемые в этом документе
STL: STL-файлы для корпуса. В папках 1.1 и 1.2 находятся полные корпуса (спасибо WhistleMaster). В папках 1.2_64 и 1.2_64_simple находятся корпуса для экрана 128x64 (спасибо rtmq0227). Если вы хотите что-то более лёгкое для защиты LCD, вы можете использовать USBvalve_sliding_cover.stl.
Если вы хотите собрать свой собственный, вам понадобится:
В версиях 0.x.x BOOTSEL использовался для сброса устройства или вывода количества HID-событий (нажатие > 2 с).
Опрос BOOTSEL создавал некоторые проблемы для обнаружения BADUSB, поэтому это было удалено из версии 1.0.0 и заменено следующими двумя опциями:
GP0 и GND (контакты 1 и 3, пример см. на фото ниже), чтобы получить те же функцииr (сброс) и h (HID-события) из монитора последовательного порта
В папке PCB вы также найдёте версию платы 1.3 с отверстиями на контактах 1 и 3 для облегчения монтажа кнопки. Но, как видите, вы также можете использовать свою старую версию.
Если вы не используете функции BADUSB или предпочитаете меньшее покрытие обнаружения, но хотите сохранить использование BOOTSEL, я также предоставляю прошивку, созданную с включённым bootsel (см. папку и релизы).
Благодаря Tz1rf у нас также есть два отличных видео: одно пошагово объясняет процесс сборки, а другое показывает, как загрузить прошивку и использовать инструмент.
Почти вся работа выполняется непосредственно на плате программным обеспечением, поэтому вам нужно только организовать подключение к OLED для вывода.
Начиная с версии прошивки 0.8.0, USBvalve может обнаруживать HID-устройства (используется для обнаружения BADUSB). Для этого требуется дополнительный USB-порт, работающий как хост. Если вас это не интересует, вы можете использовать старые инструкции в папке docs и использовать версию платы 1.1. В противном случае используйте версию платы 1.2 (у нас есть версии для USB-A или USB-B, см. папку).
USBH. Это для версии A, но есть также версия для USB Micro-B, если предпочитаетеУ некоторых OLED-экранов контакты GND и VCC поменяны местами, поэтому я спроектировал плату совместимой с обеими версиями: