Flashear fonera 2100…

He aquí una guía rápida para flashear OpenWrt o ddr-wrtLEDE no está soportada- en una fonera 2100 con firmware 0.7.1r1 o inferior. Si tu fonera tiene un firmware superior quizás puedas realizar un downgrade pulsando el botón reset durante 15 segundos.

El objetivo es acceder vía Telnet, para lo cual existen 2 vías: puerto serie o ssh. En este caso nos centraremos en la segunda opción, si bien daremos antes unas pinceladas de como hacerlo mediante cable serie:

Acceder a la fonera con cable serie

Podremos realizarlo con ayuda de un arduino o una raspberry, según los siguientes esquemas de conexión, o bien adquiriendo un adaptador de usb a puerto serie.

  • Conexionado Arduino:

  • Conexionado Raspberry:

Instalamos minicom para establecer conexión mediante una consola serie remota:

~ $ sudo apt-get install minicom

Y nos conectamos usando como parámetros:

~ $ minicom -b 9600 -D /dev/ttyAMA0       (puede ser ttyUSB0) (intro para iniciar la consola)

Y a partir de aquí el equivalente a FonFlash que veremos después (en negrita lo que debemos introducir):

RedBoot> ip_address -l 192.168.1.254/24 -h 192.168.1.166
RedBoot> fis init

RedBoot>About to initialize [format] FLASH image system – continue (y/n)? Y

*** Initialize FLASH Image System

… Erase from 0xa87e0000-0xa87f0000: .

… Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> load -r -b 0x80041000 linux.bin
RedBoot> fis create linux (tardará unos cuantos minutos veremos como la pantalla va llenandose de puntos)
RedBoot> fconfig
RedBoot>
RedBoot> Run script at boot: trueBoot script:
RedBoot> Enter script, terminate with empty line
RedBoot> >> fis load -l linux
RedBoot> >> exec
RedBoot> >>[enter]
RedBoot> Boot script timeout (1000ms resolution): 10[enter]
RedBoot> Use BOOTP for network configuration: false[enter]
RedBoot> Gateway IP address: [enter]
RedBoot> Local IP address: 192.168.1.254[enter]
RedBoot> Local IP address mask: 255.255.255.0[enter]
RedBoot> Default server IP address: 192.168.1.166[enter]
RedBoot> Console baud rate: 9600[enter]
RedBoot> GDB connection port: 9000[enter]
RedBoot> Force console for special debug messages: false[enter]
RedBoot> Network debug at boot time: false[enter]
RedBoot> Update RedBoot non-volatile configuration – continue (y/n)? Y
RedBoot> … Erase from 0xa87e0000-0xa87f0000: .
RedBoot> … Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot> reset

Tras reiniciar ya tendremos instalado dd-wrt en la dirección 192.168.1.1

Acceder a la fonera sin cable serie

 

PASO 1: Acceder a la fonera por SSH

Conectamos la fonera a otro PC con un cable de red cruzado, de tal forma que la fonera no tenga conexión a internet.

La IP asignada al puerto ethernet de la fonera es 169.254.255.1, por lo que configuraremos la IP en el PC con 169.254.255.2 para poder conectar a la web de administración.

Guardamos el siguiente código html en un fichero y lo ejecutamos desde el navegador:

<html>
<head>
</head>
<body>
<center>
<form method=»post»
action=»http://169.254.255.1/cgi-bin/webif/connection.sh» enctype=»multipart/form-data»>
<input name=»username» value=»$(/etc/init.d/dropbear)» size=»68″>
<input type=»submit» name=»submit» value=»Submit» />
</form>
</center>
</body>
</html>

 

Si todo ha funcionado correctamente deberíamos, tras unos segundos, ver de nuevo la web de administración, señal de que ya podemos acceder a la fonera vía SSH (mediante legacy por compatibilidad con diffie-hellman, y contraseña admin):

user@localhost:~$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 [email protected]

 

Este acceso es temporal, el puerto vuelve a cerrarse si reiniciamos. Vamos a editar el firewall y descomentar un par de lineas para abrir el puerto:

root@OpenWrt:~# vi /etc/firewall.user

### Open port to WAN
## — This allows port 22 to be answered by (dropbear on) the router
iptables -t nat -A prerouting_rule -i $WAN -p tcp –dport 22 -j ACCEPT
iptables -A input_rule -i $WAN -p tcp –dport 22 -j ACCEPT

 

Renombramos el demonio de SSH para que arranque al reiniciar:

root@OpenWrt:~# mv /etc/init.d/dropbear /etc/init.d/S50dropbear

 

Editamos el archivo thinclient y comentamos la siguiente linea para evitar que FON nos envíe actualizaciones:

root@OpenWrt:~# vi /bin/thinclient

#. /tmp/.thinclient.sh

 

PASO 2: Activar RedBoot

Redboot es el programa que utilizaremos para cambiar el kernel. La fonera tiene el acceso a RedBoot activo por puerto serie, pero no vía ethernet, así que lo que haremos es cambiar el kernel por uno con el redboot en plenas facultades.

Será necesario transferir archivos a la fonera. Existe la posibilidad de hacerlo mediante TFTP o instalando un servidor Apache en el PC. En nuestro caso optaremos por alojarlos en un servidor y descargarlos, por lo cual será necesario que la fonera cuente con acceso a internet:

 

Para ello nos conectamos por SSH a la fonera y hacemos lo siguiente:

root@OpenWrt:~# cd /tmp

root@OpenWrt:~# wget https://www.dropbox.com/s/lsfy3getlc4vpzh/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma?dl=0

root@OpenWrt:~# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7

root@OpenWrt:~# reboot

 

Una vez reiniciada la fonera volvemos a acceder por SSH y escribimos la configuracion de redboot:

root@OpenWrt:~# cd /tmp

root@OpenWrt:~# wget https://www.dropbox.com/s/cc9128fw1vszrc8/out.hex?dl=0

root@OpenWrt:~# mtd -e «RedBoot config» write out.hex «RedBoot config»

root@OpenWrt:~# reboot

 

Ahora la fonera ya no volverá a arrancar más, solo tendremos acceso a RedBoot. RedBoot utiliza la IP 192.168.1.254 y el puerto 9000. Podremos acceder a RedBoot por telnet durante los 10 primeros segundos de arranque de la fonera.

 

PASO 3: Flashear con FonFlash

Necesitaremos descargar las siguientes herramientas:

  • Fonflash, que intercepta el telnet de emergencia que tiene la fonera al arrancar durante unos segundos, ejecuta todos los comandos «delicados» y transfiere por TFTP el archivo con el nuevo firmware. El código fuente del mismo está disponible en su web oficial. Requiere la librería libpcap (apt-get install libpcap0.8).
  • Firmware dd-wrt v24 SP1, un único archivo linux.bin, concretamente la versión Console, pues la WebFlash es para subirla mediante el interfaz web.
  • Firmware OpenWrt 10.03.1, compuesto por dos archivos, el rootfs (datos de la partición) en formato jffs2 (para poder escribir en él) y el vmlinuz (kernel de linux compatible) para la arquitectura atheros.

Conectamos la fonera al PC para, mediante el comando ifconfig, determinar su interfaz.

Desconectamos la alimentación de la fonera.

En función de querer flashear dd-wrt u OpenWrt ejecutamos FonFlash con unos u otros parámetros:

dd-wrt

sudo ./fon-flash -i «interfazFonera» -c ddwrt  linux.bin

OpenWrt

sudo ./fon-flash -i «interfazFonera» -c openwrt openwrt-atheros-root.squashfs openwrt-atheros-vmlinux.lzma

 

Conectamos la alimentación de la fonera y esperamos hasta que muestre un mensaje de finalización. Paciencia, el proceso puede dilatarse más de media hora. La fonera arrancará con un servidor DHCP habilitado. Por defecto la url será http://192.168.1.1

Fuentes:

Author: Raiden

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.