miércoles, septiembre 19, 2007

Amap en la fonera

Como ya os conté en el post "Compilando para la fonera" me interesa tener la herramienta amap en la fonera y en aquel post la compilé, pero daba error porque faltaban algunos archivos, yo supuse que con poner esos archivos en el directorio adecuado sería suficiente, y así era. El problema es que yo quería tenerlos en otro directorio, a mi me interesa que sea en el directorio /usr/share/amap. Por qué? simplemente porque el otro directorio no existía y muchas aplicaciones guardan en la carpeta que yo he dicho sus archivos, y prefiero que este también sea así. Conseguirlo no ha sido muy fácil, he tardado bastante, busque en el configure y en el Makefile, cambié de todo pero no funcionaba... al final lo conseguí, pero hay un problema... no recuerdo que fichero modifiqué :'(

La buena noticia es que he hecho un paquete ipk para la fonera, para poder instalar amap con el gestor de paquetes de la fonera. Os cuento como lo he hecho, necesitamos un directorio dedicado para esto no debe haber mas cosas en él, en éste creamos una carpeta llamada CONTROL y la estructura de archivos que queremos, yo he puesto /usr/bin/amap y /usr/share/amap/aquí_hay_3_archivos. Dentro de la carpeta CONTROL hay que poner un archivo de texto llamado control con es siguiente contenido (este es el mio, vosotros cambiáis lo que necesitéis):

Package: amap
Version: 5.2
Depends:
Source: http://freeworld.thc.org/thc-amap/
Section: net
Priority: optional
Maintainer: Neobius
Architecture: mips
Description: Amap allows you to know what service is running on each port, independently of the number of the port.

Yo creo que esta bastante claro lo que hay que poner en cada sitio no?

Después para crear el paquete ipk podemos usar una utilidad llamada ipkg-build (es un script), lo podéis bajar de aquí.

La forma de usarlo es sencilla, ejecutáis el script indicándole la carpeta que contiene los archivos del paquete ipk, y si queréis la carpeta donde ha de guardarse el archivo ipk, si no lo hacéis se guardará en la carpeta en la que estéis.

En cualquier caso a mi no me funcionó, cuando lo probaba en la fonera no podía instalarlo, ipkg me daba un error. Entonces mire un poco el script y sabiendo que los paquetes deb se construyen con ar y que ipkg está basado en dpkg busque ar en el script y vi esto:

outer=ar

Y lo cambié por el que incluye el toolchain de la fonera:

outer=mips-linux-uclibc-ar

Luego probé de nuevo y funcionó, si alguien quiere el paquete ipk lo puede encontrar aquí.

Fonera en modo cliente con WPA-PSK

Ya tengo la fonera lista para que haga unos scaneos y me proporcione información útil sobre la red y los servidores. Para no escribir una entrada interminable voy a contarlo por partes, en este post escribiré sobre como la he puesto en modo cliente para que se conecte a la red wifi del centro tic.

Para ello no basta solo con las herramientas por defecto que tiene OpenWrt, la conexión wifi se configura en /etc/config/wireless, desde ese archivo podemos configurarla en modo cliente, tanto para redes abiertas, wep o wpa, pero no como yo necesitaba, os explico, yo tengo la clave de la red inalámbrica del centro tic, pero cifrada, no tengo el pass en claro. La teoría es esta: una red wifi cifrada con wpa-psk tiene su essid y su frase de paso en claro que tiene entre 8 y 63 caracteres, luego a partir de esos dos mediante un algoritmo de cifrado se obtiene una nueva clave de 64 caracteres la cual se puede usar para conectarse a la red wifi y no se puede obtener la frase de paso en claro a partir de ella. Yo dispongo de esa clave cifrada, la he sacado del fichero /etc/wpa_supplicant.conf, el problema es que estas claves cifradas no se pueden usar en OpenWrt a través de su archivo normal de configuración, o al menos yo no he podido y en el foro de openwrt tampoco ha sabido ayudarme nadie. La solución es recurrir a herramientas independientes del sistema operativo, wpa-supplicant, y como yo ya tenía el fichero de configuración de un portátil pues no iba a ser muy complicado conseguirlo, creé el fichero /etc/wpa_supplicant.conf y el puse esto:

ap_scan=1
fast_reauth=1
network={
ssid="essid_de_la_red"

scan_ssid=0

proto=WPA

key_mgmt=WPA-PSK

psk=clave_cifrada_de_la_red
}

Luego para comprobar si funcionaba ejecuté este comando:

wpa_supplicant -dd -D wext -c /etc/wpa_supplicant.conf -i ath0

Ah! Como es lógico hay que tener instalado wpa-supplicant, si no es así ejecutar:

ipkg install wpa-supplicant

Lo que decía, tras ejecutar aquel comando, funcionó, bueno tuve que abrir otra conexión ssh a la fonera para comprobarlo y si, así fue, todo iba bien, un paso mas para mi objetivo ya estaba conseguido :)

Ya que he investigado y leído tantas paginas de documentación voy a contaros también como configurar la fonera en modo cliente para que se conecte a una red abierta, a una con clave wep y a una con wpa usando al passphrase en claro.

La clave esta en los ficheros /etc/network/wireless y /etc/config/network, en el segundo yo he añadido una opción para el wifi:

config interface vlan1
option ifname ath0

option proto dhcp

Y en el primero varía según sea la red a la que nos conectemos, os pongo el fichero entero y luego indico las opciones que hay que cambiar en cada caso:

config wifi-device wifi0
option type atheros
# option channel 5
# option diversity 1
# option txantenna 0
# option rxantenna 0
# option distance 2000
# disable radio to prevent an open ap after reflashing:
option disabled 0

config wifi-iface
option device wifi0

option network vlan1

option mode sta

option ssid essid

option hidden 0
# option txpower 15
# option bgscan enable
option encryption psk

option key clave_de_la_red

Ese es un fichero para wpa-psk, solo tenéis que cambiar el ssid y la clave (option key clave_de_la_red) para que os funcione. Si usa cifrado wep cambias psk por wep y la clave (clave_de_la_red) por la clave wep, y si es una red abierta la ultima línea borrarla y cambiar psk por none, o al menos creo que era así, si hay algún problema dejarme un comentario ;)

De todas formas todavía falta un detalle... que nada mas arrancar se conecte a la red wifi, esto editando el fichero /etc/config/wireless no supone mayor problema, ya que se hará así, pero si es, como en mi caso, con wpa-supplicant? hay que añadir un script que se ejecute al inicio. Yo tenía ya uno que "autoreparaba" la fonera en caso de que la red estuviera mal configurada y así me evitaba flashear, simplemente lo he modificado, porque ya no lo necesito, y ha quedado así:

#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org

START=50
start(){
wpa_supplicant -dd -D wext -c /etc/wpa_supplicant.conf -i ath0
}

stop(){
killall test

}

Y ya está. Si vosotros lo acabáis de crear tendréis que darle permisos de ejecución y habilitarlo:

chmod +x /etc/init.d/test
/etc/init.d/test enable

Con eso la fonera se conectará automáticamente a la red wifi cada vez que arranque.

Ahora escribire mas post contando el resto del proceso, como he conseguido que amap funcione bien y también os pondré el script y lo comentaré. La fonera ahora mismo está esperando al primer día de instituto, ese mismo día scaneará :D

martes, septiembre 11, 2007

Dominios gratis!!!

Ya se que esta en los comentarios del post anterior, pero para que se vea mejor lo pongo también en este post.

Como me ha dicho anónimo en un comentario de la entrada anterior el Pack Bienvenida incluye un .es (lo pone en contrato), lo que pasa es que yo no lo había registrado, os vais al panel de control, dominios, nuevo y elegís el que queráis. Yo tengo neobius.es :D

La otra creo que es para todo el mundo (no lo sé seguro), es de nominalia, yo acabo de registrar neobiusnet.com. Aquí:

http://promotions.nominalia.com/index_es011.html

Ponéis el que queráis y os registráis (o al revés, según os salga), pedirá tarjeta de crédito, pero no cobra nada, eso es por si contratáis mas cosas, yo por si acaso he desactivado la renovación automática para evitar facturas inesperadas, ya lo renovaré yo si quiero.

También ofrece 3 cuentas de email con ese dominio de 1 GB cada una, subdominios, etc

Increible el salto gratuito que he dado a internet, dos hosting (aunque el de 1and1 mucho mejor), dos dominios, cuentas de email, subdominios ilimitados, dns gratuito, se supone que 50 € en adsword, puedo probar los servicios de nominalia (hosting linux/windows, etc.).

En fin un éxito esta repentina entrada en serio a internet a ver que hago con todo esto :D

[EDIT]

Una cosa mas que se me olvidaba, no he podido registrarme con ninguna de mis cuentas gmail, me decía que por motivos de seguridad esa cuenta de correo no se podía utilizar, así que me he creado una en mi hosting 1and1.es que es una redirección a mi cuenta normal de gmail. Si no podeis probar con cualquier otra que tengáis.

1and1.es

Ya lo dije en un comentario de mi penúltimo post, pero por si alguien no leyó y para decir un par de cosillas mas sobre el voy a escribir este post.

Se trata de una oferta de un proveedor de hosting alemán que hace poco ha desembarcado en España. 1and1 como oferta de bienvenida da 2 años de hosting gratuito, te da un subdominio prácticamente imposible de recordar, 2 GB de espacio en el servidor, 20 GB de transferencia mensual, ftp, blogs, bases de datos mysql, ssh, email, etc. Los detalles podéis verlos aquí.

La oferta es solo para usuarios españoles y acaba el día 31 de octubre de este año. Os recomiendo que os registréis, no esta mal para probar creo que son muchas cosas las que ofrece de forma gratuita. Yo me leí toda la información, y el contrato, a mi me surgieron 2 dudas, que voy a poner aquí por si alguien las tiene también. Las solucioné contactando con la empresa.

La primera duda era sobre la transferencia mensual, en las pagina principal pone 20 GB, pero en las condiciones generales de 1and1 ponía 2 GB, la respuesta es que son 20 GB.

La otra duda era sobre que pasa si se consumen los 20 GB, la web da a entender que se deja seguir consumiendo y luego hay que abonar la diferencia a 0.49 €/GB. Tampoco es de esa forma, se bloquea la cuenta hasta el mes siguiente, a no ser que uno compre transferencia adicional, que es lo lógico, pero en la web se da a entender otra cosa.

Esas fueron las dos dudas que yo tuve tras leer el contrato y todo lo que ponía en la web sobre el Pack Bienvenida. En cuanto las aclaré me di de alta, al poco (pocos minutos) te llama por teléfono un contestador alemán (pero en español) y te pide un código de 4 cifras que te han dado cuando te registraste, lo pones y ya está, tu cuenta en el servidor se creará y enseguida recibirás un mail con los datos. Aproximadamente unas 2 horas después todo funcionará.

Yo ahora mismo no he hecho mucho, pensaba crear un blog para tener algo en el servidor, pero el dominio no hay quien lo recuerde y ahora mismo no tengo interés en contratar uno, así que lo tendré hay para lo que necesite, hoy por ejemplo he colgado ahí el SDK de OpenWrt y el código de amap-5.2.

Otra gran ventaja el el acceso ssh, por ejemplo subir archivos con ssh es mucho mas cómodo que cualquier otra cosa, tengo un servidor http en mi servidor y un puerto mapeado en el router, así que pongo lo que quiero ahí luego me conecto por ssh a mi cuenta en el servidor de 1and1 y con screen y wget lo dejo ahí trabajando, así no tengo que tener una ventana del navegador en el laptop esperando, como sucede entre otros muchos con google pages. Todavía no he probado la potencia de calculo del servidor pero es un dato curioso que me gustaría averiguar. Si me he planteado que velocidad alcanza la línea y para le he puesto a descargar un cd de debian, he probado con varios servidores, y la velocidad mas alta que he conseguido es 4.5 MB/s en 2 minutos se bajaba el cd! (luego paré y lo borré), creo que tiene que alcanzar bastante mas velocidad, si alguien conoce un servidor muy rápido que lo diga y hago la prueba.

También he pensado otro uso para esto, como ofrece ftp puedo usarlo como depósito de la fonera. Si no consigo acceder a mi cuenta en el centro tic puedo usarlo para guardar los logs, archivos, paquetes ipk, lo que sea...

En fin, una oferta muy recomendable, además por dos años!!

PD: Esta entrada no es patrocinada :(

Compilando para la fonera

Para conseguir mi objetivo con la fonera, (lo del modo monitor), necesito algunas herramientas que no existen como paquetes precompilados para la fonera, tengo que compilarlos yo. Realmente tampoco me he puesto muy en serio con el tema todavía y solo se me ha ocurrido una herramienta que compilar, se trata de amap, que averigua que servicio corre en cada puerto, nmap simplemente ve que puertos están abiertos, mira en su base de datos de puertos conocidos y te pone el servicio que debería ir ahí, por ejemplo, si tu tienes un ftp en el puerto 80 nmap te dirá que el puerto esta abierto, pero pondrá http, no ftp. Amap trabaja de otra manera, esta herramienta mira como responden los servicios que tras esos puertos y te dice que es lo que hay, incluso puede llegar a decirte el programa y su versión, no simplemente dice es un servidor ftp, puede que te diga que servidor es y su versión. Vamos una herramienta muy útil.

Recapitulando un poco, a mi me daba un error de ld al intentar compilar cualquier cosa, ya fuera compilación normal o compilación cruzada. Pregunté en un foro y me dijeron que tenía el ld de mi sistema y otro que había compilado yo (supongo que hice algo mal durante el lfs). Así que eliminé el que yo compile ya que no me valía para nada y ya funcionó, ahora si puedo compilar tanto de forma normal como cruzada. Aquí esta el hola mundo, que al fin funcionó:

# gcc test.c -o test
# ./test
¡Hola, mundo!

Ahora veamos como compilar nuestro hola mundo para que funcione en OpenWrt en mi fonera, luego veremos como compilar amap para la fonera. Lo primero que necesitamos es el toolchain (herramientas de desarrollo) de openwrt para nuestra arquitectura (de la maquina donde compilaremos), yo me bajé i686, también hay para x86_64. La versión para i686 ahora mismo no la encuentro en la web oficial, en su día me costo encontrar el enlace, así que la subo yo y si la queréis os la bajáis de aquí. Lo primero, como es lógico, es descomprimirlo, luego tenemos que añadir la ruta de los archivos para compilar al path. Dichos archivos se encuentran en OpenWrt-SDK-atheros-2.6-for-Linux-i686/staging_dir_mips/bin. Para hacerlo estando en el directorio donde descomprimimos, en mi caso /media/almacen/toolchain/, ejecutamos:

export PATH=`pwd`/OpenWrt-SDK-atheros-2.6-for-Linux-i686/staging_dir_mips/bin:$PATH

Ahora para comprobar que todo ha salido bien ejecutamos echo $PATH, en el resultado tiene que estar nuestro directorio:

/media/almacen/toolchain/OpenWrt-SDK-atheros-2.6-for-Linux-i686/staging_dir_mips/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Queda un poquito largo, no importa, mientras funcione. Ya podemos probar, compilando, por ejemplo nuestro hola mundo:

# mips-linux-gcc test.c -o test

Si ahora intentamos ejecutarlo, no podremos, eso es porque el ejecutable es para otra arquitectura:

# ./test
-bash: ./test: cannot execute binary file

Sin embargo si lo ejecutamos en la fonera la cosa cambiará, para pasarlo a la fonera hay varias maneras, yo suelo hacerlo mediante netcat o mediante http. Como tengo un servidor http en el server simplemente lo he copiado a /var/www (luego lo haremos con netcat). Luego en la fonera lo descargamos y ejecutamos:

# wget http://debian/test
# chmod +x test
# ./test
¡Hola, mundo!

Funciona! vale, ya sabemos como compilar cosas "sencillas", ahora vamos a intentar compilar algo se hace con el clásico ./configure... amap nos servirá. Lo primero es tener el código de amap, aquí nuevamente he perdido el enlace, así que os lo subo yo también, aquí. La forma normal de compilarlo es la normal de estos paquetes:

# tar -xzvf amap-5.2.tar.gz
# cd amap-5.2
# ./configure
# make
# make install

Con eso lo tenemos para usar en nuestra maquina local, que yo también lo he hecho porque es muy útil. Ahora veamos como hacemos para que se compile usando los archivos de nuestro SDK (Software Development Kit), es decir, para usar el compilador de la fonera. Me imagino que habrá distintas formas de hacer esto, investigaré un poco para ver cual es la mejor y mas cómoda. A me se me ocurren tres, una es modificar el configure, otra es modificar el Makefile y la última que no se si será posible: en alguna parte del sistema tiene que estar escrito que compilador se usa, si cambio esa configuración y en vez de gcc pongo mips-linux-gcc estaría todo solucionado. Yo he optado por modificar el (los) Makefile, porque en el configure no he encontrado donde hacer los cambios. He hecho esto:

# ./configure

Y después he modificado los dos Makefiles que hay. Si os fijáis hay uno en el directorio en el que estamos (amap-5.2/) y otro dentro de pcre-3.9/. En el primero de ellos solo he cambiado la variable CC, he puesto esto:

CC=mips-linux-uclibc-gcc

Y en el segundo he cambiado CC, RANLIB y STRIP, todos ellos hay que cambiarlos por los de la fonera:

CC = mips-linux-uclibc-gcc
RANLIB = mips-linux-uclibc-ranlib

STRIP = mips-linux-uclibc-strip

Puede que os preguntéis porque he cambiado esas variables, y que como vais a saber que variables cambiar cuando tengáis que compilar otro programa. Existe un conjunto de programas (binutils) que son el compilador, el linkador, etc. El compilador gcc de mi debian i386 no valdrá para la fonera, y tampoco valdrá el linkador ld de mi fonera en mi server. Entonces yo he mirado los nombres de las binutils de la fonera en OpenWrt-SDK-atheros-2.6-for-Linux-i686/staging_dir_mips/bin, y veo los nombres, por ejemplo: gcc, ar, as, c++, ld... De esta manera cuando yo en el Makefile vea gcc lo cambio por mips-linux-gcc, ar lo cambio por mips-linux-ar, etc. Estoy seguro de que debe existir algún método mejor, que intentaré averiguar, pero mientras no lo sepa esta es mi única solución.

Después de haber hecho los cambios precisos compilamos:

make

Si ahora intentamos ejecutar el archivo tampoco podremos, es para la fonera, no para un x86:

# ./amap
-bash: ./amap: cannot execute binary file

Sin embargo si lo pasamos a la fonera, esta vez con netcat, funcionará. Ejecutamos en el server:

# cat amap | nc fonera 9999

En la fonera:

# nc -l -p 9999 > amap

Y ya podemos darle permisos y ejecutarlo. De todas formas todavía no funcionara bien, porque para comprobar que servicio está en cada puerto compara la respuesta con una base de datos, también tiene que estar en la fonera. Supongo que sera cosa de añadirlo al directorio adecuado, todavía no lo he hecho, en cualquier caso pienso hacer un paquete ipk por cada programa que vaya a usar, seguiré trabajando con este hasta tenerlo todo listo. En cualquier caso, lo que me he interesa ya lo he conseguido: esta compilado.

Ahora buscaré un método mas cómodo, rápido y sencillo para hacer compilación cruzada, aprenderé a hacer paquetes ipk, y me pondré a programar el script que me haga un análisis de la red.

Ya estoy bien

Pues sí, al final me cansé de la venda y como no me dolía nada al intentar mover la mano, me quité la venda ayer. El mismo día que me llegó el pendrive (por fin!!!), luego os pondré una foto y os contaré lo que he hecho con él. También tengo que contaros como conseguí compilar para la fonera desde el server y como está ahora mismo la fonera (que ya queda poco para que empiece el curso, creo que es el 24). Ahora mismo no se me ocurren mas cosas, pero creo que hay algo mas que contar, ya irán saliendo los temas.

Por cierto el pendrive ya le he instalado switchblade y funciona, consigue muchísimos datos del pc, luego cuento los detalles.

jueves, septiembre 06, 2007

Comunicado

A partir de hoy y aproximadamente hasta dentro de una semana es muy probable que no escriba nada, porque tengo la mano izquierda inmovilizada (y soy zurdo). Una mala caída me ha dejado un dolor que me impedía mover el pulgar y el meñique, hoy fui al médico y no tengo nada roto, sin embargo estoy con la mano vendada y no puedo usarla para nada, además al mover los otros tres dedos también me molesta un poco. Por ello solo puedo escribir en el pc con la mano derecha y se tarda bastante más que con dos manos.

También os adelanto que ya he podido compilar para la fonera desde el server, pero no puedo contaros como, es largo y ahora no voy a escribirlo.

Nada más, espero mejorarme lo antes posible y poder seguir escribiendo por aquí.