La fonera ha caído, larga vida a OpenWRT

Al final no hizo falta ningún cable. Un nuevo fallo de seguridad por parte de FON ha simplificado el proceso :)

NOTA: El manual está basado en el publicado por Daniel Estvez en http://barrapunto.com/~Daniel+Estvez/journal/26611 sin embargo, la segunda parte está modificada, pues al menos en mi fonera su método no funcionó.

NOTA II: Mi fonera es una FON2200 con firmware 0.7.1 r3. Recordad que la parte en la que se instala OpenWRT (justo después de abrir el SSH de la fonera) implica escribir la memoria de la fonera… eso significa que si algo sale mal, cargarsela es lo más probable. No me hago responsable.

Lo primero es conectarse a la fonera mediante la wifi privada y acceder al panel de control. La idea es hacer que se descarge una actualización falsa, para ello le pondremos a la fonera una ip fija y le pondremos como DNS el de Kolofonium (88.198.165.155) que se han molestado en prepararnos uno :) Una vez guardados los cambios, quitamos la corriente de la fonera y se la volvemos a poner para que se reinicie. Aviso, yo he tenido que esperar 10 segundos con el cable de corriente desconectado porque, por algún extraño motivo, no encendia si quitaba el cable y lo volvía a poner al instante.

Una vez reiniciada con el DNS falso, esperamos unos minutos y podremos conectarnos vía ssh a la fonera, el usuario es root y la contraseña admin.

Hasta ahora todo va bien, pero si reiniciamos la fonera (no lo hagáis) perderemos lo que hemos hecho, para evitarlo haremos que el script se ejecute cada vez que se inicia la fonera, para ello:
mv /etc/init.d/dropbear /etc/init.d/S50dropbear

En este momento tenemos una fonera con el SSH abierto, lo que haremos ahora es eliminar el software de FON e instalar OpenWRT para hacer con la fonera lo que queramos. Para ello, lo primero será instalar un cargador de arranque, redboot.

cd /tmp
wget http://ipkg.k1k2.de/hack/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
reboot

Lo que hemos hecho es bajarnos el primer archivo necesario, escribirlo en la fonera y reiniciarla. Una vez haya reiniciado, volvemos a entrar por ssh y tecleamos:

wget http://ipkg.k1k2.de/hack/out.hex
mtd -e ‘RedBoot config’ write out.hex ‘RedBoot config’

Ahora deberíamos reiniciar la fonera y conectarnos por telnet a 192.168.1.254:9000 que es la dirección y puerto en el que se pondrá a escuchar RedBoot. El problema es que tenemos 10 segundos para enviar un CONTROL+C, la solución más cómoda que he encontrado es conectarse usando «Putty» que nos enviará el CONTROL+C automáticamente nada más conectarse.

Hasta aquí, todo es igual que lo explicado por Estvez. Veamos los cambios:

RedBoot necesita cargar los fichero via… tftp, así que necesitaremos un servidor tftp. Yo he usado el TFTP Server de WinAgents, y le ponemos a servir los ficheros:
http://downloads.openwrt.org/snapshots/atheros-2.6/openwrt-atheros-2.6-root.squashfs
http://downloads.openwrt.org/snapshots/atheros-2.6/openwrt-atheros-2.6-vmlinux.lzma
Es decir, descárgalos y ponlos en la carpeta raíz del tftp.

Una vez esté listo, resetéa la fonera y conéctate por telnet como indiqué (192.168.1.254:9000) usando Putty. Verás el prompt de RedBoot (abre un par de Putty’s y ponlos a conectar, alguno entrará).

Empezaremos configurando la fonera, para ello teclea (sustituyendo los datos claro…):
ip_addr -h IP_DEL_SERVIDOR_TFTP -l IP_FONERA/24

Ahora:
fis init
load -r -v -b %{FREEMEMLO} openwrt-atheros-2.6-root.squashfs
fis create -f 0xA8030000 -l 0x006F0000 rootfs
load -r -v -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
fis load -l vmlinux.bin.l7
exec

El tercer mandato tardará unos 20 minutos y el quinto no se queda corto… esperad, no reiniciéis la fonera porque lo más probable es que os la carguéis.
En cualquier punto de esas sentencias, la fonera podría daros errores incomprensibles, del estilo «Argumento inválido»… si te ocurre, resetea la fonera (si no está haciendo nada claro) y sigue el proceso desde donde lo habías dejado (introduciendo siempre la configuración de red de la fonera)… procurando que la última orden que se haya introducido con éxito sea una fis. Yo he tenido que reiniciarla unas 6 o 7 veces para completar el proceso.
Por cierto, el exec a mi se me quedó muerto… esperé 20 minutos, no pasó nada y reinicié… empiezo a pensar que exec no es necesario….

Sea como fuere, al reiniciar la fonera (cable fuera, cable dentro) arrancará OpenWRT y podremos entrar a nuestra fonera vía telnet a la ip 192.168.1.1, la primera vez os pedirá que cambiéis la contraseña con passwd y las siguientes veces telnet estará cerrado y deberéis entrar por SSH con esas credenciales.

Aquí tenéis el resultado:

BusyBox v1.4.2 (2007-06-30 05:42:26 BST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
KAMIKAZE (bleeding edge, r7781) -------------------
* 10 oz Vodka Shake well with ice and strain
* 10 oz Triple sec mixture into 10 shot glasses.
* 10 oz lime juice Salute!
---------------------------------------------------
root@OpenWrt:~#

¡Suerte a todos!

Por Carballude

Me llamo Pablo Carballude González, soy graduado en computación con master en HCI y Seguridad Informática. Actualmente trabajo para Amazon en Seattle como Software Developer Engineer. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P

1 comentario

Dejar un comentario

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