
USBvalve v1.0.1
Exponha a atividade USB em tempo real
[!NOTE] USBvalve Versão 1.0.0
Uma reescrita completa da aplicação foi feita:
- abandonado o ambiente Arduino IDE, agora o código é escrito para o Pi Pico SDK
- as dependências de bibliotecas externas foram bastante reduzidas
- o suporte a USB host para dispositivos Low Speed é agora mais robusto (ATTiny85, EvilCrow, etc)
- o hardware e as funcionalidades estão quase inalterados, veja as notas abaixo para detalhes
Exponha a atividade USB em tempo real
Tenho certeza que, como eu, você já foi solicitado a colocar seu pendrive USB em um dispositivo desconhecido...e então a dúvida:
o que aconteceu com meu pobre dongle, nos bastidores? Roubando meus arquivos? Criptografando-os? Ou apenas instalando um malware? Com o USBvalve você pode descobrir isso em segundos: construído com hardware super barato de prateleira, você pode testar rapidamente qualquer atividade de sistema de arquivos USB e entender o que está acontecendo antes que seja tarde demais!
Com o USBvalve você pode ter um feedback imediato sobre o que acontece com o drive; a tela mostrará se o sistema de arquivos falso construído no dispositivo é acessado, lido ou escrito:
e a partir da versão 0.8.0 você também pode usá-lo como USB Host para detectar dispositivos BADUSB:
Este é um exemplo do depurador BADUSB disponível na porta serial:
Se você prefere vídeos, também pode dar uma olhada na minha Apresentação no Insomni'hack
USBvalve Watch
A partir da versão 0.15.0 uma nova versão Pi Pico Watch é suportada. Para compilar a nova versão você deve descomentar a linha #define PIWATCH no início do código. O hardware é uma placa de relógio com display TFT de 1,28 polegadas baseada em RP2040. Você pode encontrar mais informações aqui.
Isto também é totalmente compatível com o Waveshare RP2040-LCD-1.28.
Estrutura do Repositório
docs: documentação sobre o projeto, com uma apresentação onde você pode ver todas as funcionalidades
firmware: firmwares pré-compilados para o Raspberry Pi Pico. Você pode simplesmente usá-los e gravá-los na placa. Temos várias versões diferentes, para OLEDs de 32 ou 64 linhas, para Pico 1 ou Pico2, Pi Pico Watch, etc
PCB: arquivo Gerber se você quiser imprimir a PCB personalizada. Não é obrigatório, você pode usar a sua própria ou montar em uma protoboard
src e data: códigos-fonte, se você quiser modificar e compilar o firmware por conta própria
utils: alguns utilitários que você pode usar para construir um FS personalizado
pictures: imagens e recursos usados neste documento
STL: arquivos STL para a carcaça. Nas pastas 1.1 e 1.2 há carcaças completas (graças a WhistleMaster). Nas pastas 1.2_64 e 1.2_64_simple há carcaças para a tela 128x64 (graças a rtmq0227). Se você quiser algo mais leve para proteger o LCD, você pode usar o USBvalve_sliding_cover.stl.
Construir o USBvalve
Lista de peças
Se você quiser construir o seu próprio, você precisa de:
- Um Raspberry Pi Pico 1 ou 2 (ou outra placa baseada em RP2040)
- uma tela OLED I2C 128x64 ou 128x32 (SSD1306)
- (opcional) uma PCB do USBvalve ou uma protoboard
- (opcional) um espaçador impresso em 3D para isolar a tela da placa (https://www.thingiverse.com/thing:4748043), mas você pode usar um pedaço de fita isolante no lugar
Notas sobre BOOTSEL e versão >= 1.0.0
Nas versões 0.x.x, o BOOTSEL era usado para reiniciar o dispositivo ou imprimir o número de eventos HID (pressione > 2s).
A leitura do BOOTSEL estava criando alguns problemas para a detecção de BADUSB, então isso foi removido a partir da versão 1.0.0 e substituído pelas duas opções a seguir:
- solde um botão entre
GP0eGND(pads 1 e 3, veja a imagem abaixo para um exemplo) para ter as mesmas funções - use os comandos
r(reset) eh(eventos HID) do monitor serial
Em PCB você também encontrará uma versão 1.3 da placa, com alguns furos nos pads 1 e 3 para facilitar a montagem do botão. Mas como você pode ver, você também pode usar sua versão antiga.
Se você não está usando as funções BADUSB ou se prefere ter menos cobertura na detecção mas manter o uso do BOOTSEL, também estou fornecendo um firmware criado com o bootsel habilitado (veja a pasta e as releases).
Instruções de construção
Graças a Tz1rf também temos dois ótimos vídeos: um explicando o processo de construção passo a passo, e outro mostrando como enviar o firmware e usar a ferramenta.
Quase todo o trabalho é feito diretamente na placa pelo software, então você só precisa organizar a conexão com o OLED para a saída.
A partir da versão 0.8.0 do firmware, o USBvalve pode detectar dispositivos HID (usado para detectar BADUSB). Isso requer uma porta USB adicional atuando como Host. Se você não está interessado nisso, você pode usar as instruções antigas na pasta docs e usar a versão 1.1 da PCB. Caso contrário, prossiga com a versão 1.2 da PCB (temos versão para USB-A ou USB-B, veja a pasta).
Com a PCB do USBvalve
- solde uma porta USB fêmea na área
USBH. Esta é para a versãoA, mas há uma versão para USBMicro-Btambém se você preferir - coloque o Raspberry Pi Pico sobre a serigrafia na frente
- você não precisa soldar todos os PINs. Apenas os seguintes:
- D4 e D5 (lado esquerdo)
- D14 e D15 (lado esquerdo)
- GND (lado direito, terceiro pino de cima)
- GND (lado direito, terceiro pino de baixo)
- 3v3_OUT (lado direito)
- VBUS (lado direito)
- os 3 pinos DEBUG na parte inferior: SWCLK, GND e SWDIO
- coloque o espaçador impresso em 3D ou um pedaço de fita nas partes do OLED que possam tocar o Raspberry
- solde o OLED (com um header) no espaço de 4 PINs
Alguns dos OLEDs têm os PINs GND e VCC trocados, então eu construí a PCB para ser compatível com ambas as versões:
