Primer paso. Comprobar que tenemos un router válido.
El fin del proceso es retirar el router del operador, Pepephone en este caso, con lo cual necesitaremos un router que sea capaz de negociar esta conexión. La forma más rápida de probar esto es poner el ZTE F680 en modo bridge y probar nuestro router.
Para esto, accedemos a la interfaz web usando 1234/1234 (es un usuario limitado, luego lo veremos), vamos a Network > LAN > DHCP Port Service y configuramos LAN1 en modo WAN (nos quedaremos sin internet).
Conectamos el WAN de nuestro router con LAN1 del ZTE F680, y configuramos VLAN ID 20, con 802.1Q tagging activado (es necesario).
Si este paso funciona, nuestro router cogerá IP pública y ya tendremos conexión a internet. También puede ser un buen momento para pedir a Pepephone que nos saque del CG-NAT en caso de necesitarlo.
Segundo paso. Acceder al ZTE F680.
Si queremos poner nuestra propia ONT, lo que necesitaremos es sacar el password del router ZTE F680. Con el paso de los upgrades, se han ido reparando las vulnerabilidades que hacían de este un paso fácil, así que puede darnos un poco de guerra.
Primero tenemos que hacernos con una memoria USB y formatearla como NTFS. Un vez hecho esto, creamos un enlace simbólico dentro del pendrive, como este
# ln -s /var/samba/lib/smb.conf .
También necesitamos poner busybox en el pendrive, asegurándonos bajar la versión para la arquitectura correcta desde el siguiente enlace (mips en mi caso, pero todo indica que también podría ser armv7l)
https://busybox.net/downloads/binaries/1.21.1/
# wget https://busybox.net/downloads/binaries/1.21.1/busybox-mips # cp busybox-mips /mnt/pendrive/busybox # cp busybox-mips /mnt/pendrive/sh
Conectamos el USB al router, y desde el interfaz nos aseguramos de tener activado SAMBA, y también de que el USB está montado. Una vez que esté correcto, nos vamos a Windows y accedemos a \\192.168.1.1 desde el explorador de ficheros. Desde aquí accederemos a nuestra memoria USB, y como tiene un enlace simbólico al fichero de config de SAMBA, podremos modificarlo al gusto.
[global] guest account = root deadtime = 5 log level = 0 server string = Samba Server security = share load printers = no workgroup = workgroup short preserve case = yes preserve case = yes netbios name = smbshare preexec = /mnt/usb1_1/busybox telnetd -b 192.168.1.1:27 -l /mnt/usb1_1/sh
El truco aquí es que podemos ejecutar cosas desde el preexec de los shares de samba (sin necesidad de reiniciar el router, simplemente accediendo a ese share concreto). Con la configuración de arriba abriremos un telnet en el puerto 27 del router que nos permitirá acceder como root.
Fuente : https://blog.eth1.es/2017/02/18/desbloqueando-el-router-zte-f680/
Tercer paso. Conseguir la contraseña GPON.
Una vez dentro, podremos ejecutar consultas contra la base de datos del router. Esta parecía ser la forma de sacar las credenciales que buscamos, pero en mi caso, está parcheada.
# sendcmd 1 DB p GponCfg
Otra opción sería ejecutarla desde preexec de samba y dirigir la salida hacia un fichero en nuestro USB
preexec = sendcmd 1 DB p GponCfg > /mnt/usb1_1/creds.txt
Lamentablemente, en mi caso las contraseñas aparecen cambiadas por asteriscos. Activar el acceso de admin al interfaz web tampoco parece ser la solución, ya que tampoco están visibles.
<Tbl name="GPONCFG" RowCount="1">
<Row No="0">
<DM name="ViewName" val="IGD.GPON" AccessAttr="0"/>
<DM name="Vendor_ID" val="******" AccessAttr="0"/>
<DM name="Vendor_Specific" val="******" AccessAttr="0"/>
<DM name="Loid" val="******" AccessAttr="0"/>
<DM name="LoidPwd" val="******" AccessAttr="0"/>
<DM name="LoidState" val="1" AccessAttr="0"/>
<DM name="Password" val="******" AccessAttr="0"/>
<DM name="RegisterID" val="1" AccessAttr="0"/>
<DM name="SfThreshold" val="5" AccessAttr="0"/>
<DM name="SdThreshold" val="9" AccessAttr="0"/>
<DM name="MTU" val="1536" AccessAttr="0"/>
<DM name="MTU_MAX" val="2000" AccessAttr="0"/>
<DM name="MTU_MIN" val="1518" AccessAttr="0"/>
<DM name="GemPort_Max" val="32" AccessAttr="0"/>
<DM name="Tcont_Max" val="8" AccessAttr="0"/>
<DM name="TcontQueue_Max" val="8" AccessAttr="0"/>
<DM name="PwFlag" val="0" AccessAttr="0"/>
<DM name="HexPassword" val="******" AccessAttr="0"/>
</Row>
</Tbl>
La línea que buscamos es la que pone «Password». Si llegados a este punto ya has conseguido lo que buscabamos, puedes saltar al paso 4. Si no, sigue leyendo.
Ya que no tenemos forma de conseguir leer la contraseña de la base de datos, pasemos al plan B, leerla de la memoria del router. Para ello, nos llevaremos un dump al pendrive (tardará unos minutos)
# /bin/cat /dev/mem > /mnt/usb1_1/ramf680.txt
Esto generará un fichero de 230Mb que podremos llevarnos a analizar en nuestro ordenador.
$ tr -cd '\11\12\15\40-\176' < ramf680.txt > ramf680_limpio.txt $ grep 'TIGD.GPON' ramf680_limpio.txt
De aquí obtendremos un output con el siguiente formato : 123456123456789GPON1ZTEG123456T (donde GPON es el password que estamos buscando).
Fuente: https://wiki.bandaancha.st/Obtener_datos_Router_ZTE_F680
Cuarto paso. Poner nuestra ONT.
Una vez llegados aquí, habremos comprobado que nuestro router es válido y que tenemos la contraseña, así que podremos coger nuestra ONT, o comprar una barata. Yo la compré en Aliexpress por 10 euretes, aunque también hay alguna en Amazon que podría servir, pero bastante más cara.
Sólo tenemos que configurarla con el password que hemos obtenido en el tercer paso, y podremos quitar de en medio el «molesto» ZTE F680.