Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
pico-usb-wifi — Firmware para Raspberry Pi Pico W que cria um adaptador Wi-Fi USB sem driver, com bridging transparente de camada 2, autenticação WPA2/WPA3 e console de gerenciamento fora de banda. | Kitploit
Ferramentas/GitLabGitLab/baiyibai/pico-usb-wifi
Segurança de Sistemas EmbarcadosFerramentas de Criptografia/DescriptografiaDepuradoresSegurança de RedeSegurança Sem FioSegurança de HardwareAutenticaçãoAnálise de Firmware
GitLabbaiyibai/pico-usb-wifi

pico-usb-wifi

Firmware para Raspberry Pi Pico W que cria um adaptador Wi-Fi USB sem driver, com bridging transparente de camada 2, autenticação WPA2/WPA3 e console de gerenciamento fora de banda.

45420há 3 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório

= pico-usb-wifi :toc: macro :toclevels: 3 :idprefix: :idseparator: -

pico-usb-wifi é um firmware para o Raspberry Pi Pico W que o transforma em um adaptador Wi-Fi USB sem driver, enumerando-se como um dispositivo USB CDC-NCM.

:figure-caption: IA Generativa

.Diagrama do pico-usb-wifi image::images/openrouter-banana2-rpi-pico.png[]

O firmware funciona como uma ponte transparente de camada 2 que encaminha quadros entre a interface sem fio do Pico W e sua interface USB. A interface USB do host adota o endereço MAC da estação Wi-Fi do Pico W, o que fornece uma identidade MAC e IP de ponta a ponta.

Nenhum driver, módulo de kernel ou pilha sem fio do lado do host é necessário; consulte <<no-host-side-wi-fi-stack,Nenhuma Pilha Wi-Fi do Lado do Host>>. O host precisa apenas dos drivers cdc_ncm e cdc_acm que já vêm integrados em todo Linux, macOS, Windows e sistemas operacionais móveis modernos.

== Funcionalidades

O pico-usb-wifi oferece estas funcionalidades:

  • Ponte Transparente de Camada 2 entre as interfaces sem fio e USB do Pico W
  • USB CDC-NCM
  • IPv4 e IPv6 sem NAT, sem sub-rede privada e sem redirecionamento de portas para configurar
  • Consoles de gerenciamento e depuração fora da banda via serial CDC-ACM; consulte <<management-console,Console de Gerenciamento>> e <<debug-console,Console de Depuração>>.
  • Autenticação WPA2-PSK e WPA3-SAE (e redes abertas)
  • Taxa de transferência média de 4,75 Mbits/s

.Uma Situação do Mundo Real image::images/slop_2.png[]

== Por Que Isso Existe

Eu precisava de um adaptador Wi-Fi USB para usar em um projeto Linux embarcado futuro. Eu não tinha um dongle Wi-Fi USB barato, então, em vez de ir comprar um em uma loja física por cinco dólares, passei dois dias de um fim de semana prolongado de feriado e cerca de um milhão de tokens do Claude Code construindo este firmware.

白一百, Autor do pico-usb-wifi

O Google disse que não era viável:

.pico-usb-wifi "Não Viável" image::images/gemini_says_not_possible.png[]

toc::[]

== Nenhuma Pilha Wi-Fi do Lado do Host

Ao contrário de um dongle Wi-Fi USB, este adaptador expõe apenas uma interface semelhante a Ethernet para o host. O Pico W contém todo o lado sem fio: o rádio, a associação, o supplicant WPA2/WPA3 e o domínio regulatório.

Isso permite que os sistemas evitem instalar wpa_supplicant, a pilha sem fio cfg80211/mac80211, um banco de dados regulatório e firmware de chipset ou driver de fornecedor. O provisionamento das credenciais Wi-Fi ocorre no dispositivo, por meio de seu console de gerenciamento fora da banda, não por qualquer ferramenta sem fio do lado do host. Isso mantém um host restrito ou eletrodoméstico, ou um sem drivers sem fio, ou cujo kernel do fornecedor não os possui, com a capacidade de se conectar a redes sem fio usando apenas drivers de classe CDC universais.

== Como Funciona

[#fig-topology] .Diagrama de Topologia image::images/topology.svg[Topologia de ponte transparente de camada 2,820]

A interface USB do host recebe o endereço MAC da estação Wi-Fi do Pico W, de modo que existe um único MAC de ponta a ponta e o Pico W pode encaminhar quadros Ethernet literalmente entre USB e Wi-Fi. Uma estação Wi-Fi não pode fazer ponte com vários endereços MAC, portanto, colapsar o host e a estação em um único MAC é o que torna uma ponte transparente possível. A lógica completa, o caminho de dados e o tratamento de IPv6/multicast são descritos em <<architecture,Arquitetura>>.

== Requisitos do Host

O host requer os drivers internos cdc_ncm e cdc_acm. Ambos fazem parte do Linux mainline há mais de uma década, portanto, qualquer kernel atualmente suportado os inclui. Nenhum módulo fora da árvore, blob de firmware ou driver de fornecedor está envolvido. Os mesmos drivers de classe existem no macOS, Windows 10 e posteriores, Android e iOS.

[NOTA] Nenhum outro sistema operacional foi testado.

== Compilando

O projeto é um projeto CMake padrão do pico-sdk. Requer o conjunto de ferramentas ARM embarcado, CMake, um backend de compilação (Ninja ou Make), Python 3 e uma cópia do pico-sdk com seus submódulos. O TinyUSB e o lwIP incluídos no pico-sdk são usados sem modificação.

=== Dependências

Em sistemas baseados em Arch (Arch, CachyOS, Manjaro), o conjunto de ferramentas vem dos repositórios oficiais:

[source,sh]

sudo pacman -S --needed
arm-none-eabi-gcc
arm-none-eabi-newlib
cmake
ninja
python
git
libusb

arm-none-eabi-newlib fornece a biblioteca C embarcada e os cabeçalhos; sem ela, o cross-compilador não consegue encontrar stdint.h e cabeçalhos semelhantes. libusb só é necessário para picotool, que o pico-sdk compila a partir do código-fonte durante a primeira configuração para gerar o UF2; nenhum pacote picotool separado é necessário.

=== Etapas de Compilação

[#build-plain] .Compilar com CMake e o pico-sdk [source,sh]

git clone -b 2.2.0 --recurse-submodules https://github.com/raspberrypi/pico-sdk export PICO_SDK_PATH="$PWD/pico-sdk"

cp src/wifi_config.h.example src/wifi_config.h # depois edite SSID/senha, ou deixe em branco cmake -S . -B build -G Ninja -DPICO_BOARD=pico_w -DCMAKE_BUILD_TYPE=Release cmake --build build

-> build/pico-usb-wifi.uf2


O sinalizador -G Ninja é opcional; omita-o para usar o gerador Make padrão (então cmake --build build -j).

wifi_config.h contém as credenciais padrão de tempo de compilação e está no .gitignore. Deixá-lo em branco produz uma imagem sem credenciais incorporadas, que é provisionada em tempo de execução através do console de gerenciamento (<<management-console,Console de Gerenciamento>>); preenchê-lo incorpora uma rede padrão.

== Gravando o Firmware

As etapas aqui carregam o firmware na placa.

. Segure o botão BOOTSEL enquanto conecta a placa via USB. Ela é montada como um volume de armazenamento em massa USB RPI-RP2, geralmente em /run/media/<user>/RPI-RP2 ou /media/<user>/RPI-RP2. . Copie pico-usb-wifi.uf2 para esse volume. A placa reinicia no firmware automaticamente. . Conecte a placa ao host que receberá a conectividade Wi-Fi.

== Usando em um Host Linux

Conecte o dispositivo ao host e provisione suas credenciais Wi-Fi uma vez através do console de gerenciamento (<<management-console,Console de Gerenciamento>>). A interface do host então se comporta como qualquer conexão com fio na rede do ponto de acesso.

Um host que gerencia interfaces automaticamente (NetworkManager, systemd-networkd, dhcpcd) não precisa de configuração: ele executa DHCP e SLAAC através da ponte e recebe um único endereço IPv4, um endereço IPv6, o gateway do ponto de acesso e DNS, exatamente como um cliente com fio faria. Não há endereço ou gateway do lado do dispositivo para configurar, porque o Pico não possui nenhum. O endereço MAC da interface é o MAC da estação Wi-Fi, que é como uma identidade é apresentada à rede.

A saída do comando ip aqui mostra a interface resultante: um cliente DHCP/SLAAC comum na própria sub-rede do ponto de acesso, com o MAC da estação e nenhum traço do Pico.

[#host-iface] .A Interface do Host Após a Associação [source,console]

$ ip addr show enp0s20f0u3u7 9: enp0s20f0u3u7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP link/ether 00:00:5e:00:53:01 brd ff:ff:ff:ff:ff:ff inet 192.168.1.218/24 brd 192.168.1.255 scope global dynamic enp0s20f0u3u7 inet6 2001:db8:1::1a2b/64 scope global dynamic inet6 fe80::1/64 scope link

== Console de Gerenciamento

O console de gerenciamento é a interface de configuração, na primeira função serial CDC-ACM (geralmente /dev/ttyACM0). Ele é acessível assim que o dispositivo é enumerado, antes da associação Wi-Fi, portanto, o provisionamento nunca requer uma rede.

Baixar ferramenta