Firmware pour les farces de haute technologie sur les appareils M5Stack ESP32
Logo par @unagironin
Comme annoncé plus tôt cette année, M5Stick-NEMO a été archivé et n'est plus en développement actif. Le projet a dépassé tous mes objectifs personnels et c'était incroyable de voir la communauté se rassembler, s'enthousiasmer pour le projet, y contribuer et s'en inspirer.
En ce qui me concerne, le projet a atteint la limite de ce dont la famille M5Stick est capable, pour ce genre de trucs et de farces, sans ajouter de matériel externe tel que des cartes SD, des modems radio, des LED plus grandes, des modules RFID ou autres. La durée de vie de la batterie est également sous-optimale pour piloter ces périphériques externes. De nombreuses demandes de fonctionnalités tournent autour de la prise en charge de ces périphériques externes, et je n'ai ni les ressources ni le temps pour les ajouter, mais la bonne nouvelle est que d'autres ont poursuivi cet esprit avec, honnêtement, de meilleures fonctionnalités. Un projet très prometteur est CatHack.
Au revoir et merci pour tous les poissons !
NEMO a lancé un projet personnel pour m'aider à en savoir plus sur le développement ESP32 avec l'IDE Arduino. J'ai décidé de reproduire quelques farces courantes et tendance qui retenaient beaucoup d'attention dans la communauté technologique, comme un défi pour moi-même, et également pour mieux comprendre ces attaques.
NEMO doit son nom au petit poisson intelligent et têtu du Monde de Nemo. Ce projet contraste avec un autre gadget de haute technologie associé à certaines créatures marines. Je voulais prouver qu'il y a beaucoup de choses que l'on peut faire avec un petit kit de développement et un peu de curiosité. Je n’ai aucune illusion de remplacer les capacités de tout appareil similaire avec ce projet. C'est juste pour m'amuser et pour ma propre éducation.
Ajustement de .github/workflow/compile.yml pour compiler avec la fonction DEAUTH.
Ajout de la prise en charge de SONG sur StickC Plus et Plus2
Ajout d'un "Menu d'attaque" lors de l'affichage des détails d'un point d'accès
Clone Portal (Crée un portail maléfique avec le même SSID de la cible)
Attaque Deauth (diffuse des trames de désauthentification aux appareils connectés à ce point d'accès)
Deauth+Clone (Crée le portail maléfique avec le même SSID et envoie des trames de désauthentification à cet AP)
Option ajoutée dans les paramètres pour monter/démonter la carte SD lors de l'utilisation de périphériques M5StickC
Création d'un nouveau fichier pour gérer SPI/SD si vous n'utilisez pas CARDPUTER
SDCARD travaille maintenant sur M5StickC Plus2
des idées ?
Port TV B-Gone (grâce au HAKRWATCH de MrArm) pour éteindre de nombreux téléviseurs, projecteurs et autres appareils à commande infrarouge
Spam de couplage d'appareil Bluetooth AppleJuice iOS
Spam de notification de périphérique Bluetooth pour SwiftPair (Windows) et Android
Spam WiFi - SSID amusants, WiFi Rickrolling et un mode aléatoire qui crée des centaines de SSID nommés de manière aléatoire par minute
Portail WiFi NEMO - Un portail captif qui tente d'obtenir des informations d'identification de courrier électronique par ingénierie sociale - enregistre les noms d'utilisateur et les mots de passe sur la carte SD (si insérée dans un lecteur pris en charge)
Scanner SSID WiFi - Affichez les SSID 2,4 GHz à proximité, obtenez des informations à leur sujet et clonez même les SSID dans le portail NEMO.
Horloge numérique 24 heures réglable par l'utilisateur, soutenue par le M5 Stick RTC, de sorte qu'elle conserve une heure relativement stable même en mode veille profonde et batterie faible.
Paramètres sauvegardés par EEPROM pour la rotation, la luminosité, la gradation automatique et le SSID du portail NEMO
Niveau de batterie et crédits dans le menu des paramètres
Il existe trois contrôles principaux :
Accueil - Arrête le processus en cours et vous ramène au menu depuis presque n'importe où dans NEMO
Suivant - Déplace le curseur vers l'option de menu suivante. Dans les modes de fonction, cela arrête généralement le processus et vous ramène au menu précédent.
Sélectionner - Active l'option de menu actuellement sélectionnée et réveille l'écran grisé dans les modes de fonction
StickC et StickC-Plus
Alimentation : appuyez longuement sur le bouton d'alimentation pendant 6 secondes pour éteindre l'appareil.
Accueil : appuyez sur le bouton d'alimentation (le plus proche du port USB)
Suivant : appuyez sur le bouton latéral
Sélectionner : appuyez sur le bouton M5 situé à l'avant de l'appareil.
Ordinateur de carte
Accueil : appuyez sur la touche Échap/~/` ou sur la touche Flèche gauche/,
Suivant/Précédent : appuyez sur la flèche vers le bas/. clé et flèche vers le haut/; touches pour naviguer
Sélectionnez : appuyez sur la touche OK/Entrée ou sur la flèche droite/? clé
En mode NEMO Portal, NEMO active un Hotspot WiFi ouvert nommé "Nemo Free WiFi" (configurable dans portal.h) avec DNS, DHCP et serveurs Web activés.
Le portail NEMO propose une fausse page de connexion qui prétend fournir un accès à Internet si vous vous connectez.
Il s'agit d'une attaque d'ingénierie sociale qui enregistrera le nom d'utilisateur et les mots de passe saisis sur la page.
À partir des détails de Wifi Scan, vous pouvez cloner un SSID existant à partir de la liste d'analyse. Quitter le portail NEMO effacera le SSID Evil Twin
Vous pouvez afficher les informations d'identification capturées en vous connectant au portail depuis votre propre appareil et en accédant à http://172.0.0.1/creds
Vous pouvez définir un SSID personnalisé en vous connectant au portail depuis votre propre appareil et en accédant à http://172.0.0.1/ssid
Si votre appareil prend en charge l'EEPROM pour les paramètres, le SSID personnalisé que vous entrez sera enregistré par défaut, même s'il est éteint.
Si votre appareil dispose d'un lecteur de carte SD avec une carte formatée pour le système de fichiers FAT insérée, les noms d'utilisateur et les mots de passe seront enregistrés dans nemo-portal-creds.txt sur la carte SD pour que vous puissiez les consulter ultérieurement.
La prise en charge de la carte SD n'est activée par défaut que sur la plateforme M5Stack Cardputer. Il peut être activé sur les appareils M5Stick, mais un lecteur de carte SD doit être construit et fixé à l'en-tête de broche du panneau avant.
Le portail NEMO est uniquement destiné à être utilisé dans le cadre d'engagements professionnels ayant une portée de travail valide, à des fins éducatives ou de démonstration. Le stockage, la vente ou l'utilisation d'informations personnelles sans consentement sont contraires à la loi. ?
C’est le moyen le plus simple d’obtenir NEMO
M5Stick C Plus Quick Start propose des liens vers l'application M5Burner pour Linux, MacOS et Windows. Il s'agit de l'outil officiel pour installer UIFlow et d'autres firmwares officiels. J'y fournis des binaires à jour pour NEMO.
Lancez M5Burner
Sélectionnez "StickC" dans le menu de gauche (ou StampS3 pour Cardputer)
Utilisez la recherche en haut de l'application pour rechercher « NEMO ». Mes versions officielles seront téléchargées par "4x0nn" et comporteront des photos.
Cliquez sur Télécharger
Cliquez sur Graver
Installez les outils ESP-IDF selon le guide de démarrage Espressif
Ouvrez l'outil esp-idf CMD (sous Windows) - sur Mac ou Linux, esp-idf.py et esptool.py doivent se trouver dans le chemin système.
esptool.py --port COMPORT -b 115200 write_flash -z 0x0 M5Nemo-VERSION.bin
Le port peut être un port COM, par exemple COM4, COM11 sous Windows. Sur Mac et Linux, il se trouvera généralement dans /dev tel que /dev/ttyUSB0, /dev/ttyACM0 ou /dev/cu.usbserial-3
M5Nemo-VERSION.bin doit être une version que vous avez téléchargée à partir d'une version GitHub - de préférence la dernière disponible.
Si vous souhaitez personnaliser NEMO ou contribuer au projet, vous devez être familiarisé avec la construction de NEMO à partir des sources.
Installez l'IDE Arduino. J'ai utilisé Arduino 1.8 sous Linux et Windows, et Arduino 2.2 sous Windows avec succès.
Installez les cartes M5Stack pour l'IDE Arduino : Dans Fichier -> Préférences, collez cette URL dans la zone de texte "URL du gestionnaire de cartes". Utilisez des virgules entre les URL si des URL sont déjà présentes. https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
Si M5Stack -> M5Stick-C-Plus n'apparaît pas sous Outils -> Cartes, utilisez Outils -> Cartes -> Gestionnaire de cartes et recherchez M5Stack. Cela installera la prise en charge de la plupart des cartes M5Stack, y compris le Stick C Plus.
Assurez-vous que le modèle d'appareil correct (par exemple M5Stick-C, M5Stick-C-Plus ou M5Cardputer) est sélectionné dans le menu des cartes.
Installez les bibliothèques nécessaires. Dans Sketch -> Include Library -> Library Manager, recherchez et installez les bibliothèques suivantes et toutes les dépendances dont elles ont besoin :
M5StickCPlus, M5StickC ou M5Cardputer
IRRemoteESP8266
Dé-commentez la ligne #define
appropriée en haut de votre plate-forme (STICK_C, STICK_C_PLUS ou CARDPUTER)
Changer les schémas de partition. Tools
-> Partition Scheme
-> No OTA (Large APP)
- parfois cette option est étiquetée Huge APP
Configuration
Le code doit être compilé proprement et fonctionner sur un M5Stick C Plus prêt à l'emploi à partir de la branche principale ou d'une balise de version.
Décommentez uniquement la seule option #define
appropriée, sinon des erreurs du compilateur se produiront.
Si, pour une raison quelconque, l'écran passe de très sombre au niveau 0 à presque complètement lumineux au niveau 1 et que les niveaux de luminosité supplémentaires n'affectent rien, définissez la variable pct_brightness sur false.
Compiler et télécharger le projet
Installer la CLI Arduino
Ajouter l'index M5Stack au noyau Arduino
Ajouter des bibliothèques M5Stack
# Installer m5stack boardsarduino-cli core install m5stack:esp32 --additional-urls https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json --log-level warn --verbose# Installer bibliothèque requisearduino-cli lib install M5Cardputer --log-level warn --verbose arduino-cli lib install IRRemoteESP8266 --log-level warn --verbose# Compile sketcharduino-cli compile --fqbn m5stack:esp32:m5stack_cardputer -e --build-property build.partitions=huge_app --build-property upload.maximum_size= 3145728 ./m5stick-nemo.ino
Cela créera plusieurs binaires basés sur l'esquisse de partition, vous pouvez fusionner un seul binaire à l'aide esptool
Installer esptool - pip install -U esptool
esptool.py --chip esp32s3 merge_bin --output final.bin 0x0000 m5stick-nemo.ino.bootloader.bin 0x8000 m5stick-nemo.ino.partitions.bin 0x10000 m5stick-nemo.ino.bin
Vous pouvez maintenant flasher le firmware binaire fusionné en utilisant esptool
esptool.exe write_flash -z 0 final.bin
Installer Docker
Exécutez ./scripts/docker-build.sh
Exécutez ./scripts/flash.sh --device=
# Cela créera une image avec toutes les bibliothèques requises en fonction de la plate-forme configurée, et compilera, générera et fusionnera les binaires. # Par défaut, cela compilera pour le M5Cardputer dans les paramètres régionaux en-us, ./config/.env.M5Cardputer./ scripts/docker-build.sh # Si vous souhaitez sélectionner une configuration de build différente, vous pouvez la transmettre en tant que paramètre. Voir ./configs/ pour diverses configurations./scripts/docker-build.sh ./config/.env.M5Cardputer# Les fichiers binaires seront générés vers ./buildls ./build# Cela fera clignoter la sortie de construction de l'étape de construction, il réutilise l'image du conteneur de l'étape précédente.# Par défaut, cela sera compilé pour le M5Cardputer dans les paramètres régionaux en-us, ./config/.env.M5Cardputer./scripts/flash.sh --device=/dev/ttyusb0 # Si vous avez transmis une configuration de build différente, assurez-vous de la transmettre au script flash./scipts/flash.sh --device=/dev/ttyusb0 --build-config=./config/.env.M5Cardputer
Plusieurs fonctionnalités génèrent des informations de débogage sur le moniteur série. Utilisez la fonctionnalité Serial Monitor dans Arduino IDE ou M5Burner pour collecter ces informations. Il peut contenir des conseils utiles. Lors du dépôt d'un rapport de bogue, il est souvent utile d'inclure la sortie du moniteur série.
Réinitialisez l'EEPROM. Sur les modèles prenant en charge les paramètres EEPROM, utilisez « Effacer les paramètres » dans le menu des paramètres ou maintenez le bouton « Suivant » enfoncé (touche latérale sur les modèles StickC, languette ou flèche vers le bas sur le Cardputer) lors de la mise sous tension.
La LED IR de TV-B-Gone peut être observée à travers la caméra d'un téléphone intelligent, émettant un faisceau de lumière violet pâle. S'il semble être allumé en permanence, ou s'il ne clignote jamais pendant les opérations TV-B-Gone, quelque chose ne va pas. Signalez un bug. Il existe un problème connu avec TVBG qui ne fonctionne pas après avoir utilisé du spam Bluetooth ou du spam Wi-Fi aléatoire.
Essayez d'afficher les listes Wi-Fi de plusieurs appareils différents si vous pensez que le spam Wi-Fi ne fonctionne pas. Parfois, le gestionnaire de réseau Linux peut voir des réseaux que les téléphones intelligents ne peuvent pas voir. Veuillez inclure les résultats de ces tests si vous signalez des problèmes de spam Wi-Fi.
Apple a corrigé de nombreux éléments Bluetooth depuis l'été 2023. Si vous testez AppleJuice, essayez certains types d'appareils AppleTV, car ils ont tendance à être plus fiables car Apple ne filtre pas les signaux Bluetooth les plus faibles pour cette plate-forme.
Veuillez signaler les bogues via GitHub Issues. Ceux-ci sont plus faciles à suivre que les commentaires sur les publications sur les réseaux sociaux, les entrées M5Burner, etc. Si quelque chose ne fonctionne pas, veuillez inclure :
Version du micrologiciel
Comment vous l'avez installé (M5Burner, compilé vous-même, esptool.py)
Matériel
Plus précisément, quelles fonctionnalités et options ne fonctionnent pas
Comment avez-vous déterminé que cela ne fonctionnait pas et quels tests vous avez effectués. Incluez les modèles d'appareils et les systèmes d'exploitation avec lesquels vous avez testé, ainsi que toute erreur ou sortie pertinente de Serial Monitor, le cas échéant.
Si vous trouvez comment corriger un bug que vous avez identifié, les PR sont les bienvenus !
Les contributions sont les bienvenues.
Veuillez consulter les problèmes GitHub du projet. Il y a des suggestions de fonctionnalités et des bogues qui y sont signalés, et j'apprécierais les PR qui y répondent.
Lorsque vous soumettez une Pull Request, veuillez cibler la branche de développement. Le moyen le plus simple de procéder est de créer TOUTES les branches, ou de simplement créer une branche « develop » dans votre propre fork, puis d'utiliser GitHub pour synchroniser votre branche de développement.
Prenez note de la façon dont certains matériels (comme la LED et le RTC) sont définis et contrôlés dans le code et essayez de vous en tenir à ces modèles. Utilisez également les définitions de FGCOLOR, BGCOLOR, TEXT_SIZE* et l'alias DISP lors de la sortie d'éléments sur l'écran intégré.
N'hésitez pas à ajouter votre github au tableau des contributeurs dans le cadre de votre pull request.
Choses pour lesquelles j'aimerais avoir de l'aide :
Localisation/traductions améliorées du menu, pas seulement du HTML du portail NEMO.
Il a probablement besoin d'un nouveau fichier .h
Être configurable dans les paramètres et utiliser un octet eeprom pour enregistrer le paramètre
Utilisez gratuitement const
dans l'implémentation afin que les chaînes de localisation soient stockées uniquement dans le stockage flash et référencées directement à partir de celui-ci, au lieu d'utiliser beaucoup de SRAM.
Infrarouge
Une nouvelle « région » de TV-B-Gone qui regorge de codes IR supplémentaires qui peuvent allumer et éteindre les bandes LED RVB, les climatiseurs, les ventilateurs, les barres de son, etc.
Un moyen de convertir ou d'utiliser les codes IR flipper zéro à partir de la base de code de NEMO
Trouvez un moyen de lire et d'afficher le niveau de la batterie sur les modèles Cardputer et StickC-Plus2 dépourvus de PMU AXP192. Le code de la batterie dans la démo de l'usine Cardputer pourrait être un bon point de départ.
Désauthentification CIBLÉE sur un point d’accès spécifique uniquement. Les PR de spam Deauth seront rejetés.
Choses dans lesquelles je ne fusionnerai probablement pas :
Spam de désauthentification Wi-Fi en masse
Spam Bluetooth pouvant perturber les trackers de santé et de fitness, les montres intelligentes, etc.