Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
pico-usb-wifi — Firmware für Raspberry Pi Pico W, das einen treiberlosen USB-WLAN-Adapter mit transparenter Layer-2-Brücke, WPA2/WPA3-Authentifizierung und Out-of-Band-Verwaltungskonsole erstellt. | Kitploit
Tools/GitLabGitLab/baiyibai/pico-usb-wifi
Embedded-System-SicherheitVerschlüsselungs-/EntschlüsselungstoolsDebuggerNetzwerksicherheitDrahtlose SicherheitHardware-SicherheitAuthentifizierungFirmware-Analyse
GitLabbaiyibai/pico-usb-wifi

pico-usb-wifi

Firmware für Raspberry Pi Pico W, das einen treiberlosen USB-WLAN-Adapter mit transparenter Layer-2-Brücke, WPA2/WPA3-Authentifizierung und Out-of-Band-Verwaltungskonsole erstellt.

45420vor 3 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

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

pico-usb-wifi ist eine Firmware für den Raspberry Pi Pico W, die ihn in einen treiberlosen USB-WLAN-Adapter verwandelt, der als USB-CDC-NCM-Gerät erkannt wird.

:figure-caption: KI-Schrott

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

Die Firmware arbeitet als transparente Layer-2-Brücke, die Frames zwischen der WLAN-Schnittstelle des Pico W und seiner USB-Schnittstelle weiterleitet. Die USB-Schnittstelle des Hosts übernimmt die MAC-Adresse der Pico-W-WLAN-Station, sodass durchgängig eine einzige MAC- und IP-Identität besteht.

Es wird kein hostseitiger Treiber, Kernelmodul oder WLAN-Stack benötigt; siehe <<no-host-side-wi-fi-stack,Kein hostseitiger WLAN-Stack>>. Der Host benötigt nur die integrierten cdc_ncm- und cdc_acm-Treiber, die in jedem modernen Linux, macOS, Windows und mobilen Betriebssystem enthalten sind.

== Funktionen

pico-usb-wifi bietet diese Funktionen:

  • Transparente Layer-2-Brücke zwischen der WLAN- und USB-Schnittstelle des Pico W
  • USB-CDC-NCM
  • IPv4 und IPv6 ohne NAT, ohne privates Subnetz und ohne zu konfigurierende Portweiterleitung
  • Out-of-Band-Verwaltungs- und Debug-Konsolen über CDC-ACM-Serial; siehe <<management-console,Verwaltungskonsole>> und <<debug-console,Debug-Konsole>>.
  • WPA2-PSK- und WPA3-SAE-Authentifizierung (und offene Netzwerke)
  • Durchschnittlicher Durchsatz von 4,75 Mbit/s

.Eine reale Situation image::images/slop_2.png[]

== Warum es das gibt

Ich brauchte einen USB-WLAN-Adapter für ein anstehendes Embedded-Linux-Projekt. Ich hatte keinen günstigen USB-WLAN-Dongle, also anstatt für fünf USD in einen stationären Laden zu gehen und einen zu kaufen, verbrachte ich zwei Tage eines langen Feiertagswochenendes und etwa eine Million Claude-Code-Token mit dem Bau dieser Firmware.

白一百, Autor von pico-usb-wifi

Google sagte, es sei nicht machbar:

.pico-usb-wifi "Nicht machbar" image::images/gemini_says_not_possible.png[]

toc::[]

== Kein hostseitiger WLAN-Stack

Anders als ein USB-WLAN-Dongle stellt dieser Adapter dem Host nur eine Ethernet-ähnliche Schnittstelle zur Verfügung. Der Pico W enthält die gesamte WLAN-Seite: das Funkmodul, die Assoziation, den WPA2/WPA3-Supplikanten und die Regulierungsdomäne.

Dadurch können Systeme die Installation von wpa_supplicant, dem cfg80211/mac80211-WLAN-Stack, einer Regulierungsdatenbank sowie Chipsatz-Firmware oder einem Herstellertreiber vermeiden. Die Bereitstellung der WLAN-Anmeldedaten erfolgt auf dem Gerät über die Out-of-Band-Verwaltungskonsole, nicht über hostseitige WLAN-Tools. So behält ein eingeschränkter oder Appliance-Host, oder einer ohne WLAN-Treiber oder dessen Herstellerkernel diese nicht enthält, die Möglichkeit, sich nur mit universellen CDC-Klassentreibern mit WLAN-Netzwerken zu verbinden.

== Wie es funktioniert

[#fig-topologie] .Topologie-Diagramm image::images/topology.svg[Transparente Layer-2-Brückentopologie,820]

Der USB-Schnittstelle des Hosts wird die MAC-Adresse der Pico-W-WLAN-Station zugewiesen, sodass eine einzelne MAC durchgängig existiert und der Pico W Ethernet-Frames unverändert zwischen USB und WLAN weiterleiten kann. Eine WLAN-Station kann nicht mehrere MAC-Adressen brücken, daher ist die Verschmelzung von Host und Station auf eine MAC das, was eine transparente Brücke überhaupt erst möglich macht. Die vollständige Begründung, der Datenpfad und die IPv6-/Multicast-Behandlung werden in <<architektur,Architektur>> beschrieben.

== Host-Anforderungen

Der Host benötigt die integrierten cdc_ncm- und cdc_acm-Treiber. Beide sind seit über einem Jahrzehnt Teil des Mainline-Linux, daher enthält jeder aktuell unterstützte Kernel sie. Es ist kein Out-of-Tree-Modul, Firmware-Blob oder Herstellertreiber erforderlich. Dieselben Klassentreiber gibt es für macOS, Windows 10 und höher, Android und iOS.

[HINWEIS] Andere Betriebssysteme wurden nicht getestet.

== Bauen

Das Projekt ist ein Standard-pico-sdk-CMake-Projekt. Es werden die ARM-Embedded-Toolchain, CMake, ein Build-Backend (Ninja oder Make), Python 3 und ein Checkout des pico-sdk mit seinen Submodulen benötigt. Das im pico-sdk gebündelte TinyUSB und lwIP werden unverändert verwendet.

=== Abhängigkeiten

Auf Arch-basierten Systemen (Arch, CachyOS, Manjaro) stammt die Toolchain aus den offiziellen Repositories:

[source,sh]

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

arm-none-eabi-newlib stellt die eingebettete C-Bibliothek und Header bereit; ohne sie findet der Cross-Compiler stdint.h und ähnliche Header nicht. libusb wird nur für picotool benötigt, das das pico-sdk während der ersten Konfiguration aus den Quellen baut, um die UF2 zu erzeugen; es ist kein separates picotool-Paket erforderlich.

=== Build-Schritte

[#build-plain] .Bauen mit CMake und dem 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 # dann SSID/Passwort bearbeiten oder leer lassen cmake -S . -B build -G Ninja -DPICO_BOARD=pico_w -DCMAKE_BUILD_TYPE=Release cmake --build build

-> build/pico-usb-wifi.uf2


Das Flag -G Ninja ist optional; lassen Sie es weg, um den standardmäßigen Make-Generator zu verwenden (dann cmake --build build -j).

wifi_config.h enthält die kompilierten Standard-Anmeldedaten und ist in der Git-Ignore-Liste. Wenn Sie es leer lassen, wird ein Image ohne fest eingebaute Anmeldedaten erstellt, das zur Laufzeit über die Verwaltungskonsole bereitgestellt wird (<<management-console,Verwaltungskonsole>>); wenn Sie es ausfüllen, wird ein Standardnetzwerk fest eingebaut.

== Firmware schreiben

Die Schritte hier laden die Firmware auf das Board.

. Halten Sie die BOOTSEL-Taste gedrückt, während Sie das Board über USB anschließen. Es wird als USB-Massenspeichervolumen RPI-RP2 eingebunden, üblicherweise unter /run/media/<user>/RPI-RP2 oder /media/<user>/RPI-RP2. . Kopieren Sie pico-usb-wifi.uf2 auf dieses Volumen. Das Board startet automatisch in die Firmware neu. . Verbinden Sie das Board mit dem Host, der WLAN-Konnektivität erhalten soll.

== Verwendung auf einem Linux-Host

Schließen Sie das Gerät an den Host an und stellen Sie die WLAN-Anmeldedaten einmalig über die Verwaltungskonsole bereit (<<management-console,Verwaltungskonsole>>). Die Schnittstelle des Hosts verhält sich dann wie jede kabelgebundene Verbindung im Netzwerk des Zugangspunkts.

Ein Host, der Schnittstellen automatisch verwaltet (NetworkManager, systemd-networkd, dhcpcd), benötigt keine Einrichtung: Er führt DHCP und SLAAC über die Brücke aus und erhält eine einzelne IPv4-Adresse, eine IPv6-Adresse, das Gateway des Zugangspunkts und DNS – genau wie ein kabelgebundener Client. Es gibt keine geräteseitige Adresse oder Gateway zu konfigurieren, da der Pico keine besitzt. Die MAC-Adresse der Schnittstelle ist die der WLAN-Station, wodurch eine Identität im Netzwerk präsentiert wird.

Die Ausgabe des ip-Befehls hier zeigt die resultierende Schnittstelle: ein gewöhnlicher DHCP/SLAAC-Client im eigenen Subnetz des Zugangspunkts, mit der MAC der Station und ohne Spur des Pico.

[#host-schnittstelle] .Die Host-Schnittstelle nach der Assoziation [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

== Verwaltungskonsole

Tool herunterladen