Firmware für High-Tech-Streiche auf M5Stack ESP32-Geräten
Logo von @unagironin
Wie Anfang des Jahres angekündigt, wurde M5Stick-NEMO archiviert und befindet sich nicht mehr in der aktiven Entwicklung. Das Projekt hat alle meine persönlichen Ziele übertroffen und es war erstaunlich zu sehen, wie die Community zusammenkam, sich für das Projekt begeisterte, dazu beitrug und sich davon inspirieren ließ.
Meiner Meinung nach hat das Projekt die Grenze dessen erreicht, was die M5Stick-Familie für solche Tricks und Streiche leisten kann, ohne externe Hardware wie SD-Karten, Funkmodems, größere LEDs, RFID-Module oder andere Dinge hinzuzufügen. Auch die Akkulaufzeit ist für den Betrieb dieser externen Peripheriegeräte nicht optimal. Viele Funktionsanfragen drehen sich um die Unterstützung dieser externen Geräte, und ich habe weder die Ressourcen noch die Zeit, diese hinzuzufügen, aber die gute Nachricht ist, dass andere diesen Geist mit, ehrlich gesagt, besseren Funktionen weitergeführt haben. Ein vielversprechendes Projekt ist CatHack.
Bis dann und vielen Dank für all die Fische!
NEMO hat ein persönliches Projekt gestartet, um mir zu helfen, mehr über die ESP32-Entwicklung mit der Arduino IDE zu erfahren. Als Herausforderung für mich selbst und um diese Angriffe besser zu verstehen, beschloss ich, ein paar gängige, trendige Streiche nachzuahmen, die in der Tech-Community viel Beachtung fanden.
NEMO ist nach dem kleinen, klugen und störrischen Fisch in „Findet Nemo“ benannt. Dieses Projekt steht im Gegensatz zu einem anderen High-Tech-Gerät, das mit bestimmten Meeresbewohnern in Verbindung gebracht wird. Ich wollte beweisen, dass man mit einem kleinen Entwicklungskit und etwas Neugier eine Menge Dinge machen kann. Ich hege keine Illusionen darüber, mit diesem Projekt die Fähigkeiten eines ähnlichen Geräts zu übertreffen. Es dient nur dem Spaß und meiner eigenen Ausbildung.
.github/workflow/compile.yml wurde angepasst, um mit der DEAUTH-Funktion zu kompilieren.
Unterstützung für SONG auf StickC Plus und Plus2 hinzugefügt
Beim Anzeigen von Details eines Access Points wurde ein „Angriffsmenü“ hinzugefügt
Klonportal (Erstellt ein böses Portal mit derselben SSID des Ziels)
Deauth-Angriff (sendet Deauthentifizierungs-Frames an Geräte, die mit diesem Access Point verbunden sind)
Deauth+Clone (Erstellt das böse Portal mit derselben SSID und sendet Deauthentifizierungsframes an diesen AP)
Option in den Einstellungen zum Mounten/Unmounten der SD-Karte hinzugefügt, wenn M5StickC-Geräte verwendet werden
Neue Datei zur Handhabung von SPI/SD erstellt, wenn CARDPUTER nicht verwendet wird
SDCARD arbeitet jetzt an M5StickC Plus2
Ideen?
TV B-Gone-Anschluss (dank MrArms HAKRWATCH) zum Ausschalten vieler infrarotgesteuerter Fernseher, Projektoren und anderer Geräte
AppleJuice iOS Bluetooth-Geräte-Kopplungs-Spam
Bluetooth-Gerätebenachrichtigungs-Spamming für SwiftPair (Windows) und Android
WLAN-Spam – Lustige SSIDs, WLAN-Rickrolling und ein Zufallsmodus, der Hunderte von zufällig benannten SSIDs pro Minute erstellt
WiFi NEMO Portal – Ein Captive-Portal, das versucht, E-Mail-Anmeldeinformationen per Social Engineering zu manipulieren – speichert Benutzernamen und Passwörter auf der SD-Karte (sofern sie in ein unterstütztes Lesegerät eingelegt ist).
WLAN-SSID-Scanner – Zeigen Sie 2,4-GHz-SSIDs in der Nähe an, erhalten Sie Informationen darüber und klonen Sie die SSIDs sogar im NEMO-Portal
Vom Benutzer einstellbare 24-Stunden-Digitaluhr mit Unterstützung des M5 Stick RTC, sodass die Uhrzeit auch im Tiefschlaf und bei niedrigem Batteriestand relativ stabil bleibt
EEPROM-gestützte Einstellungen für Drehung, Helligkeit, automatisches Dimmen und NEMO Portal SSID
Akkustand und Guthaben im Einstellungsmenü
Es gibt drei Hauptsteuerungen:
Home – Stoppt den aktuellen Vorgang und bringt Sie von fast überall in NEMO zum Menü zurück
Weiter – Bewegt den Cursor zur nächsten Menüoption. Im Funktionsmodus wird dadurch normalerweise der Vorgang gestoppt und Sie gelangen zum vorherigen Menü zurück.
Auswählen – Aktiviert die aktuell ausgewählte Menüoption und aktiviert den abgeblendeten Bildschirm in den Funktionsmodi
StickC und StickC-Plus
Stromversorgung: Halten Sie den Netzschalter 6 Sekunden lang gedrückt, um das Gerät auszuschalten
Home: Tippen Sie auf den Netzschalter (am nächsten zum USB-Anschluss).
Als nächstes: Tippen Sie auf die Seitentaste
Auswählen: Tippen Sie auf die M5-Taste an der Vorderseite des Geräts
Kartencomputer
Home: Tippen Sie auf die Esc/~/`-Taste oder die Linkspfeiltaste/,
Weiter/Zurück: Tippen Sie auf den Abwärtspfeil/. Taste und Pfeil nach oben/; Tasten zum Navigieren
Wählen Sie: Tippen Sie auf die OK-/Eingabetaste oder auf den Rechtspfeil/? Schlüssel
Im NEMO-Portalmodus aktiviert NEMO einen offenen WLAN-Hotspot mit dem Namen „Nemo Free WiFi“ (konfigurierbar in portal.h) mit aktivierten DNS-, DHCP- und Webservern.
Das NEMO-Portal stellt eine gefälschte Anmeldeseite bereit, die vorgibt, beim Anmelden einen Internetzugang bereitzustellen.
Hierbei handelt es sich um einen Social-Engineering-Angriff, bei dem der auf der Seite eingegebene Benutzername und die Passwörter protokolliert werden.
In den WLAN-Scan-Details können Sie eine vorhandene SSID aus der Scan-Liste klonen. Durch das Verlassen des NEMO-Portals wird die Evil Twin-SSID gelöscht
Sie können erfasste Anmeldeinformationen anzeigen, indem Sie von Ihrem eigenen Gerät aus eine Verbindung zum Portal herstellen und zu http://172.0.0.1/creds navigieren
Sie können eine benutzerdefinierte SSID festlegen, indem Sie von Ihrem eigenen Gerät aus eine Verbindung zum Portal herstellen und zu http://172.0.0.1/ssid navigieren
Wenn Ihr Gerät EEPROM für Einstellungen unterstützt, wird die von Ihnen eingegebene benutzerdefinierte SSID als Standard gespeichert, auch wenn es ausgeschaltet ist.
Wenn Ihr Gerät über einen SD-Kartenleser mit eingesetzter FAT-Dateisystem-formatierter Karte verfügt, werden die Benutzernamen und Passwörter in nemo-portal-creds.txt auf der SD-Karte protokolliert, damit Sie sie später einsehen können.
Die SD-Kartenunterstützung ist standardmäßig nur auf der M5Stack Cardputer-Plattform aktiviert. Es kann auf M5Stick-Geräten aktiviert werden, es muss jedoch ein SD-Kartenleser gebaut und an der Stiftleiste auf der Vorderseite angebracht werden.
Das NEMO-Portal darf nur für berufliche Einsätze mit einem gültigen Arbeitsumfang, zu Bildungs- oder Demonstrationszwecken verwendet werden. Die Speicherung, der Verkauf oder die Nutzung personenbezogener Daten ohne Zustimmung verstößt gegen das Gesetz. ?
Dies ist der absolut einfachste Weg, an NEMO zu kommen
M5Stick C Plus Quick Start enthält Links zur M5Burner-App für Linux, MacOS und Windows. Dies ist das offizielle Tool zum Installieren von UIFlow und anderer offizieller Firmware. Ich stelle dort aktuelle Binärdateien für NEMO bereit.
Starten Sie M5Burner
Wählen Sie „StickC“ aus dem Menü links (oder StampS3 für Cardputer)
Verwenden Sie die Suche oben in der App, um nach „NEMO“ zu suchen. Meine offiziellen Builds werden von „4x0nn“ hochgeladen und mit Fotos versehen.
Klicken Sie auf Herunterladen
Klicken Sie auf Brennen
Installieren Sie die ESP-IDF-Tools gemäß der Espressif-Einführungsanleitung
Öffnen Sie das CMD-Tool esp-idf (unter Windows) – auf Mac oder Linux sollten sich esp-idf.py und esptool.py im Systempfad befinden.
esptool.py --port COMPORT -b 115200 write_flash -z 0x0 M5Nemo-VERSION.bin
Der Port kann ein COM-Port sein, z. B. COM4, COM11 unter Windows. Auf Mac und Linux befindet es sich normalerweise in /dev, z. B. /dev/ttyUSB0, /dev/ttyACM0 oder /dev/cu.usbserial-3
M5Nemo-VERSION.bin sollte eine Version sein, die Sie von einer GitHub-Version heruntergeladen haben – vorzugsweise die neueste verfügbare Version.
Wenn Sie NEMO anpassen oder zum Projekt beitragen möchten, sollten Sie mit der Erstellung von NEMO aus dem Quellcode vertraut sein.
Installieren Sie die Arduino IDE. Ich habe Arduino 1.8 unter Linux und Windows und Arduino 2.2 unter Windows erfolgreich verwendet.
Installieren Sie die M5Stack-Boards für die Arduino IDE: Fügen Sie diese URL unter Datei -> Einstellungen in das Textfeld „URLs des Board-Managers“ ein. Verwenden Sie Kommas zwischen URLs, wenn bereits URLs vorhanden sind. https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
Wenn M5Stack -> M5Stick-C-Plus nicht unter Tools -> Boards angezeigt wird, verwenden Sie Tools -> Boards -> Boards Manager und suchen Sie nach M5Stack. Dadurch wird die Unterstützung für die meisten M5Stack-Boards einschließlich des Stick C Plus installiert.
Stellen Sie sicher, dass im Board-Menü das richtige Gerätemodell (z. B. M5Stick-C, M5Stick-C-Plus oder M5Cardputer) ausgewählt ist.
Installieren Sie die erforderlichen Bibliotheken. Suchen Sie in Sketch -> Bibliothek einschließen -> Bibliotheksmanager nach den folgenden Bibliotheken und allen erforderlichen Abhängigkeiten und installieren Sie sie:
M5StickCPlus, M5StickC oder M5Cardputer
IRRemoteESP8266
Entkommentieren Sie die entsprechende #define
Zeile oben für Ihre Plattform (STICK_C, STICK_C_PLUS oder CARDPUTER).
Partitionsschemata wechseln. Tools
-> Partition Scheme
-> No OTA (Large APP)
– manchmal wird diese Option Huge APP
bezeichnet
Konfiguration
Der Code sollte sauber kompiliert werden und sofort auf einem M5Stick C Plus aus dem Master-Zweig oder einem Release-Tag funktionieren.
Kommentieren Sie nur die entsprechende #define
Option aus, sonst treten Compilerfehler auf.
Wenn der Bildschirm aus irgendeinem Grund von sehr dunkel auf Stufe 0 auf fast vollständig hell auf Stufe 1 springt und weitere Helligkeitsstufen keine Auswirkung haben, setzen Sie die Variable pct_brightness auf „false“.
Kompilieren Sie das Projekt und laden Sie es hoch
Installieren Sie die Arduino-CLI
Fügen Sie den M5Stack-Index zum Arduino Core hinzu
Fügen Sie M5Stack-Bibliotheken hinzu
# Installieren Sie 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# Installieren erforderliche Bibliothekarduino-cli lib install M5Cardputer --log-level warn --verbose arduino-cli lib install IRRemoteESP8266 --log-level warn --verbose# Sketch kompilierenarduino-cli kompilieren --fqbn m5stack:esp32:m5stack_cardputer -e --build-property build.partitions=huge_app --build-property upload.maximum_size= 3145728 ./m5stick-nemo.ino
Dadurch werden mehrere Binärdateien basierend auf der Partitionsskizze erstellt. Sie können eine einzelne Binärdatei mit esptool
zusammenführen
Installieren Sie 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
Sie können die zusammengeführte Binär-Firmware jetzt mit esptool
flashen
esptool.exe write_flash -z 0 final.bin
Installieren Sie Docker
Führen Sie ./scripts/docker-build.sh
aus
Führen Sie ./scripts/flash.sh --device=
aus
# Dadurch wird ein Image mit allen erforderlichen Bibliotheken basierend auf der konfigurierten Plattform erstellt und Binärdateien werden kompiliert, ausgegeben und zusammengeführt. # Standardmäßig wird dies für den M5Cardputer im en-us-Gebietsschema ./config/.env.M5Cardputer kompiliert./ scripts/docker-build.sh # Wenn Sie eine andere Build-Konfiguration auswählen möchten, können Sie diese als Parameter übergeben. Siehe ./configs/ für verschiedene Konfigurationen./scripts/docker-build.sh ./config/.env.M5Cardputer# Binärdateien werden an ./buildls ausgegeben./build# Dadurch wird die Build-Ausgabe aus dem Build-Schritt geflasht. Es verwendet das Container-Image aus dem vorherigen Schritt wieder.# Standardmäßig wird dies für den M5Cardputer im en-us-Gebietsschema kompiliert, ./config/.env.M5Cardputer./scripts/flash.sh --device=/dev/ttyusb0 # Wenn Sie eine andere Build-Konfiguration übergeben haben, stellen Sie sicher, dass Sie diese an das Flash-Skript weitergeben./scipts/flash.sh --device=/dev/ttyusb0 --build-config=./config/.env.M5Cardputer
Mehrere Funktionen geben Debugging-Informationen an den seriellen Monitor aus. Verwenden Sie die Serial Monitor-Funktion in Arduino IDE oder M5Burner, um diese Informationen zu sammeln. Es könnte nützliche Hinweise enthalten. Beim Einreichen eines Fehlerberichts ist es oft hilfreich, die Ausgabe des seriellen Monitors einzubeziehen.
Setzen Sie das EEPROM zurück. Verwenden Sie bei Modellen mit Unterstützung für EEPROM-Einstellungen die Option „Einstellungen löschen“ im Einstellungsmenü oder halten Sie beim Einschalten die Taste „Weiter“ (Seitentaste bei StickC-Modellen, Tabulatortaste oder Abwärtspfeil bei Cardputer) gedrückt.
Die IR-LED von TV-B-Gone kann durch eine Smartphone-Kamera beobachtet werden und strahlt einen blassvioletten Lichtstrahl aus. Wenn es während des TV-B-Gone-Betriebs ständig zu leuchten scheint oder überhaupt nicht blinkt, stimmt etwas nicht. Melden Sie einen Fehler. Es gibt ein bekanntes Problem, bei dem TVBG nach der Verwendung von Bluetooth-Spam oder zufälligem WLAN-Spam nicht funktioniert.
Versuchen Sie, WLAN-Listen auf mehreren verschiedenen Geräten anzuzeigen, wenn Sie vermuten, dass WLAN-Spam nicht funktioniert. Manchmal kann der Linux-Netzwerkmanager Netzwerke erkennen, die Smartphones nicht erkennen können. Bitte geben Sie die Ergebnisse dieser Tests an, wenn Sie WLAN-Spam-Probleme melden.
Apple hat seit Sommer 2023 viele Bluetooth-Probleme behoben. Wenn Sie AppleJuice testen, probieren Sie einige der AppleTV-Gerätetypen aus, da diese tendenziell zuverlässiger sind, da Apple schwächere Bluetooth-Signale für diese Plattform nicht herausfiltert.
Bitte melden Sie Fehler über GitHub Issues. Diese sind einfacher zu verfolgen als Kommentare zu Social-Media-Beiträgen, M5Burner-Einträgen usw. Wenn etwas nicht funktioniert, geben Sie bitte Folgendes an:
Firmware-Version
Wie Sie es installiert haben (M5Burner, selbst kompiliert, esptool.py)
Hardware
Konkret: Welche Funktionen und Optionen funktionieren nicht?
Wie Sie festgestellt haben, dass es nicht funktioniert, und welche Tests Sie durchgeführt haben. Geben Sie Gerätemodelle und Betriebssysteme an, mit denen Sie getestet haben, sowie ggf. Fehler oder relevante Ausgaben von Serial Monitor.
Wenn Sie herausfinden, wie Sie einen von Ihnen identifizierten Fehler beheben können, sind PRs willkommen!
Beiträge sind willkommen.
Bitte schauen Sie sich die GitHub-Probleme für das Projekt an. Dort werden Funktionsvorschläge und Fehler gemeldet, und ich würde mich über PRs freuen, die sich damit befassen.
Wenn Sie eine Pull-Anfrage einreichen, zielen Sie bitte auf den Entwicklungszweig. Der einfachste Weg, dies zu tun, besteht darin, ALLE Zweige zu forken oder einfach einen „Develop“-Zweig in Ihrem eigenen Fork zu erstellen und dann GitHub zu verwenden, um Ihren Entwicklungszweig zu synchronisieren.
Beachten Sie, wie bestimmte Hardware (wie LED und RTC) im Code definiert und gesteuert wird, und versuchen Sie, sich an diese Muster zu halten. Verwenden Sie außerdem die Definitionen für FGCOLOR, BGCOLOR, TEXT_SIZE* und den DISP-Alias, wenn Sie Dinge auf der integrierten Anzeige ausgeben.
Fühlen Sie sich frei, Ihren Github als Teil Ihrer Pull-Anfrage zum Mitwirkenden-Array hinzuzufügen.
Dinge, bei denen ich Hilfe benötige:
Verbesserte Lokalisierung/Übersetzungen des Menüs, nicht nur des NEMO-Portal-HTML.
Benötigt wahrscheinlich eine neue .h-Datei
Seien Sie in den Einstellungen konfigurierbar und verwenden Sie ein Eeprom-Byte, um die Einstellung zu speichern
Nutzen Sie const
in der Implementierung unentgeltlich, sodass Lokalisierungszeichenfolgen nur im Flash-Speicher gespeichert und direkt von dort aus referenziert werden, anstatt viel SRAM zu verwenden.
Infrarot
Eine neue „Region“ von TV-B-Gone voller zusätzlicher IR-Codes, mit denen RGB-LED-Streifen, Klimaanlagen, Lüfter, Soundbars und dergleichen ein- und ausgeschaltet werden können
Eine Möglichkeit, Flipper-Zero-IR-Codes aus der Codebasis von NEMO zu konvertieren oder zu verwenden
Finden Sie heraus, wie Sie den Batteriestand bei den Cardputer- und StickC-Plus2-Modellen ohne AXP192-PMU ablesen und anzeigen können. Der Batteriecode in der Cardputer-Werksdemo könnte ein guter Ausgangspunkt sein.
GEZIELTE Deauthentifizierung nur gegenüber einem bestimmten Zugriffspunkt. Deauth-Spamming-PRs werden abgelehnt.
Dinge, in die ich wahrscheinlich nicht eintauchen werde:
Massenhafter WLAN-Deauthentifizierungs-Spamming
Bluetooth-Spam, der möglicherweise Gesundheits- und Fitness-Tracker, Smartwatches usw. stört.