KEMBAR78
Blog de Iván López: Fonera
Mostrando entradas con la etiqueta Fonera. Mostrar todas las entradas
Mostrando entradas con la etiqueta Fonera. Mostrar todas las entradas

miércoles, 18 de julio de 2007

Fonera brickeada...

   ...Y arreglada!. Hace ya tiempo, intentando instalar un nuevo firmware en una de mis foneras hice lo que comúnmente se conoce como brickear, vamos, que me la cargué. Buscando un poco de información en los foros leí que con un cable serie la podía conectar al ordenador para intentar recuperarla.

   Mi circuito es una pequeña adaptación del que encontré y no está tan currado pero para el uso que le iba a dar es más que suficiente. El material que utilicé y el precio fue:
  • Placa protoboard: Tenía una en casa de alguna práctica de la facultad, así que esto me lo ahorré. También se puede utilizar una placa perforda pero hay que soldar y no me apetecía mucho ;-).
  • 4 condensadores electrolíticos de 1 µF: 0,20€ cada uno.
  • 1 condensador electrolítico de 10 µF: 0,20€.
  • Chip Max232: Para controlar la comunicación por el puerto de serie. También tenía uno de otra práctica.
  • Cable de audio de un lector de cdrom: Lo usé para desarmarlo y conectarlo a los pines de la fonera de una manera fácil.
  • Cable serie o conector para el PC y tres hilos: En mi caso tenía el cable y lo que hice fue cortarlo para engancharlo a la placa.


  •    Después de un rato conectando cables según el circuito lo tenía listo para probarlo. El cable que sale por abajo es el que va a la Fonera y el de arriba es el cable serie que va al ordenador. Después de conectarlo todo, el circuito quedó:

       Y seguí este magnífico post para conectarme por el cable de serie a la fonera y poder instalarle de nuevo el firmware oficial de Fon. Después de eso, seguí mi propio post (qué pronto se olvidan las cosas) para instalarle dd-wrt y ya está recuperada y funcionando de nuevo :-).

    Como dicen en el anuncio: "condensadores, placa protoboard, cables,... unos pocos euros. Pasar una tarde entretenido y recuperar una fonera... no tiene precio".

    lunes, 16 de abril de 2007

    DD-WRT en La Fonera

       Ya comenté hace tiempo que quería actualizar la fonera a dd-wrt. Aunque aún se encuentra en fase beta ya va tomando más forma y hay algunas versiones que son bastante estables. Después de leer bastante los foros y hacerme un pequeño esquema de todos los pasos necesarios para realizar la actualización sin (demasiado) riesgo de romper mi fonera me decidí a intentarlo.

       Primero hay que asegurarse de que cumplimos todos los prerequisitos para poder empezar la actualización:
  • Tener acceso por ssh a la fonera
  • Servidor TFTP: En mi caso para windows.
  • Putty
  • Los binarios del firmware dd-wrt para la fonera.

  •    Nos conectamos por ssh a la fonera y lo primero que tenemos que hacer el instalar el RedBoot con el que procederemos a actulizar el firmware. Esto sólo hay que hacerlo la primera vez que instalemos el firmware, en posteriores actulizaciones nos podemos ahorrar estos pasos:
    root@OpenWrt:~# cd /tmp
    root@OpenWrt:~# wget http://fonera.info/camicia/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
    root@OpenWrt:~# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7
    root@OpenWrt:~# reboot

       Ahora la fonera se reinicia. Después de que arranque volvemos a entrar por ssh y ejecutamos:
    root@OpenWrt:~# cd /tmp
    root@OpenWrt:~# wget http://fonera.info/camicia/out.hex
    root@OpenWrt:~# mtd -e "RedBoot config" write out.hex "RedBoot config"
    root@OpenWrt:~# reboot

       De nuevo la fonera se va a reiniciar pero ya no arrancará más. La desenchufé y me preparé para cargar el nuevo firmware:
  • Copié los archivos root.fs y vmlinux.bin.l7 que descargué al directorio del TFTP y desactivé el firewall para no tener problemas y ejecuté el servidor.
  • Configuré la ip de mi pc a una del rango 192.168.1.xxx (en mi caso 192.168.1.11) con máscara de red 255.255.255.0.
  • Abrí un cmd y ejecuté un ping indefinido ping -t 192.168.1.254. Esta es la ip en la que levanta RedBoot.
  • Desde el putty preparé una conexión por telnet al puerto 9000 de 192.168.1.254.
  • Enchufé de nuevo la fonera y en cuanto empezó a responder a los pings me conecté desde el putty.

  •    En ese momento ya tenía el prompt del RedBoot listo para flashear.
  • Configuré la ip del servidor TFTP del cual iba a obtener el firmware:
    RedBoot> ip_address -l 192.168.1.254/24 -h 192.168.1.11

  •    Y llegó el momento de la verdad, comenzó el flasheo...
    RedBoot> fis init
    RedBoot> load -r -v -b 0x80041000 root.fs
    RedBoot> fis create -b 0x80041000 -f 0xA8030000 -l 0x002C0000 -e 0x00000000 rootfs
    RedBoot> load -r -v -b 0x80041000 vmlinux.bin.l7
    RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
    RedBoot> fis create -f 0xA83D0000 -l 0x00010000 -n nvram
    RedBoot> reset

       Aparentemente todo funcionó correctamente. Sólo hay que tener paciencia puesto que el segundo paso tardó más de 10 minutos y en pantalla no aparece ninguna información del progreso.

       Cuando terminó la fonera se reinició, obtuvo ip por dhcp y creó la señal wifi dd-wrt. Me conecté a la ip asignada y este es el resultado final.


       Esto lo hice hace ya algún tiempo y he probado en total 7 u 8 versiones distintas del firmware. Como se puede ver en la web de descargas cada 3 ó 4 días de media aparece una versión nueva, por lo que hay que probar si la configuración de red que quieres crear funciona bien con esa versión. Ahora mismo me estoy pegando con la configuración de la fonera en modo cliente wifi y también con wds. Me ha funcionado una vez (justo la primera y sin mirar tutoriales ni nada parecido) pero ahora no soy capaz de repetirlo. Tengo que seguir probando a ver si consigo enlazarla correctamente a mi linksys.

    martes, 10 de abril de 2007

    Modding Fonera

       Siguiendo el post anterior de pintar la grabadora de dvd, decidí que ya que me ponía podía pintar una fonera a ver qué tal quedaba. Después de frotar un rato con alcohol borré el logo de fon y desarmé la fonera. Esto es lo que tenemos:


       Me llevé las piezas al parque y después de pintarlas el resultado fue el siguiente:

    jueves, 1 de marzo de 2007

    La Fonera Hackeada (II)

       El otro día comentaba que había logrado abrir el ssh de mi fonera y que la había "capado" para que Fon no la pudiese actualizar. Hoy que he tenido más tiempo libre he estado jugueteando con el Chillispot. Para el que no lo conozca se trata del portal cautivo que utiliza Fon para controlar el acceso a la red. Cuando nos conectados a la red wifi de la fonera y ponemos cualquier página en el navegador, automáticamente esa petición pasa por Chillispot y si no está entre las urls permitida nos redirigirá a la url que hayamos indicado para autenticar el usuario por medio de Radius. En este caso nos redirige a la web de Fon y cuando nos conectamos con nuestro usuario y password ya podemos navegar libremente.

       Conectándome con el portatil a la red pública de la fonera pude comprobar que había algunas páginas a las podía conectar sin tener que pasar por chillispot. Por ejemplo, podía leer mi correo de gmail o visitar flickr. Editando el archivo de configuración del chillispot me encontré esto:
    root@OpenWrt:/etc# cat chilli.conf
    radiusserver1 radius01.fon.com
    radiusserver2 radius02.fon.com
    radiussecret garrafon
    dhcpif eth1
    uamsecret garrafon
    uamallowed 209.85.129.99,209.85.129.104,209.85.129.147
    uamanydns
    uamallowed www.martinvarsavsky.net,www.google.com,www.flickr.com,static.flickr.com,video.google.com,216.239.51.0/24,66.249.81.0/24
    uamallowed www.fon.com,www.paypal.com,www.paypalobjects.com,www.skype.com,66.249.93.0/24,72.14.207.0/24,72.14.209.0/24,84.96.67.0/24,213.91.9.0/24,80.118.99.0/24
    uamallowed shop.fon.co.kr,secure.nuguya.com,inilite.inicis.com,fon-en.custhelp.com,maps.fon.com,c20.statcounter.com

    uamallowed www.fon.com,acceso.fon.com,en.fon.com,es.fon.com
    uamallowed www.fon.com,www.paypal.com,www.paypalobjects.com

    uamserver https://login.fon.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/cp/index.php

       Es una lista de urls permitidas por las que se puede navegar sin tener que estar autenticado. Revisando algunas de esas ips he visto que la mayoría son de google, flickr,... pero hay otras que no tengo ni idea. Entonces he pensado que no quería que los Aliens que se conecten a mi punto de acceso Fon puedan navegar libremente por Google, Flickr, Skype,.... Lo primero que se me ha ocurrido ha sido comentar las líneas de las webs no permitidas y reiniciar el chillispot, pero cual ha sido mi sorpresa que no ha funcionado. Revisando con más detalle el script de chillispot (/etc/init.d/N50chillispot) he visto que cuando se arranca se descarga de Fon (en la función radconfig) el archivo de configuración, lo almacena en /tmp/chilli.conf y comprueba mediante un hash MD5 si el que acaba de descargar y el existente son iguales o no. En caso de que el existente haya sido modificado, lo borra y mueve el que se ha descargado a la ruta original. Así Fon tiene control total sobre las webs por las que los Aliens pueden o no navegar:
    radconfig() {
    /usr/sbin/chilli_radconfig \
    -c /dev/null \
    --radiusserver1="$RADIUSSERVER" \
    --radiussecret="$RADIUSSECRET" \
    --adminuser="$RADIUSADMUSR" \
    --adminpasswd="$RADIUSADMPWD" \
    --radiusnasid="$MAC" \
    --dhcpif $wifi_ifname \
    > $TMP_C
    [ -n "$(cat $TMP_C)" ] && {
    MD5SUM_TMP=$(md5sum $TMP_C | awk '{ print $1 }')
    MD5SUM_ETC=$(md5sum $ETC_C | awk '{ print $1 }')
    if [ ! "$MD5SUM_TMP" = "$MD5SUM_ETC" ]; then
    rm $ETC_C
    mv $TMP_C $ETC_C
    circular_log $LOG_LOOP_F "RELOAD"
    do_reload
    else
    circular_log $LOG_LOOP_F "NO RELOAD"
    fi
    return 0
    }
    circular_log $LOG_LOOP_F "NO RELOAD"
    }

       ¿Qué podemos hacer para evitar esto?. Muy sencillo, simplemente cambiamos el signo de la comparación (la línea comentada del if es la original):
    radconfig() {
    /usr/sbin/chilli_radconfig \
    -c /dev/null \
    --radiusserver1="$RADIUSSERVER" \
    --radiussecret="$RADIUSSECRET" \
    --adminuser="$RADIUSADMUSR" \
    --adminpasswd="$RADIUSADMPWD" \
    --radiusnasid="$MAC" \
    --dhcpif $wifi_ifname \
    > $TMP_C
    [ -n "$(cat $TMP_C)" ] && {
    MD5SUM_TMP=$(md5sum $TMP_C | awk '{ print $1 }')
    MD5SUM_ETC=$(md5sum $ETC_C | awk '{ print $1 }')
    # if [ ! "$MD5SUM_TMP" = "$MD5SUM_ETC" ]; then
    if [ "$MD5SUM_TMP" = "$MD5SUM_ETC" ]; then
    rm $ETC_C
    mv $TMP_C $ETC_C
    circular_log $LOG_LOOP_F "RELOAD"
    do_reload
    else
    circular_log $LOG_LOOP_F "NO RELOAD"
    fi
    return 0
    }
    circular_log $LOG_LOOP_F "NO RELOAD"
    }

       y ya está capado. Ahora editamos el archivo de configuración de Chillispot y comentamos las webs que no queremos que se puedan utilizar:
    root@OpenWrt:/etc# cat chilli.conf
    radiusserver1 radius01.fon.com
    radiusserver2 radius02.fon.com
    radiussecret garrafon
    dhcpif eth1
    uamsecret garrafon
    #uamallowed 209.85.129.99,209.85.129.104,209.85.129.147
    uamanydns
    #uamallowed www.martinvarsavsky.net,www.google.com,www.flickr.com,static.flickr.com,video.google.com,216.239.51.0/24,66.249.81.0/24
    #uamallowed www.fon.com,www.paypal.com,www.paypalobjects.com,www.skype.com,66.249.93.0/24,72.14.207.0/24,72.14.209.0/24,84.96.67.0/24,213.91.9.0/24,80.118.99.0/24
    #uamallowed shop.fon.co.kr,secure.nuguya.com,inilite.inicis.com,fon-en.custhelp.com,maps.fon.com,c20.statcounter.com

    uamallowed www.fon.com,acceso.fon.com,en.fon.com,es.fon.com
    uamallowed www.fon.com,www.paypal.com,www.paypalobjects.com

    uamserver https://login.fon.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/cp/index.php

       y finalmente reiniciamos Chillispot.

       Si ahora nos conectamos desde a la señal wifi de Fon y ponemos una web como http://www.google.com, Chillispot nos reenviará automáticamente al Portal de login de Fon.

       El próximo paso: Actualización de la Fonera a DD-WRT.

    martes, 6 de febrero de 2007

    La Fonera Hackeada

       Antes de navidades me llegó un email de Fon con una invitación para que un amigo pudiera conseguir una Fonera totalmente gratis. Envié la invitación a mi mujer y solicité la Fonera a casa de sus padres. Hace un par de semanas llegó "mi" Fonera y estas son las primeras impresiones:
  • La Fonera es realmente pequeña, en las fotos no se aprecia bien pero es muy muy pequeña.
  • Se calienta bastante: Después de tenerla poco más de una hora conectada está muy caliente.
  • La configuración es muy sencilla: Nos conectamos a la red wifi abierta (FON_HOTSPOT) nos logamos en la página de Fon y la registramos. Luego nos conectamos a la red privada (MyPlace) con la clave WPA que nos proporcionan y listo, ya está todo.

  • Cosas que no me han gustado:

  • La web de administración es muy limitada y no permite nada más que unas cuantas opciones de configuración.
  • Aunque puedo cambiar el rango de IPs que asigna a los clientes DHCP no puedo gestionarlo yo al igual que hago con el Linksys.

  •    La he tenido encendida prácticamente todo un fin de semana y no se ha conectado nadie a ella. También es cierto que en la zona en que vivimos, la mayoría de los vecinos deben tener conexión y justo enfrente están construyendo un bloque nuevo. Es probable que cuando lo entreguen tenga más potenciales "clientes".

       Después de esto me cansé y decidí hackearla a ver si podía hacer algo más con ella. Leyendo en unos cuantos foros encontré que lo primero que había que hacer era conseguir el acceso por ssh para luego poder cacharrear más con ella.

       Manos a la obra: Leí que había diversas opciones, desde abrirla para conectar un puerto serie a utilizar unos exploits de la web de administración. También leí que la mayoría de los scripts eran compatibles hasta la versión 0.7.1r1 y mi Fonera tiene la versión 0.7.1r2.
       Según he podido enterarme de fábrica no es probable que se estén fabricando foneras con la versión r2 de serie, por lo podemos resetear las que están en versión r2 para se queden con la versión original de fábrica (r1).
       Con el reseteo tuve problemas porque en algunos sitios leí que había que pulsar el reset más de 1 minuto, esperar a que se apagaran las luces, volver a pulsar el reset, quitar el cable de red y el de alimentación; y finalmente enchufar de nuevo y listo, Fonera "downgradeada". Después de intentarlo unas cuantas veces lo dejé por imposible. La única conclusión que saqué fue que la Fonera se actualiza cuando se conecta a internet.

       Seguí leyendo y buscando por los foros y encontré otra forma de hackearla que es la que me ha funcionado:

  • Conectamos la fonera a otro PC con un cable de red cruzado, de tal forma que la fonera no tenga conexión a internet.
  • Después de arrancar, la IP asignada al puerto ethernet de la fonera es 169.254.255.1, por lo que configuré la IP en el PC con 169.254.255.2. Así, la fonera responde a los pings y desde el navegador nos podemos conectar a la web de administración.
  • Pulsar el botón de reset unos 15 segundos.
  • Recargar la web de administración. Ya aparecía la versión r1, por lo que ya podía proceder al hackeo.
  • Guardé el siguiente código en un archivo html, lo ejecuté y después de unos segundos parece que funcionó.
  • <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>
  • Abrí el putty y me conecté a la Fonera por ssh.
  • Ahora lo único que quedaba era configurar el firewall para abrir el puerto 22. Para esto descomenté las reglas que lo abrían en el archivo /etc/firewall.user
  • Configurar el servidor ssh para que arrancase junto con la Fonera:
    ln -s /etc/init.d/dropbear /etc/init.d/S50dropbear
  • Y modificar el script de "puerta trasera" que ha instalado Fon para que la Fonera no se ejecute el código recibido de Fon cada vez que se conecta a internet. Editamos el archivo /bin/thinclient y comentamos la última línea:
    # . /tmp/.thinclient.sh

  •    De momento me he quedado aquí aunque hay bastante gente trabajando en establecer un puente WDS entre el Linksys con software DD-WRT y una Fonera. E incluso hace muy poco tiempo que acaba de salir una versión del DD-WRT adaptada a La Fonera.

       Establecer el puente WDS entre varias Foneras puede ser muy útil para poder añadir acceso Wifi en una gran extensión de terreno de forma que se puedan poner varias foneras y sólo haya que preocuparse del cable de alimentación y no del de datos (como hasta ahora).

       Como mi "amigo" registró su Fonera ahora Fon le ha dado a él una invitación y a mi otra para que invitemos a nuevos amigos a pedir sus Foneras gratis. Vamos, que ahora tengo 2 invitaciones esperando a ver qué pasa con el WDS y todo esto para utilizarlas.