Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
USBvalve — Expose USB activity on the fly | Kitploit
Outils/GitHubGitHub/cecio/usbvalve
Embedded Systems SecurityDynamic Analysis (Sandboxing)ForensicsMalware AnalysisHardware Security
GitHubcecio/usbvalve

USBvalve

Expose USB activity on the fly

Voir le dépôt
1.3k43il y a 4 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

logo, paysage, texte sombre, fond transparent

[!NOTE] USBvalve version 1.0.0

Une réécriture complète de l'application a été effectuée :

  • abandon de l'environnement Arduino IDE, le code est désormais écrit pour le Pi Pico SDK
  • les dépendances vis-à-vis des bibliothèques externes ont été considérablement réduites
  • la prise en charge hôte USB pour les périphériques Low Speed est désormais plus robuste (ATTiny85, EvilCrow, etc.)
  • le matériel et les fonctionnalités sont presque inchangés, voir les notes ci-dessous pour plus de détails

Exposez l'activité USB à la volée

Les deux modèles La montre 1.2

Je suis sûr que, comme moi, on vous a demandé de brancher votre clé USB sur un appareil inconnu... et puis le doute :

que s'est-il passé avec ma pauvre clé, en coulisses ? Vol de mes fichiers ? Chiffrement ? Ou juste l'installation d'un malware ? Avec USBvalve, vous pouvez le détecter en quelques secondes : construit sur du matériel standard très bon marché, vous pouvez rapidement tester toute activité du système de fichiers USB et comprendre ce qui se passe avant qu'il ne soit trop tard !

Avec USBvalve, vous obtenez un retour immédiat sur ce qui arrive à la clé ; l'écran vous indiquera si le faux système de fichiers intégré à l'appareil est accédé, lu ou écrit :

Autotest Lisez-moi

et depuis la version 0.8.0, vous pouvez également l'utiliser comme hôte USB pour détecter les périphériques BADUSB :

HID

Voici un exemple du débogueur BADUSB disponible sur le port série :

Si vous préférez les vidéos, vous pouvez également consulter ma présentation Insomni'hack

USBvalve Watch

À partir de la version 0.15.0, une nouvelle version Pi Pico Watch est prise en charge. Pour compiler la nouvelle version, vous devez décommenter la ligne #define PIWATCH au début du code. Le matériel est une carte montre avec écran TFT de 1,28 pouce basée sur RP2040. Vous pouvez trouver plus d'informations ici. Elle est également entièrement compatible avec le Waveshare RP2040-LCD-1.28.

Structure du dépôt

docs : documentation sur le projet, avec une présentation où vous pouvez découvrir toutes les fonctionnalités

firmware : firmwares précompilés pour le Raspberry Pi Pico. Vous pouvez simplement les utiliser et les flasher sur la carte. Nous avons plusieurs versions différentes, pour des OLED de 32 ou 64 lignes, pour Pico 1 ou Pico2, Pi Pico Watch, etc.

PCB : fichiers Gerber si vous souhaitez imprimer le PCB personnalisé. Ce n'est pas obligatoire, vous pouvez utiliser le vôtre ou le monter sur une breadboard

src et data : les sources, si vous souhaitez modifier et compiler le firmware vous-même

utils : quelques utilitaires que vous pouvez utiliser pour créer un système de fichiers personnalisé

pictures : images et ressources utilisées dans ce document

STL : fichiers STL pour le boîtier. Dans les dossiers 1.1 et 1.2, il y a des boîtiers complets (merci à WhistleMaster). Dans les dossiers 1.2_64 et 1.2_64_simple, il y a des boîtiers pour l'écran 128x64 (merci à rtmq0227). Si vous voulez quelque chose de plus léger pour protéger l'écran LCD, vous pouvez opter pour USBvalve_sliding_cover.stl.

Construire USBvalve

Liste des pièces

Si vous voulez construire le vôtre, vous avez besoin de :

  • Un Raspberry Pi Pico 1 ou 2 (ou une autre carte basée sur RP2040)
  • un écran OLED I2C 128x64 ou 128x32 (SSD1306)
  • (facultatif) un PCB USBvalve ou une breadboard
  • (facultatif) une entretoise imprimée en 3D pour isoler l'écran de la carte (https://www.thingiverse.com/thing:4748043), mais vous pouvez utiliser à la place un morceau de ruban isolant

Notes sur BOOTSEL et version >= 1.0.0

Dans les versions 0.x.x, BOOTSEL était utilisé pour réinitialiser l'appareil ou afficher le nombre d'événements HID (appui > 2 s). L'interrogation de BOOTSEL créait quelques problèmes à la détection BADUSB, elle a donc été supprimée de la version 1.0.0 et remplacée par les deux options suivantes :

  • souder un bouton entre GP0 et GND (pads 1 et 3, voir la photo ci-dessous pour un exemple) pour avoir les mêmes fonctions
  • utiliser les commandes r (reset) et h (événements HID) depuis le moniteur série

Dans PCB, vous trouverez également une version 1.3 de la carte, avec des trous sur les pads 1 et 3 pour faciliter le montage du bouton. Mais comme vous pouvez le voir, vous pouvez aussi utiliser votre ancienne version.

Si vous n'utilisez pas les fonctions BADUSB ou si vous préférez avoir une couverture de détection moindre mais conserver l'utilisation de BOOTSEL, je fournis également un firmware compilé avec bootsel activé (voir le dossier et les releases).

Instructions de construction

Grâce à Tz1rf, nous avons également deux excellentes vidéos : l'une expliquant le processus de construction étape par étape, et une autre montrant comment téléverser le firmware et utiliser l'outil.

Presque tout le travail est effectué directement sur la carte par le logiciel, vous n'avez donc qu'à organiser la connexion avec l'OLED pour la sortie.

À partir de la version 0.8.0 du firmware, USBvalve peut détecter les périphériques HID (utilisés pour détecter les BADUSB). Cela nécessite un port USB supplémentaire agissant comme hôte. Si cela ne vous intéresse pas, vous pouvez utiliser les anciennes instructions dans le dossier docs et utiliser la version 1.1 du PCB. Sinon, continuez avec la version 1.2 du PCB (nous avons une version pour USB-A ou USB-B, voir le dossier).

Avec le PCB USBvalve

  • souder un port USB femelle dans la zone USBH. Ceci est pour la version A, mais il existe aussi une version pour USB Micro-B si vous préférez
  • placer le Raspberry Pi Pico sur la sérigraphie à l'avant
  • vous n'avez pas besoin de souder toutes les broches. Seulement les suivantes :
    • D4 et D5 (côté gauche)
    • D14 et D15 (côté gauche)
    • GND (côté droit, troisième broche en partant du haut)
    • GND (côté droit, troisième broche en partant du bas)
    • 3v3_OUT (côté droit)
    • VBUS (côté droit)
    • les 3 broches DEBUG en bas : SWCLK, GND et SWDIO
  • placer l'entretoise imprimée en 3D ou un morceau de ruban adhésif sur les parties de l'OLED qui pourraient toucher le Raspberry
  • souder l'OLED (avec un connecteur) sur l'espace à 4 broches

Certains OLED ont les broches GND et VCC inversées, j'ai donc conçu le PCB pour être compatible avec les deux versions :

Par exemple, si votre OLED a GND sur PIN1 et VCC sur PIN2 comme ceci :

Vous devez placer un point de soudure sur ces deux pads à l'arrière du PCB :

Sinon, vous devez faire l'inverse et placer la soudure sur les autres PADs :

Sans le PCB USBvalve

Pico Pi

Si vous utilisez une breadboard ou simplement des câbles, tout ce que vous avez à faire est de vous assurer de connecter les bonnes broches à l'écran OLED et au port hôte USB.

Le câblage est le suivant :

  • PIN6 du Pi --> SDA de l'OLED
  • PIN7 du Pi --> SCL de l'OLED
  • PIN19 du Pi --> D+ de l'hôte USB
  • PIN20 du Pi --> D- de l'hôte USB
  • PIN23 (GND) du Pi --> GND de l'hôte USB
  • PIN38 (GND) du Pi --> GND de l'OLED
  • PIN36 (3V3OUT) du Pi --> VCC de l'OLED
  • PIN40 (VBUS) du Pi --> VCC de l'hôte USB

Si vous voulez utiliser les fonctions DEBUG, vous pouvez également placer un connecteur sur les 3 broches SWD en bas de la carte.

Avec le PCB USBpipe

[!CAUTION] Ce PCB est destiné aux makers électroniques expérimentés NE L'UTILISEZ PAS SI VOUS N'ÊTES PAS SÛR DE POUVOIR LE MANIPULER !

[!NOTE] R7 et R8 ne sont en réalité connectés à rien. Ils sont ajoutés à des fins de débogage du circuit. Ils n'apparaissent donc pas dans la nomenclature (BOM)

PCB USBpipe USBpipe

USBpipe est un PCB dédié à ce projet.

Vous trouverez tout ce dont vous avez besoin dans le dossier ./PCB/USBpipe/.

Avant Arrière

Flasher le firmware

Pour flasher le firmware, suivez ces étapes :

  • Connectez le Raspberry Pi Pico avec le câble USB, en maintenant le bouton BOOTSEL enfoncé (le grand bouton blanc sur la carte)
  • relâchez le bouton
  • vous verrez un nouveau lecteur sur le système, nommé RPI-RP2 (sous Linux, vous devrez peut-être le monter manuellement)
  • copiez le fichier firmware approprié (avec l'extension uf2) dans le dossier, selon l'OLED que vous utilisez
  • attendez quelques secondes jusqu'à ce que le dossier monté disparaisse

C'est terminé !

Anti-Détection

Je ne sais pas si cela arrivera un jour, mais vous voudrez peut-être personnaliser le firmware afin d'éviter la détection par des malwares conscients d'USBvalve :-)

J'ai regroupé la plupart des variables que vous voudrez peut-être modifier dans cette section de usb_config.h (voir le Dockerfile ci-dessous pour la recompilation)

root@kitploit:~
// USB anti-detection settings
//
// Set USB IDs strings and numbers, to avoid possible detections.
// Remember that you can cusotmize FAKE_DISK_BLOCK_NUM as well
// for the same reason. Also DISK_LABEL in ramdisk.h can be changed.
//
// You can see here for inspiration: https://the-sz.com/products/usbid/
//
// Example:
//             0x0951 0x16D5    VENDORID_STR: Kingston   PRODUCTID_STR: DataTraveler
//
#define USB_VENDORID       0x0951
#define USB_PRODUCTID      0x16D5
#define USB_DESCRIPTOR     "DataTraveler"
#define USB_MANUF          "Kingston"
#define USB_SERIAL         "123456789A"
#define USB_VENDORID_STR   "Kingston"        // Up to 8 chars
#define USB_PRODUCTID_STR  "DataTraveler"    // Up to 16 chars
#define USB_VERSION_STR    "1.0"             // Up to 4 chars

Compiler votre firmware

Bien évidemment, vous pouvez aussi compiler votre propre firmware. Pour compiler, vous avez besoin du Raspberry Pi Pico SDK et de ce dépôt.

Instructions de base pour la recompilation :

root@kitploit:~
export PICO_SDK_PATH=</path/to/pico-sdk>

git clone --recursive https://github.com/cecio/USBvalve.git
cd USBvalve
mkdir build && cd build
cmake -DPICO_BOARD=pico ..   # or pico2 for standard build
make -j$(nproc)
# Output: build/src/USBvalve.uf2

Si vous voulez recréer un nouveau système de fichiers factice, vous pouvez jeter un œil au dossier utils, où j'ai placé quelques utilitaires pour en construire un nouveau.

Dockerfile

Si vous voulez compiler votre propre firmware, après l'avoir personnalisé, je fournis un Dockerfile qui construit un environnement de compilation complet et compile le firmware.

Saisissez les commandes suivantes dans le dossier principal USBvalve pour compiler :

root@kitploit:~
# To Build:
#       docker build -t usbvalve-sdk -f Dockerfile.sdk .
#
# To Run (default: pico, SSD1306 OLED 128x32):
#       docker run --rm -v $PWD:/mnt usbvalve-sdk
#
# Options (via environment variables):
#       BOARD=pico|pico2          Board target (default: pico)
#       OLED_HEIGHT=32|64         OLED display height (default: 32)
#       PIWATCH=1                 Use GC9A01 round TFT instead of SSD1306
#       USE_BOOTSEL=1             Enable BOOTSEL button (disrupts Low Speed USB)
#
# Examples:
#       docker run --rm -e BOARD=pico2 -v $PWD:/mnt usbvalve-sdk
#       docker run --rm -e PIWATCH=1 -v $PWD:/mnt usbvalve-sdk
#       docker run --rm -e BOARD=pico2 -e OLED_HEIGHT=64 -v $PWD:/mnt usbvalve-sdk

Le firmware sera placé avec l'extension uf2 dans le dossier USBvalve_out.

Contribuer

Si vous avez des idées ou des améliorations en tête, je vous encourage à ouvrir une issue afin que nous puissions améliorer le projet ensemble ! Merci !

Support

Si vous avez une question ou besoin d'aide, vous pouvez ouvrir une Issue ici ou me contacter sur Twitter/X @red5heep

Versions communautaires

La communauté a créé quelques forks implémentant la prise en charge d'autres cartes, ou d'autres modifications. Merci à tous ceux qui ont contribué au développement d'USBvalve. Voici ci-dessous une liste non officielle/incomplète/non supportée :

  • USBvalve-tbfa-Mod

AVERTISSEMENT DE SÉCURITÉ

[!WARNING] J'ai reçu beaucoup de questions sur USBvalve et les USB killer devices. USBvalve n'est pas conçu pour tester ces dispositifs, il ne dispose d'aucune sorte d'isolation ou de protection. Par conséquent, si vous pensez avoir affaire à l'un de ces dispositifs, testez-le avec autre chose, PAS avec USBvalve, sinon vous risquez d'endommager l'appareil, vous-même ou les objets à proximité.

Télécharger l’outil