El puerto escondido donde puedes hacer lo que quieras con un router, incluso destruirlo

Los sistemas Linux suelen estar presentes en muchos aparatos, y aunque hablamos de routers, mucho de esto se aplica a cámaras de seguridad, alarmas wifi, incluso a microcontroladores.

Si uno quiere programar o armar uno, ¿como nos comunicamos? ¿Cómo le instalas el firmware? Si algo falla, ¿cómo rescatas el aparato?

Por una entrada serial, o un puerto UART, etc. (ambas cosas son prácticamente lo mismo)

Si nuestro Linux tiene un problema, nos podemos conectar a una terminal para arreglarlo si queremos. De la misma manera los routers y demás aparatos tienen un puerto serial, donde podemos acceder a una terminal.

Imagen ilustrativa.

Esta funciona gracias al bootloader, que es código que corre apenas inicia el router. Ese código enciende la placa y hace alguna verificación del estado de lo más esencial, que sería la ROM y la RAM. Luego, si hay un sistema Linux, lo inicia.

Cuando Linux no puede iniciar

A veces el sistema operativo dentro del router se rompe. Quizás una actualización falló, y ahora el equipo no puede iniciar.

El bootloader más común, U-Boot, puede ayudarnos. Con una combinación de teclas (Escape, el número 4, etc.) podemos detener el boot y nos da acceso a una línea de comandos. Desde ahí se puede:

  • Cargar un sistema operativo a la RAM desde la PC
  • Arrancar el sistema desde ahí mismo
  • Copiar el sistema a la memoria Flash
  • Analizar partes de la memoria (RAM y ROM)

En el caso de la primera fotografía, bloqueé sin querer OpenWrt por una mala configuración (perdí una clave SSH privada) y no pude ingresar más, ya que había «hardenizado» el router para evitar intrusiones y los métodos de reseteo no funcionaban. Al final gracias a UART desarmé el aparato, y desde el modo serial pude resetear el router por completo.

Mucho hardware que se cree dañado puede arreglarse así 🙂