Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
pico-usb-wifi — Firmware pour Raspberry Pi Pico W qui crée un adaptateur Wi-Fi USB sans pilote avec pontage transparent de couche 2, authentification WPA2/WPA3 et console de gestion hors bande. | Kitploit
Outils/GitLabGitLab/baiyibai/pico-usb-wifi
Sécurité des Systèmes EmbarquésOutils de Chiffrement/DéchiffrementDébogueursSécurité RéseauSécurité Sans FilSécurité MatérielleAuthentificationAnalyse de Micrologiciel
GitLabbaiyibai/pico-usb-wifi

pico-usb-wifi

Firmware pour Raspberry Pi Pico W qui crée un adaptateur Wi-Fi USB sans pilote avec pontage transparent de couche 2, authentification WPA2/WPA3 et console de gestion hors bande.

45421il y a 3 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

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

pico-usb-wifi est un firmware pour la Raspberry Pi Pico W qui la transforme en adaptateur USB Wi-Fi sans pilote, apparaissant comme un périphérique USB CDC-NCM.

:figure-caption: AI Slop

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

Le firmware fonctionne comme un pont transparent de couche 2 qui fait transiter les trames entre l'interface sans fil de la Pico W et son interface USB. L'interface USB de l'hôte adopte l'adresse MAC de la station Wi-Fi de la Pico W, ce qui fournit une identité MAC et IP unique de bout en bout.

Aucun pilote côté hôte, module noyau ou pile sans fil n'est requis ; voir <<no-host-side-wi-fi-stack,Pas de pile Wi-Fi côté hôte>>. L'hôte n'a besoin que des pilotes cdc_ncm et cdc_acm intégrés, fournis avec tous les systèmes d'exploitation modernes : Linux, macOS, Windows et les OS mobiles.

== Fonctionnalités

pico-usb-wifi fournit les fonctionnalités suivantes :

  • Pont de couche 2 transparent entre les interfaces sans fil et USB de la Pico W
  • USB CDC-NCM
  • IPv4 et IPv6 sans NAT, sans sous-réseau privé ni redirection de ports à configurer
  • Consoles de gestion et de débogage hors bande via la liaison série CDC-ACM ; voir <<management-console,Console de gestion>> et <<debug-console,Console de débogage>>.
  • Authentification WPA2-PSK et WPA3-SAE (et réseaux ouverts)
  • Débit moyen de 4,75 Mbits/s

.Une situation réelle image::images/slop_2.png[]

== Pourquoi cela existe

J'avais besoin d'un adaptateur USB Wi-Fi pour un projet Linux embarqué à venir. Je n'avais pas de clé USB Wi-Fi bon marché ; alors plutôt que d'aller en acheter une en magasin pour cinq dollars, j'ai passé deux jours d'un long week-end férié et environ un million de jetons Claude Code à développer ce firmware.

白一百, auteur de pico-usb-wifi

Google a dit que ce n'était pas faisable :

.pico-usb-wifi "Non réalisable" image::images/gemini_says_not_possible.png[]

toc::[]

== Pas de pile Wi-Fi côté hôte

Contrairement à une clé USB Wi-Fi, cet adaptateur n'expose à l'hôte qu'une interface de type Ethernet. La Pico W contient toute la partie sans fil : la radio, l'association, le suppliant WPA2/WPA3 et le domaine réglementaire.

Cela permet aux systèmes d'éviter d'installer wpa_supplicant, la pile sans fil cfg80211/mac80211, une base de données réglementaire, ainsi que le firmware du chipset ou un pilote propriétaire. L'approvisionnement des identifiants Wi-Fi se fait sur le périphérique, via sa console de gestion hors bande, et non via un outillage sans fil côté hôte. Cela préserve à un hôte contraint, à un appareil, ou à un hôte sans pilotes sans fil (ou dont le noyau du fournisseur en est dépourvu), la capacité de se connecter à des réseaux sans fil en utilisant uniquement des pilotes génériques de classe CDC.

== Comment ça fonctionne

[#fig-topology] .Diagramme de topologie image::images/topology.svg[Topologie du pont de couche 2 transparent,820]

L'interface USB de l'hôte reçoit l'adresse MAC de la station Wi-Fi de la Pico W, de sorte qu'une seule MAC existe de bout en bout et que la Pico W peut transférer les trames Ethernet telles quelles entre USB et Wi-Fi. Une station Wi-Fi ne peut pas relier plusieurs adresses MAC ; c'est donc en réduisant l'hôte et la station à une seule MAC qu'un pont transparent est rendu possible. La justification complète, le chemin de données et la gestion IPv6/multicast sont décrits dans <<architecture,Architecture>>.

== Prérequis côté hôte

L'hôte nécessite les pilotes cdc_ncm et cdc_acm inclus dans l'arborescence du noyau. Tous deux font partie du noyau Linux principal depuis plus d'une décennie, de sorte que tout noyau actuellement pris en charge les inclut. Aucun module hors arborescence, blob de firmware ou pilote propriétaire n'est utilisé. Les mêmes pilotes de classe existent sur macOS, Windows 10 et versions ultérieures, Android et iOS.

[NOTE] Aucun autre système d'exploitation n'a été testé.

== Compilation

Le projet est un projet CMake standard du pico-sdk. Il nécessite la chaîne d'outils embarquée ARM, CMake, un backend de compilation (Ninja ou Make), Python 3, et une copie du pico-sdk avec ses sous-modules. Les TinyUSB et lwIP inclus dans le pico-sdk sont utilisés sans modification.

=== Dépendances

Sur les systèmes basés sur Arch (Arch, CachyOS, Manjaro), la chaîne d'outils provient des dépôts officiels :

[source,sh]

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

arm-none-eabi-newlib fournit la bibliothèque C embarquée et les en-têtes ; sans lui, le compilateur croisé ne trouve pas stdint.h ni les en-têtes similaires. libusb n'est nécessaire que pour picotool, que le pico-sdk compile depuis les sources lors de la première configuration afin de générer le UF2 ; aucun paquet picotool séparé n'est requis.

=== Étapes de compilation

[#build-plain] .Compilation avec CMake et le 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 # then edit SSID/password, or leave blank cmake -S . -B build -G Ninja -DPICO_BOARD=pico_w -DCMAKE_BUILD_TYPE=Release cmake --build build

-> build/pico-usb-wifi.uf2


Le drapeau -G Ninja est facultatif ; omettez-le pour utiliser le générateur Make par défaut (puis cmake --build build -j).

wifi_config.h contient les identifiants par défaut au moment de la compilation et est ignoré par git. Le laisser vide produit une image sans identifiants intégrés, provisionnée à l'exécution via la console de gestion (<<management-console,Console de gestion>>) ; le remplir intègre un réseau par défaut.

== Écriture du firmware

Les étapes suivantes chargent le firmware sur la carte.

. Maintenez le bouton BOOTSEL enfoncé tout en connectant la carte en USB. Elle apparaît comme un volume de stockage de masse USB RPI-RP2, généralement sous /run/media/<user>/RPI-RP2 ou /media/<user>/RPI-RP2. . Copiez pico-usb-wifi.uf2 sur ce volume. La carte redémarre automatiquement dans le firmware. . Connectez la carte à l'hôte qui doit recevoir la connectivité Wi-Fi.

== Utilisation sur un hôte Linux

Branchez le périphérique à l'hôte et provisionnez ses identifiants Wi-Fi une fois via la console de gestion (<<management-console,Console de gestion>>). L'interface de l'hôte se comporte ensuite comme n'importe quelle connexion filaire sur le réseau du point d'accès.

Un hôte qui gère les interfaces automatiquement (NetworkManager, systemd-networkd, dhcpcd) n'a besoin d'aucune configuration : il exécute DHCP et SLAAC via le pont et reçoit une seule adresse IPv4, une adresse IPv6, la passerelle du point d'accès et le DNS, exactement comme le ferait un client filaire. Il n'y a ni adresse ni passerelle à configurer côté périphérique, car la Pico n'en détient aucune. L'adresse MAC de l'interface est celle de la station Wi-Fi ; c'est ainsi qu'une identité unique est présentée au réseau.

La sortie de la commande ip ci-dessous montre l'interface résultante : un client DHCP/SLAAC ordinaire sur le sous-réseau du point d'accès, avec la MAC de la station et aucune trace de la Pico.

[#host-iface] .L'interface hôte après association [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 gestion

Télécharger l’outil