Libérer le Wi‑Fi sur l’ESP32 [vidéo]
(media.ccc.de)- L’ESP32 est si répandu qu’il s’en trouve probablement des milliers rien qu’au CCH, mais sa pièce maîtresse, la pile Wi‑Fi, reste propriétaire, ce qui la rend difficile à modifier et à auditer
- La session de la 38c3 part de la rétro-ingénierie du périphérique Wi‑Fi pour montrer le processus de création d’une pile Wi‑Fi open source
- L’objectif n’est pas seulement une implémentation de remplacement, mais de permettre de vérifier et corriger soi-même un logiciel susceptible de traiter des données sensibles
- Une fois cette nouvelle pile en place, l’ESP32 pourrait dépasser le simple SoC IoT générique pour devenir une plateforme radio bon marché dédiée à la recherche et à l’expérimentation
- Si les fonctionnalités sont suffisamment ouvertes, cela rend possibles des usages comme des outils de pentest, des routeurs mesh B.A.T.M.A.N. ou des clients AirDrop
Pourquoi ouvrir une pile Wi‑Fi propriétaire
- La pile Wi‑Fi existante de l’ESP32 fonctionne, mais comme il s’agit d’une implémentation propriétaire, il est difficile d’en inspecter le fonctionnement interne ou de l’adapter à ses besoins
- L’objectif central d’une pile Wi‑Fi open source est de rendre modifiables et auditables des composants potentiellement chargés de traiter des données sensibles
- Le fait qu’il existe probablement des milliers d’ESP32 au CCH, tous exécutant ce type de pile Wi‑Fi fermée, renforce encore cette prise de conscience
De la rétro-ingénierie à une nouvelle pile
- Le projet a commencé par la rétro-ingénierie de la pile Wi‑Fi propriétaire de l’ESP32
- Il a ensuite évolué vers l’implémentation d’une pile Wi‑Fi open source pilotant directement le périphérique Wi‑Fi de l’ESP32
- Au fil du processus, la session aborde aussi le Wi‑Fi, l’ESP32, la rétro-ingénierie en général et la manière d’aborder ce type de projet
Ce que permet un ESP32 vraiment ouvert
- Si ses fonctionnalités sont totalement ouvertes, l’ESP32 peut assumer des rôles bien plus variés, comme outil de recherche et comme SoC IoT
- Exemples d’usages possibles
- outils de pentest
- routeurs mesh B.A.T.M.A.N.
- clients AirDrop
Informations sur la session et conditions de diffusion
- Les intervenants sont Frostie314159 et Jasper Devreker
- Il s’agit d’une session de 38 minutes tenue le 2024-12-27 dans la track Hardware & Making, au Saal 1 de la 38c3
- La vidéo et l’audio sont proposés aux formats MP4, WebM, MP3 et Opus
- Les contenus sont publiés sous les conditions de
http://creativecommons.org/licenses/by/4.0
1 commentaires
Avis sur Hacker News
Article lié : https://zeus.ugent.be/blog/23-24/open-source-esp32-wifi-mac/
Si elle est compatible, on peut réutiliser tels quels l’aide et les exemples déjà accumulés sur Internet, et le coût d’entrée baisse. Même quelqu’un qui veut modifier très légèrement la couche MAC peut s’y mettre comme avant, sans avoir à apprendre une nouvelle API, et ne toucher qu’à la partie qui l’intéresse
C’est encore assez étrange qu’Espressif soit le seul à avoir réussi à mettre un modem WiFi dans un microcontrôleur plutôt correct
ST reste encore très en retard sur ce terrain
Cela dit, le WiFi de la carte RP2040 W ressemble à un module externe. Source : https://esphome.io
On peut en acheter une seule unité à peu près partout, ils sont vendus sous forme de nombreuses cartes breakout avec alimentation USB, port de programmation et broches sérigraphiées, et la documentation, les exemples, l’Arduino IDE et NodeMCU sont bien fournis. Arduino était similaire au début, mais est resté trop longtemps sur des puces AVR peu performantes, les cartes non chinoises étaient chères, et il n’y avait pas de WiFi. Le Raspberry Pi Pico a de bonnes fonctionnalités, mais l’approvisionnement était difficile au début ; le reste ressemble plutôt à des « puces seules » qu’on achète chez DigiKey ou équivalent, avec des frais de port élevés, une documentation de plus de 600 pages, plus de 300 pages à lire pour envoyer un premier ping, des soudures à faire sur la carte, et généralement du matériel coûteux pour programmer
Je n’ai pas encore vu la vidéo, donc désolé si c’est déjà abordé, mais je me demande si la certification radio de l’ESP32 est liée au firmware boîte noire officiel
Même avec le même matériel, si on utilise un firmware ouvert, faut-il le renvoyer à la FCC ou à d’autres organismes de certification pour vérifier la conformité ?
Je ne me souviens pas de l’article exact du CFR, mais la FCC autorise explicitement n’importe qui à utiliser de petits volumes d’appareils non certifiés. Si l’appareil enfreint d’autres règles, cela reste une infraction, mais le simple fait d’avoir modifié le matériel ou le logiciel n’est pas interdit en soi
L’existence du firmware est à peine reconnue. Il y a aussi une raison à cela. Pour les équipements radio non licenciés certifiés comme le WiFi, on attend qu’ils soient résistants aux modifications, dans l’intérêt public. Ainsi, lorsque la FCC a discuté des exigences de certification des routeurs WiFi, elle a envisagé d’étendre cela au logiciel, par exemple en imposant le secure boot à tous les routeurs WiFi vulnérables et pourris ; c’était une idée affreuse, et elle a été abandonnée. En l’état, tant que le firmware résultant ne produit pas clairement d’émissions hors spécification, je dirais que c’est à moitié légal ou à moitié illégal. Je ne suis pas juriste
https://github.com/esp32-open-mac
J’avais autrefois une idée pour provisionner un mot de passe WiFi. On peut transmettre le SSID et le mot de passe en modulant la longueur des paquets
Un nouvel appareil IoT ne peut évidemment pas déchiffrer les paquets, mais il peut en observer la longueur. J’avais aussi fait un exemple d’implémentation pour Linux, mais je n’ai trouvé aucune puce IoT offrant un accès PHY suffisamment bas niveau pour faire ça
Question annexe : l’un des présentateurs a affiché un numéro DECT. Cela veut dire qu’il y a encore des gens qui se baladent avec de vieux téléphones pour les conférences tech ?
Il y a aussi un tableau de bord d’état qui affiche des métriques pendant l’événement
[1] https://events.ccc.de/2024/12/22/38c3-poc-isdn-version/
[2] https://dashboard.eventphone.de/d/de7sgxz63vzeoe/38c3?orgId=...
En particulier dans les zones de camping, la couverture WiFi peut être irrégulière, donc on peut quand même recevoir un appel en allant jusqu’au bâtiment des toilettes ou au parking. Comme cela utilise ses propres fréquences, ça n’encombre pas davantage les bandes utilisées par le WiFi, le Bluetooth et Zigbee. On pourrait utiliser une appli, mais le DECT est très fiable et porte beaucoup plus loin que le WiFi. J’ai un bon appareil Siemens à peu près de la taille d’un Nokia 8210, donc pas besoin de se trimballer une brique. Sa batterie est sans doute presque morte maintenant, mais comme les batteries de cette époque, elle est remplaçable
Dans les logements privés en Allemagne, DECT reste encore très populaire
Bien plus robuste que la VoIP sur WiFi
Comme DECT était là en premier, le terme s’est figé comme nom générique du réseau téléphonique interne
Je me demande à quel point le hack va en profondeur. L’envoi de trames semble se résumer à configurer quelques registres et à attendre une interruption ; j’ai l’impression qu’il dialogue peut-être avec une autre couche de firmware qui fait le vrai travail
Ça me fait penser à la carte Raspberry Pi Pico. Il y a le SoC principal RP2040, mais le WiFi passe par un module WiFi/BT séparé (CYW43xx) doté de son propre cœur Arm. L’interface de registres externe du module WiFi n’est pas documentée publiquement non plus, mais il existe un pilote open source (https://github.com/georgerobotics/cyw43-driver/tree/cf924bb0...) qui permet d’en déduire les spécifications. Mais au final, ce pilote communique lui aussi avec le logiciel qui tourne sur le cœur Arm interne du module, et ce code est fourni par le fabricant sous la forme d’un énorme blob binaire de firmware. Ce blob se trouve en fait dans les fichiers d’en-tête du répertoire firmware du dépôt lié. Je me demande comment ce hack de l’ESP32 correspond à cette architecture
Les intervenants ont vraiment l’air très jeunes, c’est impressionnant. C’est fascinant de voir des personnes accumuler autant de connaissances techniques à un âge aussi précoce
Les échecs en sont un parfait exemple. Avant, beaucoup de connaissances se trouvaient dans des livres, souvent dans des langues étrangères. Maintenant, tout est public, et une fois qu’on atteint un certain niveau, on peut facilement jouer contre des adversaires du top 100, ce qui accélère encore la progression
On se rapproche encore un peu d’une bibliothèque MicroPython prenant en charge le mode promiscuité
À voir sans téléchargement : https://media.ccc.de/v/38c3-liberating-wi-fi-on-the-esp32/pl...