
USBvalve v1.0.1
Espone l'attività USB al volo
[!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
- 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 sotto per i dettagli
Esponi l'attività USB al volo
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:
e dalla versione 0.8.0 puoi anche usarlo come USB Host per rilevare dispositivi BADUSB:
Questo è un esempio del debugger BADUSB disponibile sulla porta seriale:
Se preferisci i video, puoi anche dare un'occhiata alla mia Presentazione a Insomni'hack
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.
Questo è anche completamente compatibile con il Waveshare 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). Nelle cartelle 1.2_64 e 1.2_64_simple ci sono involucri per lo schermo 128x64 (grazie a 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
GP0eGND(pad 1 e 3, vedi foto sotto per un esempio) per avere le stesse funzioni - usare i comandi
r(reset) eh(eventi HID) dal monitor seriale
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 abbiamo anche due ottimi video: uno che spiega il processo di costruzione passo dopo passo, e un altro che mostra come caricare il firmware 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 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
- salda una porta USB femmina nell'area
USBH. Questa è per la versioneA, ma c'è anche una versione per USBMicro-Bse 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:
