Puede darse el caso, que el router no funcione bien, o simplemente se haya quedado en un estado que no sea posible utilizarlo.La solución consiste en cambiar el firmare por uno publico ( dd-wrt)
A continuación, os mostaré un esquema sencillo de poder hacerlo.
Lo primero que tendremos que hacer es conectar por ssh al dispositivo.Como podeis imaginar, el acceso está cerrado por defecto.La buena noticia, es que en versiones inferiores de firmware 0.7.2, es relativamente sencillo habilitar el acceso mediante el script de dropbear.En el caso que tengamos una versión mayor o igual a a esta, no tendremos más remedio que hacer lo siguiente:
Preparemos el siguiente entorno:
Fonera_Internet_connection: 213.134.45.200/255.255.255.0 GW: 213.134.45.129 DNS: 213.134.45.129
PC: 213.134.45.x/255.255.255.0 GW: 213.134.45.129
Router_Internet: 213.134.45.129/255.255.255.0 DNS:88.198.165.155
Si quereis, para mayor facilidad, el Router_internet puede ser cualquier PC que tenga acceso a internet, y así nos evitaremos tocarlo.Para cambiar los parametros de la fonera se hará accediendo web a la dirección 192.168.10.1 via wifi, con el usuario root/admin
Una vez que tenemos el entorno listo, presionamos el boton reset de la fonera durante 30 segundos, con esto forzaremos al a fonera a hacer un autoupdate ,pero en vez de hacerlo al servidor oficial lo haremos a Kolofonium (fake) Despues de esto, y en la web de gestión comprobaremos que se ha hecho el downgrade del fw a la versión 0.7.1 r1, la cual es vulnerable.
Una vez conectado a la wifi, crearemos y ejecutaremos un archivo html con el siguiente código:
<html>
<head>
</head>
<body>
<center>
<form method=”post” action=”http://192.168.10.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” onClick=”{this.form.wifimode.value=’”;’ + this.form.wifimode.value +’;”‘}” />
</form>
</body>
</html>
Después de hacer el submit, el navegador nos mostrará el web de gestion del router,y con ello tendremos el acceso ssh habilitado.Nos conectaremos con: ssh 192.168.10.1 con el usuario generico root/admin
Si queremos que los cambios sean permanetns y el acceso ssh este siempre disponisble:
mv /etc/init.d/dropbear /etc/init.d/S50dropbear
El siguiente paso será tener acceso a RedBoot para meterle un nuevo fw.
Nos conectamos por ssh y hacemos los siguiente: ( ojo, el router_fonera tiene que tener acceso a internet)
cd /tmp
wget http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
reboot
Una vez que haya reiniciado, volvemos a conectarnos por ssh y haremos:
cd /tmp
wget http://fonera.info/camicia/out.hex
mtd -e “RedBoot config” write out.hex “RedBoot config”
reboot
Despues de hacer esto, no sera posible conectarse con el router via wireles y habra que hacerlo a través de un cable plano, ojo, no cruzado., siguiendo el siguiente esquema:
PC: 192.168.1.161
Fonera: 192.168.1.254
Una vez que hay botado el router_fonera, solo dispondremos de unos segundos para poder conectarnos via telnet 192.168.1.254 al puerto 9000 .Para facilitar la tarea, dejaremos una consola abierta desde el PC con un ping 192.168.1.254, y una vez que veamos la primera respuesta haremos inmediatamente el telnet.Si todo ha ido bien, tendremos acceso a RedBoot.
Esta no es la única forma de acceder a Redboot, tambien se puede hacer por hardware, conectandonos a traves del puerto serie.
Una vez que tengamos acceso a RedBoot, estaremos preparados para meterle el firmware dd-wrt.
Lo primero que tendremos que hacer es bajarnos los siguientes archivos:
wget http://downloads.openwrt.org/kamikaze/7.09/atheros-2.6/openwrt-atheros-2.6-vmlinux.lzma
wget http://downloads.openwrt.org/kamikaze/7.09/atheros-2.6/openwrt-atheros-2.6-root.squashfs
El siguiente paso, será instalar un servidor tftp para ofrecer los archivos anteriores.Servidores tftp hay muchos, en linux /debian bastaría apt-get install tftp tftpd xinetd
Después tendremos que crear el servicio para que xinetd lo inicie, para ello, creamos el siguiente archivo /etc/xinet.d/tftp con el siguiente contenido:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no
}
Y cambiamos el argumento server_args al lugar donde tengamos los archivos anteriormente descargados.Una vez que tengamos todo, reiniciamos el xinetd con /etc/init.d/xinetd restart
El paso siguiente sera conectarse al RedBoot, y hacer lo siguiente, donde 192.168.1.161 es la dirección IP donde esta el servidor tftp:
ip_address -l 192.168.1.254 -h 192.168.1.161
load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
fis init
fis create -e 0×80041000 -r 0×80041000 vmlinux.bin.l7
fis free
load -r -b %{FREEMEMLO} openwrt-atheros-2.6-root.squashfs
fis create -l 0×6f0000 rootfs
fconfig
reset
Todo esto puede llevarnos unos 30 minutos.En el paso de fconfig, aceptaremos todo los valores por defecto que nos indica.
El siguiente paso será conectarnos via telnet a la IP que trae por defecto el nuevo fw que es la 192.168.1.1, ya que el acceso wifi esta deshabilitado. una vez que establezcamos una contraseña con el comando passwd el acceso telnet no estará disponible, pero si el acceso ssh.
En este momento, solo nos quedara configurar el router, si queremos hacerlo via web, tendremos que instalar el paquete webif, que por defecto no viene instalado:
echo ” src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/7.09/atheros-2.6/packages” >> /etc/ipkg.conf
ipkg update
ipkg install webif
Si por un casual, os diese problemas las fuentes de paquetes, esto es lo que tenía yo en el fichero /etc/ipkg.conf
src release http://downloads.openwrt.org/kamikaze/7.09/atheros-2.6/packages
# src packages http://downloads.openwrt.org/kamikaze/packages/mips
dest root /
dest ram /tmp
src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/7.09/atheros-2.6/packages
# src X-Wrt http://downloads.x-wrt.org/xwrt/kamikaze/snapshots/atheros-2.6/packages