Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
USBvalve — Espone l'attività USB al volo | Kitploit
Strumenti/GitHubGitHub/cecio/usbvalve
Sicurezza Sistemi EmbeddedAnalisi Dinamica (Sandboxing)Informatica ForenseAnalisi MalwareSicurezza Hardware
GitHubcecio/usbvalve

USBvalve

Espone l'attività USB al volo

Vedi Repository
1.3k436316 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
<h1><img width="300" alt="logo, landscape, dark text, transparent background" src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/USBvalve_logo_scaled.png"></a></h1>

> [!NOTE]
> **USBvalve Versione 1.0.0**
>
> È stata fatta una riscrittura completa dell'applicazione:
> - abbandonato l'ambiente Arduino IDE, ora il codice è scritto per il [Pi Pico SDK](https://github.com/raspberrypi/pico-sdk)
> - le dipendenze da librerie esterne sono state ridotte molto
> - il supporto USB host per dispositivi Low Speed è ora più robusto (ATTiny85, EvilCrow, ecc.)
> -  hardware e funzionalità sono quasi invariati, vedi le [note](https://github.com/cecio/USBvalve#notes-about-bootsel-and-version--100) sotto per i dettagli 

### *Esponi l'attività USB al volo*

<p float="left">
<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/versions.png" alt="The two models" width="30%" height="30%" />
<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/USBvalve_PIWATCH.png" alt="The Watch" width="26%" height="26%" />
<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/version1_2.png" alt="1.2" width="26%" height="26%" />
</p>

Sono sicuro che, come me, ti è stato chiesto di inserire la tua chiavetta USB in un dispositivo *sconosciuto*...e poi il dubbio: 

cosa è successo alla mia povera chiavetta, dietro le quinte? Sta rubando i miei file? Li sta cifrando? O *semplicemente* installando un malware? Con **USBvalve** puoi scoprirlo in pochi secondi: costruito su hardware super economico disponibile in commercio, puoi testare rapidamente qualsiasi attività del file system USB e capire cosa sta succedendo prima che sia troppo tardi!

Con **USBvalve** puoi avere un feedback immediato su cosa succede alla chiavetta; lo schermo ti mostrerà se il *finto* file system costruito sul dispositivo viene acceduto, letto o scritto:

<p float="left">
<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/selftest.png" alt="Selftest" width="15%" height="15%" />
<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/readme.png" alt="Readme" width="15%" height="15%" />
</p>

e dalla versione `0.8.0` puoi anche usarlo come USB Host per rilevare dispositivi *BADUSB*:

<p float="left">
<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/hid.png" alt="HID" width="15%" height="15%" />
</p>

Questo è un esempio del debugger *BADUSB* disponibile sulla porta seriale:

<p float="left">
<a href="https://asciinema.org/a/NWfC9Mvzzpj3eZfsC7s5Dz1sJ" target="_blank"><img src="https://asciinema.org/a/NWfC9Mvzzpj3eZfsC7s5Dz1sJ.svg" width="65%" height="65%" /></a>
</p>

Se preferisci i video, puoi anche dare un'occhiata alla mia [Presentazione a Insomni'hack](https://www.youtube.com/watch?v=jy1filtQY4w)

## USBvalve Watch

A partire dalla versione `0.15.0` è supportata una nuova versione *Pi Pico Watch*. Per compilare la nuova versione devi decommentare la riga `#define PIWATCH` all'inizio del codice. L'hardware è una scheda orologio con display TFT da 1,28 pollici basata su RP2040. Puoi trovare maggiori informazioni [qui](https://www.raspberrypi.com/news/how-to-build-your-own-raspberry-pi-watch/).
Questo è anche completamente compatibile con il [Waveshare RP2040-LCD-1.28](https://www.waveshare.com/wiki/RP2040-LCD-1.28).

## Struttura del Repository

`docs`: documentazione sul progetto, con una presentazione dove puoi dare un'occhiata a tutte le funzionalità

`firmware`: firmware precompilati per il Raspberry Pi Pico. Puoi semplicemente usarli e flasharli sulla scheda. Abbiamo diverse versioni differenti, per OLED da 32 o 64 righe, per Pico 1 o Pico2, Pi Pico Watch, ecc.

`PCB`: file Gerber se vuoi stampare il PCB personalizzato. Non è obbligatorio, puoi usare il tuo o costruirlo su una breadboard

`src` e `data`: sorgenti, se vuoi modificare e compilare il firmware da solo

`utils`: alcune utilità che potresti usare per costruire un FS personalizzato

`pictures`: immagini e risorse usate in questo documento

`STL`: file STL per l'involucro. Nelle cartelle `1.1` e `1.2` ci sono involucri completi (grazie a [WhistleMaster](https://github.com/WhistleMaster)). Nelle cartelle `1.2_64` e `1.2_64_simple` ci sono involucri per lo schermo 128x64 (grazie a [rtmq0227](https://github.com/rtmq0227)). Se vuoi qualcosa di più leggero per proteggere l'LCD puoi usare `USBvalve_sliding_cover.stl`.

## Costruire USBvalve

### Lista dei componenti

Se vuoi costruire il tuo, hai bisogno di:

- Un Raspberry Pi Pico 1 o 2 (o un'altra scheda basata su RP2040)
- uno schermo OLED I2C 128x64 o 128x32 (**SSD1306**)
- (opzionale) un PCB **USBvalve** o una breadboard
- (opzionale) uno spaziatore stampato in 3D per isolare lo schermo dalla scheda (https://www.thingiverse.com/thing:4748043), ma puoi usare un pezzo di nastro isolante invece

### Note su BOOTSEL e versione >= 1.0.0

Nelle versioni `0.x.x`, BOOTSEL era usato per resettare il dispositivo o stampare il numero di eventi HID (premere > 2s).
Il polling di BOOTSEL creava alcuni problemi al rilevamento *BADUSB* quindi è stato rimosso dalla versione `1.0.0` e sostituito con le seguenti due opzioni:
- saldare un pulsante tra `GP0` e `GND` (pad 1 e 3, vedi foto sotto per un esempio) per avere le stesse funzioni
- usare i comandi `r` (reset) e `h` (eventi HID) dal monitor seriale

<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/reset_button.jpg" width="35%" height="35%" />

In `PCB` troverai anche una versione `1.3` della scheda, con alcuni fori sui pad 1 e 3 per facilitare il montaggio del pulsante. Ma come puoi vedere, puoi anche usare la tua vecchia versione.

Se non stai usando le funzioni *BADUSB* o se preferisci avere meno copertura sul rilevamento ma mantenere l'uso di BOOTSEL, fornisco anche un firmware creato con *bootsel* abilitato (vedi cartella e release).


### Istruzioni di costruzione

> Grazie a [Tz1rf](https://github.com/Tz1rf) abbiamo anche due ottimi video: uno che spiega il processo di [costruzione](https://youtu.be/7ymk8hD7-Hc) passo dopo passo, e un altro che mostra come [caricare il firmware](https://youtu.be/Tp8xvrlqxUY) e usare lo strumento.

Quasi tutto il lavoro è fatto direttamente sulla scheda dal software, quindi devi solo predisporre la connessione con l'OLED per l'output.

A partire dalla versione 0.8.0 del firmware, **USBvalve** può rilevare dispositivi HID (usato per rilevare *BADUSB*). Questo richiede una porta USB aggiuntiva che funga da Host. Se non sei interessato a questo, puoi usare le vecchie istruzioni [nella cartella docs](https://github.com/cecio/USBvalve/blob/main/docs/BUILDING-1.1.md) e usare la versione PCB `1.1`. Altrimenti procedi con la versione PCB `1.2` (abbiamo versioni per USB-A o USB-B, vedi cartella).

#### Con PCB USBvalve

<p float="left">
  <img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/USB_valve_1-2_front.png" width="25%" height="25%" />
  <img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/USB_valve_1-2_back.png" width="24%" height="24%" /> 
</p>


- salda una porta USB femmina nell'area `USBH`. Questa è per la versione `A`, ma c'è anche una versione per USB `Micro-B` se preferisci
- posiziona il Raspberry Pi Pico sulla serigrafia sul fronte 
- non hai bisogno di saldare tutti i PIN. Solo i seguenti:
  - D4 e D5 (lato sinistro)
  - D14 e D15 (lato sinistro)
  - GND (lato destro, terzo pin dall'alto)
  - GND (lato destro, terzo pin dal basso)
  - 3v3_OUT (lato destro)
  - VBUS (lato destro)
  - i 3 pin DEBUG sul fondo: SWCLK, GND e SWDIO
- posiziona lo spaziatore stampato in 3D o un pezzo di nastro sulle parti dell'OLED che potrebbero toccare il Raspberry
- salda l'OLED (con un header) sullo spazio a 4 PIN

Alcuni degli OLED hanno i PIN GND e VCC scambiati, quindi ho costruito il PCB per essere compatibile con entrambe le versioni: 

Per esempio se il tuo OLED ha GND sul PIN1 e VCC sul PIN2 come questo:

<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/usb_valve_oled.png" width="35%" height="35%" />

Devi mettere una goccia di stagno su questi due pad sul retro del PCB:

<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/usb_valve_pads.png" width="15%" height="15%" />

Altrimenti dovresti fare l'opposto e mettere lo stagno sugli altri PAD:

<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/usb_valve_pads_2.png" width="15%" height="15%" />

#### Senza PCB USBvalve

<img src="https://raw.githubusercontent.com/cecio/USBvalve/main/pictures/pico-pinout.svg" alt="Pico Pi" width="85%" height="85%" />

Se stai usando una breadboard o solo dei fili, tutto quello che devi fare è assicurarti di collegare i PIN corretti allo schermo OLED e alla porta USB Host.

La mappatura è la seguente:

- PIN6 del Pi --> OLED SDA
- PIN7 del Pi --> OLED SCL 
- PIN19 del Pi --> D+ dell'USB Host
- PIN20 del Pi --> D- dell'USB Host
- PIN23 (GND) del Pi --> GND dell'USB Host
- PIN38 (GND) del Pi --> OLED GND
- PIN36 (3V3OUT) del Pi --> OLED VCC
- PIN40 (VBUS) del Pi --> VCC dell'USB Host

Se vuoi usare le funzioni DEBUG, puoi anche posizionare un header sui 3 PIN SWD sul fondo della scheda.

#### Con PCB USBpipe

> [!CAUTION]
> Questo PCB è per maker elettronici esperti
> **NON USARLO SE NON SEI SICURO DI SAPERLO GESTIRE!**

> [!NOTE]
> R7 e R8 non sono effettivamente collegati a nulla. Sono aggiunti per scopi di debug del circuito.
> Quindi non compaiono nella BOM

<img src="https://assets.kitploit.com/production/public/readmes/48341/248d33e236b13cc7c59905288ca1e06ae7a0ff36a3b7e99d2f66c4b27e5ab2bf.jpg" alt="USBpipe PCB" width="15%" height="15%"/>

<img src="https://assets.kitploit.com/production/public/readmes/48341/0159e8d6a4d68b6edcad459a6ebfcdce0f5787f2bca0ea5f06c6b3538baf75a2.jpg" alt="USBpipe" width="15%" height="15%"/>

[USBpipe](https://github.com/LiPolymer/smartUSBPipe) è un PCB dedicato per questo progetto.

Puoi trovare tutto ciò che ti serve nella cartella `./PCB/USBpipe/`.

<img src="https://assets.kitploit.com/production/public/readmes/48341/39c4a838734e4710cfe68529931961f387b1723654d5a4d3b1243d05925aa765.png" alt="Front" width="20%" height="20%"/>

<img src="https://assets.kitploit.com/production/public/readmes/48341/b34c6e01b06808aa0c21f17086d864b4b02fe4b4b453374d2840ae914aa524d6.png" alt="Back" width="20%" height="20%"/>

### Flash del Firmware

Per flashare il firmware, segui questi passaggi:

- Collega il Raspberry Pi Pico con il cavo USB, tenendo premuto il pulsante *BOOTSEL* (il grande pulsante bianco sulla scheda)
- rilascia il pulsante
- vedrai una nuova unità sul sistema, chiamata `RPI-RP2` (in ambienti Linux potresti doverla montare manualmente)
- copia il file firmware appropriato (con estensione `uf2`) nella cartella, a seconda dell'OLED che hai usato
- attendi qualche secondo finché la cartella montata non scompare

Fatto!

### Anti-Rilevamento

Non so se sarà mai il caso, ma potresti voler personalizzare il firmware per evitare il rilevamento fatto da malware *consapevoli di USBvalve* :-)

Ho raggruppato la maggior parte delle variabili che potresti voler modificare in questa sezione di `usb_config.h` ([vedi il Dockerfile sotto per ricompilare](https://github.com/cecio/USBvalve#dockerfile))

```C
// 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/
//
#define USB_VENDORID       0xCAFE
#define USB_PRODUCTID      0x1337
#define USB_DESCRIPTOR     "DataStore"
#define USB_MANUF          "USB Acme"
#define USB_SERIAL         "123456789A"
#define USB_VENDORID_STR   "Acme"            // Up to 8 chars
#define USB_PRODUCTID_STR  "DataStore"       // Up to 16 chars
#define USB_VERSION_STR    "1.0"             // Up to 4 chars
```


### Compilare il tuo firmware

Ovviamente puoi anche compilare il tuo firmware. Per compilare hai bisogno del *Raspberry Pi Pico SDK* e di questo repository.

Istruzioni di base per la ricompilazione:
```
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
```

Se vuoi ricreare un nuovo file system finto, potresti voler dare un'occhiata alla cartella `utils`, dove ho messo alcune utilità per costruirne uno nuovo.

#### Dockerfile

Se vuoi compilare il tuo firmware, dopo averlo personalizzato, fornisco un `Dockerfile` che costruisce un ambiente di compilazione completo e compila il firmware. 

Inserisci i seguenti comandi nella cartella principale `USBvalve` per compilare:

```
# 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
```

Il firmware sarà posizionato con estensione `uf2` nella cartella `USBvalve_out`.

### Contribuire

Se hai idee o miglioramenti in mente, ti incoraggio ad aprire una issue così possiamo migliorare il progetto insieme! Grazie!

### Supporto

Se hai domande o hai bisogno di supporto puoi aprire una `Issue` qui o contattarmi su Twitter/X [@red5heep](https://twitter.com/red5heep)

### Versioni della community

La Community ha creato alcuni fork che implementano il supporto per altre schede, o altre modifiche. **Grazie a tutti** coloro che hanno contribuito allo sviluppo di **USBvalve**.
Qui sotto una lista non ufficiale/incompleta/non supportata:
- [USBvalve-tbfa-Mod](https://github.com/TryBreakFixAgain/USBvalve-tbfa-Mod)

## AVVISO DI SICUREZZA

> [!WARNING]
> Ho ricevuto molte domande su **USBvalve** e sui *dispositivi USB killer*. **USBvalve** non è costruito per testare questi dispositivi, non ha alcun tipo di isolamento o protezione, quindi se hai il sospetto di avere a che fare con uno di questi dispositivi, testalo con qualcos'altro, NON con **USBvalve** o potresti danneggiare il dispositivo, te stesso o oggetti vicini a te.
Scarica lo strumento