Firmware para bromas de alta tecnología en dispositivos M5Stack ESP32
Logotipo de @unagironin
Como se anunció a principios de este año, M5Stick-NEMO ha sido archivado y ya no está en desarrollo activo. El proyecto superó todos mis objetivos personales y fue increíble ver a la comunidad unirse, entusiasmarse con el proyecto, contribuir a él e inspirarse en él.
En lo que a mí respecta, el proyecto llegó al límite de lo que la familia M5Stick es capaz de hacer para este tipo de trucos y bromas, sin agregar hardware externo como tarjetas SD, radiomódems, LED más grandes, módulos RFID u otras cosas. La duración de la batería también es subóptima para controlar estos periféricos externos. Muchas solicitudes de funciones giran en torno a la compatibilidad con estos dispositivos externos y no tengo los recursos ni el tiempo para agregarlas, pero la buena noticia es que otros han continuado con el espíritu con, honestamente, mejores funciones. Un proyecto muy prometedor es CatHack.
¡Hasta luego y gracias por todo el pescado!
NEMO inició un proyecto personal para ayudarme a aprender más sobre el desarrollo de ESP32 con Arduino IDE. Decidí replicar algunas bromas comunes y de moda que estaban recibiendo mucha atención en la comunidad tecnológica, como un desafío para mí y también para comprender mejor estos ataques.
NEMO lleva el nombre del pez pequeño, inteligente y testarudo de Buscando a Nemo. Este proyecto contrasta con otro dispositivo de alta tecnología asociado con ciertas criaturas marinas. Quería demostrar que hay muchas cosas que puedes hacer con un pequeño kit de desarrollo y algo de curiosidad. No me hago ilusiones de superar las capacidades de ningún dispositivo similar con este proyecto. Es sólo por diversión y por mi propia educación.
Se ajustó .github/workflow/compile.yml para compilar con la función DEAUTH.
Se agregó soporte para SONG en StickC Plus y Plus2
Se agregó un "Menú de ataque" al ver los detalles de un punto de acceso.
Clonar portal (crea un portal malvado con el mismo SSID del objetivo)
Ataque de desautenticación (transmite tramas de desautenticación a dispositivos conectados a este punto de acceso)
Deauth+Clone (Crea el portal malvado con el mismo SSID y envía marcos de desautenticación a ese AP)
Opción agregada en Configuración para montar/desmontar tarjeta SD cuando se usan dispositivos M5StickC
Se creó un nuevo archivo para manejar SPI/SD si no se usa CARDPUTER
SDCARD ahora está funcionando en M5StickC Plus2
ideas?
Puerto TV B-Gone (gracias al HAKRWATCH de MrArm) para apagar muchos televisores, proyectores y otros dispositivos controlados por infrarrojos
Spam de emparejamiento de dispositivos Bluetooth AppleJuice iOS
Envío de spam de notificaciones de dispositivos Bluetooth para SwiftPair (Windows) y Android
WiFi Spam: SSID divertidos, WiFi Rickrolling y un modo aleatorio que crea cientos de SSID con nombres aleatorios por minuto
Portal WiFi NEMO: un portal cautivo que intenta realizar ingeniería social en las credenciales de correo electrónico; guarda los nombres de usuario y las contraseñas en la tarjeta SD (si se inserta en un lector compatible)
Escáner SSID WiFi: muestra SSID de 2,4 GHz cercanos, obtiene información sobre ellos e incluso clona los SSID en NEMO Portal
Reloj digital de 24 horas ajustable por el usuario respaldado por el M5 Stick RTC para que mantenga la hora relativamente estable incluso en modo de suspensión profunda y batería baja.
Configuraciones respaldadas por EEPROM para rotación, brillo, atenuación automática y NEMO Portal SSID
Nivel de batería y créditos en el menú de configuración.
Hay tres controles principales:
Inicio: detiene el proceso actual y lo regresa al menú desde casi cualquier lugar en NEMO
Siguiente: mueve el cursor a la siguiente opción del menú. En los modos de función, esto generalmente detiene el proceso y lo regresa al menú anterior.
Seleccionar: activa la opción de menú actualmente seleccionada y activa la pantalla atenuada en los modos de función.
StickC y StickC-Plus
Encendido: Mantenga presionado el botón de encendido durante 6 segundos para apagar la unidad
Inicio: toque el botón de encendido (más cercano al puerto USB)
Siguiente: toca el botón lateral
Seleccionar: toque el botón M5 en la parte frontal de la unidad
computadora de tarjeta
Inicio: toque la tecla Esc/~/` o la tecla de flecha izquierda/,
Siguiente/Anterior: toque la flecha hacia abajo/. tecla y flecha arriba/; claves para navegar
Seleccionar: Toque la tecla Aceptar/Intro o la flecha derecha/? llave
En el modo NEMO Portal, NEMO activa un punto de acceso WiFi abierto llamado "Nemo Free WiFi" (configurable en portal.h) con DNS, DHCP y servidores web activados.
NEMO Portal ofrece una página de inicio de sesión falsa que pretende proporcionar acceso a Internet si inicia sesión.
Este es un ataque de ingeniería social y registrará el nombre de usuario y las contraseñas ingresadas en la página.
Desde los detalles de Wifi Scan, puede clonar un SSID existente de la lista de escaneo. Al salir del Portal NEMO se borrará el SSID de Evil Twin
Puede ver las credenciales capturadas conectándose al portal desde su propio dispositivo y navegando a http://172.0.0.1/creds
Puede configurar un SSID personalizado conectándose al portal desde su propio dispositivo y navegando a http://172.0.0.1/ssid
Si su dispositivo admite EEPROM para la configuración, el SSID personalizado que ingrese se guardará como predeterminado, incluso si está apagado.
Si su dispositivo tiene un lector de tarjetas SD con una tarjeta formateada con sistema de archivos FAT insertada, los nombres de usuario y las contraseñas se registrarán en nemo-portal-creds.txt en la tarjeta SD para que pueda examinarlos más tarde.
La compatibilidad con tarjetas SD solo está habilitada de forma predeterminada en la plataforma M5Stack Cardputer. Se puede habilitar en dispositivos M5Stick, pero se debe construir y conectar un lector de tarjetas SD al encabezado del pin del panel frontal.
El Portal NEMO es solo para uso en compromisos profesionales con un alcance válido de trabajo, fines educativos o de demostración. El almacenamiento, la venta o el uso de información personal sin consentimiento es ilegal. ?
Esta es la forma más sencilla de obtener NEMO
M5Stick C Plus Quick Start tiene enlaces a la aplicación M5Burner para Linux, MacOS y Windows. Esta es la herramienta oficial para instalar UIFlow y otro firmware oficial. Allí proporciono binarios actualizados para NEMO.
Lanzar M5Burner
Seleccione "StickC" en el menú de la izquierda (o StampS3 para Cardputer)
Utilice la búsqueda en la parte superior de la aplicación para buscar "NEMO". Mis compilaciones oficiales serán subidas por "4x0nn" y tendrán fotos.
Haga clic en Descargar
Haga clic en Grabar
Instale las herramientas ESP-IDF según la Guía de introducción de Espressif
Abra la herramienta CMD esp-idf (en Windows); en Mac o Linux, esp-idf.py y esptool.py deben estar en la ruta del sistema.
esptool.py --port COMPORT -b 115200 write_flash -z 0x0 M5Nemo-VERSION.bin
El puerto puede ser un puerto COM, por ejemplo, COM4, COM11 en Windows. En Mac y Linux normalmente estará en /dev como /dev/ttyUSB0, /dev/ttyACM0 o /dev/cu.usbserial-3
M5Nemo-VERSION.bin debe ser una versión que haya descargado desde una versión de GitHub, preferiblemente la última disponible.
Si desea personalizar NEMO o contribuir al proyecto, debe estar familiarizado con la creación de NEMO desde el código fuente.
Instale el IDE de Arduino. He utilizado Arduino 1.8 en Linux y Windows, y Arduino 2.2 en Windows con éxito.
Instale las placas M5Stack para Arduino IDE: en Archivo -> Preferencias, pegue esta URL en el cuadro de texto "URL del Administrador de placas". Utilice comas entre las URL si ya hay URL presentes. https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
Si M5Stack -> M5Stick-C-Plus no aparece en Herramientas -> Tableros, use Herramientas -> Tableros -> Administrador de tableros y busque M5Stack. Esto instalará soporte para la mayoría de las placas M5Stack, incluido el Stick C Plus.
Asegúrese de que esté seleccionado el modelo de dispositivo correcto (por ejemplo, M5Stick-C, M5Stick-C-Plus o M5Cardputer) en el menú de placas.
Instale las bibliotecas necesarias. En Sketch -> Incluir biblioteca -> Administrador de bibliotecas, busque e instale las siguientes bibliotecas y las dependencias que requieran:
M5StickCPlus, M5StickC o M5Cardputer
IRRemotoESP8266
Quite el comentario de la línea #define
apropiada cerca de la parte superior para su plataforma (STICK_C, STICK_C_PLUS o CARDPUTER)
Cambiar esquemas de partición. Tools
-> Partition Scheme
-> No OTA (Large APP)
: a veces esta opción está etiquetada como Huge APP
Configuración
El código debe compilarse limpiamente y funcionar en un M5Stick C Plus listo para usar desde la rama maestra o una etiqueta de lanzamiento.
Descomente solo la opción #define
apropiada o se producirán errores del compilador.
Si por alguna razón la pantalla pasa de muy tenue en el nivel 0 a casi completamente brillante en el nivel 1 y los niveles de brillo adicionales no afectan nada, configure la variable pct_brightness en falso.
Compilar y cargar el proyecto.
Instalar Arduino CLI
Agregue el índice M5Stack al núcleo Arduino
Agregar bibliotecas M5Stack
# Instalar 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# Instalar biblioteca requeridaarduino-cli lib instalar M5Cardputer --advertencia de nivel de registro --verbose arduino-cli lib instalar IRRemoteESP8266 --log-level warn --verbose# Compilar sketcharduino-cli compilar --fqbn m5stack:esp32:m5stack_cardputer -e --build-property build.partitions=huge_app --build-property upload.maximum_size= 3145728 ./m5stick-nemo.ino
Esto creará múltiples binarios basados en el boceto de partición, puede fusionar un solo binario usando esptool
Instalar 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
Ahora puede actualizar el firmware binario fusionado usando esptool
esptool.exe write_flash -z 0 final.bin
Instalar ventana acoplable
Ejecute ./scripts/docker-build.sh
Ejecute ./scripts/flash.sh --device=
# Esto creará una imagen con todas las bibliotecas necesarias según la plataforma configurada, y compilará, generará y fusionará archivos binarios. # De forma predeterminada, esto se compilará para M5Cardputer en la configuración regional en-us, ./config/.env.M5Cardputer./ scripts/docker-build.sh # Si desea seleccionar una configuración de compilación diferente, puede pasarla como parámetro. Consulte ./configs/ para varias configuraciones./scripts/docker-build.sh ./config/.env.M5Cardputer# Los archivos binarios se enviarán a ./buildls ./build# Esto mostrará el resultado de la compilación desde el paso de compilación. reutiliza la imagen del contenedor del paso anterior.# De forma predeterminada, esto se compilará para M5Cardputer en la configuración regional en-us, ./config/.env.M5Cardputer./scripts/flash.sh --device=/dev/ttyusb0 # Si pasó una configuración de compilación diferente, asegúrese de pasarla al script flash./scipts/flash.sh --device=/dev/ttyusb0 --build-config=./config/.env.M5Cardputer
Varias funciones envían información de depuración al monitor serie. Utilice la función Serial Monitor en Arduino IDE o M5Burner para recopilar esta información. Puede tener sugerencias útiles. Al presentar un informe de error, suele ser útil incluir la salida del monitor en serie.
Reinicie la EEPROM. En los modelos compatibles con la configuración de EEPROM, use "Borrar configuración" en el menú de configuración o mantenga presionado el botón "Siguiente" (tecla lateral en los modelos StickC, Tab o Flecha hacia abajo en Cardputer) mientras enciende.
El LED IR de TV-B-Gone se puede observar a través de la cámara de un teléfono inteligente y emite un haz de luz de color púrpura pálido. Si parece estar encendido constantemente, o si nunca parpadea durante las operaciones de TV-B-Gone, algo anda mal. Informar un error. Hay un problema conocido por el cual TVBG no funciona después de usar spam Bluetooth o spam wifi aleatorio.
Intente ver listas de wifi desde varios dispositivos diferentes si sospecha que el spam wifi no funciona. A veces, el administrador de red de Linux puede ver redes que los teléfonos inteligentes no pueden ver. Incluya los resultados de esta prueba si informa problemas de spam wifi.
Apple ha parcheado muchas cosas de Bluetooth desde el verano de 2023. Si prueba AppleJuice, pruebe algunos de los tipos de dispositivos AppleTV, ya que tienden a ser más confiables debido a que Apple no filtra señales de Bluetooth más débiles para esa plataforma.
Informe errores a través de Problemas de GitHub. Estos son más fáciles de rastrear que los comentarios en publicaciones de redes sociales, entradas de M5Burner, etc. Si algo no funciona, incluya:
Versión de firmware
Cómo lo instaló (M5Burner, compiló usted mismo, esptool.py)
Hardware
Específicamente qué funciones y opciones no funcionan
Cómo determinó que no funciona y qué pruebas realizó. Incluya los modelos de dispositivos y sistemas operativos con los que realizó la prueba, y cualquier error o resultado relevante de Serial Monitor, si corresponde.
Si descubre cómo solucionar un error que identificó, ¡los RP son bienvenidos!
Las contribuciones son bienvenidas.
Consulte los problemas de GitHub del proyecto. Hay sugerencias de funciones y errores informados allí, y agradecería las relaciones públicas que los aborden.
Al enviar una solicitud de extracción, diríjase a la rama de desarrollo. La forma más sencilla de hacer esto es bifurcar TODAS las ramas, o simplemente crear una rama de "desarrollo" en su propia bifurcación y luego usar GitHub para sincronizar su rama de desarrollo.
Tome nota de cómo se definen y controlan ciertos hardware (como el LED y RTC) en el código e intente ceñirse a esos patrones. Además, utilice las definiciones para FGCOLOR, BGCOLOR, TEXT_SIZE* y el alias DISP cuando envíe elementos a la pantalla incorporada.
No dudes en agregar tu github a la matriz de contribuyentes como parte de tu solicitud de extracción.
Cosas sobre las que me gustaría recibir ayuda:
Localización/traducciones mejoradas del menú, no solo HTML del Portal NEMO.
Probablemente necesite un nuevo archivo .h
Ser configurable en la configuración y usar un byte de eeprom para guardar la configuración.
Haga un uso gratuito de const
en la implementación para que las cadenas de localización se almacenen solo en el almacenamiento flash y se haga referencia a ellas directamente desde él, en lugar de usar mucha SRAM.
Infrarrojo
Una nueva "Región" de TV-B-Gone que está llena de códigos IR adicionales que pueden encender y apagar tiras de LED RGB, aires acondicionados, ventiladores, barras de sonido y similares.
Una forma de convertir o utilizar códigos IR flipper zero desde el código base de NEMO
Encuentre una manera de leer y mostrar el nivel de la batería en los modelos Cardputer y StickC-Plus2 que carecen de una PMU AXP192. El código de batería en la demostración de fábrica de Cardputer podría ser un buen lugar para comenzar.
DESAUTENTICACIÓN DIRIGIDA únicamente contra un punto de acceso específico. Se rechazarán las relaciones públicas de spam de Deauth.
Cosas en las que probablemente no me fusionaré:
Spam masivo de desautenticación wifi
Spam de Bluetooth que potencialmente afecta a los rastreadores de salud y fitness, relojes inteligentes, etc.