Un tablero que entraba en modo de actualización de firmware por accidente y que desde ahí pasaba a modo operativo sin pedir el PIN de seguridad. Ese defecto es el que llevó a Ben a hacer ingeniería inversa del protocolo de su scooter Egret GT y a reescribirle el firmware en Rust, un trabajo que documentó paso a paso. Su explicación fue corta.
"...porque tengo que romper... todo lo que tengo..."
Lo que apareció en el Bluetooth
El primer material salió de la aplicación móvil. Capturar tráfico Bluetooth es relativamente fácil y analizar el código de una aplicación móvil resulta más o menos directo, y de ahí salieron dos hallazgos. La aplicación maneja datos que el tablero nunca muestra en pantalla, y varias cosas se envían de vuelta a la casa matriz etiquetadas con el identificador único del scooter. Ese segundo punto fue otra razón para vaciar el firmware original.
¿Por dónde se entra al bus CAN?
Por el puerto USB-C. El scooter usa bus CAN internamente, así que Ben sacó el osciloscopio y armó un decodificador CAN casero. La sorpresa fue encontrar el bus accesible en los pines de datos del USB-C, un puerto que oficialmente solo sirve para cargar el teléfono. Queda la duda de qué entiende un teléfono cuando le llegan esas señales ajenas mientras se está cargando.
Las actualizaciones de firmware vienen en al menos tres sabores, el del tablero, el del panel de control y el del controlador principal. Entender ese proceso completo fue la pieza que después permitió instalar el firmware nuevo.
Para quién sirve el material
Si tienes un scooter parecido, la publicación es una mina. Si no lo tienes, sigue siendo un desglose detallado de un flujo de ingeniería inversa, con herramientas y técnicas que se aplican a cualquier otro proyecto. La alternativa más simple, cuando la idea es seguir usando el vehículo y no estudiarlo, es reemplazarle el cerebro por uno propio. Y para quien parte de cero en el tema hay decenas de publicaciones de Hackaday con lo básico.




