
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
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
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.
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.
Se você quiser construir o seu próprio, você precisa de:
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:
GP0 e GND (pads 1 e 3, veja a imagem abaixo para um exemplo) para ter as mesmas funçõesr (reset) e h (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).
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).
USBH. Esta é para a versão A, mas há uma versão para USB Micro-B também se você preferirAlguns 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: