domingo, julio 29, 2007

El meme de las ocho cosas

Desde Vidas en red me llega un meme, así que vamos a responderlo :)

Reglas:
A. Cada jugador comienza con un listado de 8 cosas.
B. Tienen que escribir esas 8 cosas en su blog y junto con las reglas del juego.
C. Tienen que seleccionar a 8 personas mas invitar a jugar y anotar sus nombres o el nombre de su blog.
D. No Olviden dejar un comentario en sus blogs respectivos de que han sido invitados a jugar, refiriendo al post de tu blog “EL JUEGO” o “El meme de las 8 cosas”

Amor: Ya llegara el mio... si alguna geek en la audiencia que sepa que estoy soltero :D

Los videojuegos: Pocos, tipo GTA, y a veces alguno de simulación.

Lectura: No leo casi nada, algunos libros técnicos que tardo mucho tiempo en terminar, y literatura muy poca. Si vas a regalarme algo mejor algún gadget.

La vida: Muy corta y muchas cosas que hacer.

Mi pelo pantene: Negro.

Dinero: Útil y necesario, pero por ahora no tengo que ganarmelo.

Trabajar: Ya lo haré cuando sea necesario... ahora con los estudios hay bastante...

Alimentación: Chocolate.

Se lo paso a... no se, a cualquiera que lea esto y quiera seguirlo, porque la verdad no se quien de mis lectores es blogger.

sábado, julio 28, 2007

Seguimos con el centro tic (sin fonera)

Perdonar por no haber posteado en tantos días (desde el lunes), pero es que los astros se han alineado para que no me haya sido posible, bueno tonterías a parte, lo que ha pasado es que esta semana entre playa, alguna que otra quedada y adicción a Cazadores de Mitos no he hecho nada relativo a la informática (bueno los dos últimos días si), ni a la fonera, ni a nada, estos días solo he leído los feeds en google reader, descargado alguna cosilla y poco más, así que no tenía nada que contar.

Sin embargo si hay dos o tres cosillas que contaros, básicamente actualizar la información sobre el estado de mis proyecto y contaros una idea que se me ocurrió ayer.

Vamos a empezar por lo primero, la fonera no la he tocado, todavía sigue exactamente igual de inútil, seguramente hoy haga algún intento más, sobre el script para rapidshare... pues tampoco lo he hecho, al final descargué todas haciendo el proceso a mano, cuando acababa una descarga cambiaba la ip y descargaba la siguiente. De todas formas todavía no he acabado porque algunos enlaces estaban mal puestos, por ejemplo ponía que era el programa 2x14 y en realidad era el 2x13, así que tengo que descargar dos o tres capítulos de nuevo (buscare otra fuente) además de alguno que no estaba en la lista de enlaces. Y creo que ya no hay mas cosas pendientes, así que vamos con otro tema, mi última idea:

Pensando en mi centro tic recordé un viejo proyecto que tenía respecto a él, montar un servidor f0 en mi red lo mas parecido posible al del instituto para hacer instalar después en una maquina virtual un sistema igual al que tienen las laptops del centro tic, es decir hacer netboot en la maquina virtual y luego instalar el sistema a partir de la imagen del servidor. Para ello yo contaba con algunos scripts que se encuentran en el ftp de f0, scripts interesantes que son sobre la instalación del sistema, sin embargo con eso no es suficiente además en e mismo ftp había un repositorio, en cuya carpeta dist había una carpeta llamada breezy, por lo que se deduce que es un repositorio de ubuntu breezy (seguramente con algunos paquetes especiales). Entonces el primer paso que se me ocurrió dar fue montar un repositorio en mi servidor, porque con un solo script no vamos a ningún lado, hace falta también los paquetes que instalar, y que mejor sitio para obternerlos que nuestro repositorio, así que nada busqué un poco como montar un repositorio, leí algo sobre apt-mirror, pensé en copiar un repositorio con wget... pero entonces llegó la solución mas sencilla, mirando la web del repositorio oficial de guadalinex, vi un link que pone las normas para hacer un mirror oficial... tener un servidor con capacidad, 1mb/s, ftp/http... pero lo mas interesante es la parte que pone como conseguir los datos para el mirror, la forma es mediante rsync, la url es esta: rsync://pool.guadalinex.org, y ahora copy&pasteo una parte:

Al conectar con las URL's especificadas arriba podrán verse los directorios que pueden sincronizarse. El contenido es el siguiente:

/guadalinex-toro: Repositorio de la versión 4 de Guadalinex (~1,5 GB)
/guadalinex-flamenco: Repositorio de la versión 3 de Guadalinex (~3 GB)
/guadalinex-descargas: Contiene ficheros relativos a Guadalinex como imágenes ISOs, documentación, portadas, etc.
/guadalinex: Repositorio de las versiones 1.0 y 2004 de Guadalinex (~31 GB)
/mirror: Mirror congelado de Debian usado en las versiones 1.0 y 2004 de Guadalinex (~38 GB)
/ubuntu: Mirror de Ubuntu en sus versiones breezy, dapper y edgy. Utilizado por las versiones 3 y 4 de Guadalinex (~85 GB)

A mi lo que me interesaba era ubuntu así que creé en mi server un directorio para el objetivo, /media/almacen/repo, y luego ejecute el comando adecuado para la sincronización de directorios: rsync -av --stats pool.guadalinex.org::ubuntu /media/almacen/repo. Lo tuve dos días sincronizando (en total conseguí unos 5 o 6 GB), y ya me extrañó un poco que tardara tanto y recordé que en el wiki de guadalinex pone cuando pesa cada directorio del repositorio
y vi que eran 85 GB!!! entonces cancelé la operación y borre lo hecho porque antes de esa pequeña descarga prefería investigar otras cosas. Pensé que antes de correr la instalación y deja que instalara en la maquina virtual lo que le diera la gana, que descargara del repositorio lo que quisiera... sería mejor, mas constructivo y me serviría para aprender más investigar todos y cada uno de los archivos de instalación, mirarlo todo, y ver paso a paso que va a hacer durante la instalación en cada instante. Entonces lo que hice fue leer los 4 o 5 scripts que descargué en su día de ftp://f0. Vale cuando acabé no saque nada muy útil, crea las particiones, se conecta al server, configura apt y llama un par de scripts, uno de ellos llama otro que detecta la tarjeta de red que se usa, otro detecta la gráfica. El que detecta la gráfica lo único que hace es ver si tiene nvidia, y si es así instala el paquete mediante apt-get el paquete cga-portatil-toshiba (por eso dije lo de paquetes especiales en el repositorio). El de detección de red detecta la interfaz de red y la configura adecuadamente, por cierto en este archivo también esta la clave wpa de la red y essid de la red, channel, en fin aquí esta todo lo que se puede encontrar en /etc/network/interfaces, así que aunque se le quiten permisos de lectura (que los tenía, de hecho yo lo copié y conseguí la clave wpa), se pueden seguir leyendo esos datos, ya que este script de detección de red es público, está en el ftp de f0 y puede acceder cualquiera. Bueno así a grosso modo los scripts no hacen nada más... eso es poca información, yo tengo constancia de que para hacer la instalación en red de guadalinex en el centro tic hay tres formas (o cuatro, según se mire), mediante netboot (pxe) con un servidor que lo proporcione todo, desde un cd mínimo de arranque que proporciona un kernel y la configuración para conectarse al server f0 y obtener los famosos script para la instalación, y por último mediante un pendrive bootable, pero este método que yo sepa no sirve con las laptops (o al menos yo no conseguí en su día arrancar por usb, bueno este método tiene dos variantes, el pendrive puede ser con grub o con syslinux. El problema es que yo solo tenía a mano la imagen del cd, pero también quiero examinar las imagenes del usb, así que me fui a la guía para centros tics y en el anexo sobre como hacer la instalación en red pone como conseguir las imagénes para cualquiera de los dos métodos, así que descargué las dos imágenes para pendrives (la de grub y la de syslinux).

Vamos a empezar a analizar los métodos por el principio, el de netboot no puedo hacerlo, porque no tengo el servidor tftp con los archivos adecuados, así que nada este método de entrada tengo que descartarlo.

El método del cd, hmmm, este tiene buena pinta, lo primero que hago fue montar la imagen del cd en un directorio multiusos (uno que tengo reservado para este tipo de experimentos) /media/test, y me encuentro con un par de kernels y con un par de initrd's. También hay un archivo útil, isolinux.cfg, con la configuración de arranque, el cd cuando arranca ofrece un prompt y le tienes que poner la palabra clave adecuada para la acción que quieras, las posibilidades son Instalav3, Instala, Actualiza, Instalatoshiba y Actualizatoshiba. Con el kernel linux.v3, solo arranca la primera opción, se deduce que es la única para instalar guadalinex v3. Todas las demás van con linux.204, seguramente será para guadalinex2004. La primera opción configura algunas cosas y apunta al script ftp://f0/install.cfg, a partir de ahí ya he leído los scripts, un vistazo rápido a las siguientes opciones muestra que clarisimamente es un kernel compilado por quién se haya encargado de crear guadalinex, porque no creo que el CGA haya creado un nuevo kernel para guadalinex, que puede, pero no lo veo... Esta última deducción la hago en base a los parámetros que se le pasan al kernel: actualiza, imagen=guadalinex2004-act1-wifi y imagen=guadalinex2004-act1-toshiba2. Además hay un directorio en el cd, se llama i386, luego standard/, y por último hay un archivo: boel_bin.tgz. Vale, y ahora que hacemos? pues a mi se me ocurrió examinar los initrd, no se si iba a servir para algo, pero lo hice, primero tenemos que descomprimirlo, y luego montar el archivo en algún directorio:

gzip -dc initrd.v3 > /home/neobius/ies/netb/initrdv3.img
mount /home/neobius/ies/netb/initrdv3.img /media/test2 -o loop

Vale hecho, ahora me fui al directorio donde estaba montado y estuve mirando que había, la verdad es que no encontré nada útil, aunque también es verdad que ni miré mucho ni sabía muy bien que mirar. Hice lo mismo con el initrd.204 pero tampoco me valió para nada.

Entonces me acorde del aquel fichero tgz que estaba en la única carpeta del cd, así que lo copio a mi directorio de trabajo, y lo descomprimo. Contiene varios directorios (etc, usr, bin, lib y sbin), y dentro de ellos había algunos ejecutables, librerías y un archivo de configuración de ssh. Vale muy bien, pero tampoco me ha servidor para nada.

El siguiente paso que se me ocurrió fue arrancar el cd en una maquina virtual y probar las distintas opciones para ir viendo el arranque a ver que pasaba. La primera opción no la use porque ya se lo que pasa, probé todas las demás y a primera vista los arranques de todas las otras opciones son iguales, o al menos iguales hasta el punto en el que se para, y se para porque intenta hacer un rsync a una dirección que no existe en mi red. Transcribo:

rsync -av 192.168.4.254::/boot/i386/standard/boel_binaries.tgz /tmp/boel_binaries

Por ahora hemos acabado con el cd, que de todas formas me ha dado algo de información, ahora mismo mi lista mental de cosas que tengo en el centro tic es conectarme por tftp a f0 pero realmente no se para que, porque que yo sepa este protocolo no tiene ningún comando para listar los archivos del servidor (vamos un ls), la otra cosa que tengo que hacer es probar el rsync a los dos servidores y a la dirección arriba puesta, bueno realmente la lista es mas larga, pero las cosas nuevas que se me han ocurrido son esas dos.

Ahora vamos con el usb, ambos archivos era imágenes que hay que copiar mediante dd al pendrive, así que cogí un pendrive de 256 mb que tengo por aquí e hice la operación con el de syslinux, había cuatro archivos: initrd, ldlinux.sys, linux y syslinux.cfg. Esto lo que hace es lo mismo que la primera opción del cd, instala v3 de la misma forma.

Entonces probé con la otra imagen, la de grub, la copie mediante dd:

dd if=llavero_arranque_grub.iso of=/dev/sdb

Y luego le echamos un vistazo, hay una carpeta boot, que ahora veremos y sorprendentemente hay otra carpeta, pero no una carpeta cualquiera, una carpeta que proporciona un nombre de usuario (y parte de uno real), no voy a poner el nombre entero, pero ese así: .Trash-xxxxxx, vamos que el usuario que creo esta imagen borró un archivo pero no su carpeta .Trash. Por cierto xyyyyy es así: x es la inicial del nombre e yyyyy el primer apellido. El archivo que hay dentro de esa carpeta es ESFW30.BIN, que la verdad no se que es.

Dentro de la carpeta i386 nos encontramos varios archivos: initramfs, initrd, linux y vmlinuz. Ademas de una carpeta, grub. Con un menu.lst, cuanto menos curioso, os pongo los títulos de cada una de las entradas:

EducaTICC USB normal
EducaTICC USB configuracion limpia
EducaTICC USB montar dispositivos escritura
EducaTICC USB qemu
EducaTICC USB modo texto
Instalar Guadalinex V3 especial para centros TIC
Guadalinex USB qemu con param. extend

Las dos últimas si tienen los mismos parámetros que el v3 del cd, llama al install.cfg de f0. Lo de EducaTICC es la primera vez que lo leo, luego arrancare el pendrive a ver que hace.

Ya no he hecho nada mas, he sacado algunas conclusiones, [¿]xyyyy trabaja en el cga[?], aunque realmente eso no me vale para nada. He aumentado la lista de cosas que tengo que hacer cuando me siente delante de un portátil del centro tic (rsync, tftp) y que necesito aprender mas sobre linux, porque, por ejemplo, durante el arranque del cd netinstall, de vez en cuando suelta algunos mensajes, y ejecuta algunas cosas, esas cosas yo no se donde se configuran, así que solo me queda una opción: LFS. Si voy a meterme en el proyecto lfs, acabo de bajarme el pdf y vy a leerlo, tengo que aprender mas, y ademas eso creo que me vendrá bastante bien el día que arregle la fonera y la prepare para que los portátiles puedan bootear desde ella, a ver cuando la arreglo... porque es la base de mi plan, tengo que hacerla funcionar.

lunes, julio 23, 2007

Script para rapidshare

Desde que conocí YendIt, una página con links a películas y series alojadas en Stage6 (el famoso servicio de divx.com) me enganché a Cazadores de Mitos (MythBusters) y me baje todos los capítulos disponibles (esos ya los he visto), es una serie que desde hace mucho tiempo estaba interesado en ver, pero nunca me puse a buscarla a fondo, sin embargo desde que he visto todos esos episodios me he quedado con el mono y quiero mas, así que ayer busqué en google y por lo visto están todos subidos a megaupload y/o rapidshare (excepto uno o dos y algunos especiales) los links en ésta página. Yo cuando empecé a descargar el primero que descargué fue desde rapidshare, y como iba bien pues seguí con el, para que iba a seguir con megaupload si rapidshare va perfectamente?

Como todos sabéis este tipo de servicios (rapidshare, megaupload...) tienen un límite, filtran por ip, y después de descargar un archivo para descargar otro tienes que esperar un buen rato. Esto como lo he solucionado yo? pues recurriendo a mi ip dinámica, si, simplemente desconectando el adsl y volviendo a conectarlo e instantáneamente tengo una ip diferente, así que puedo seguir descargando con toda la tranquilidad del mundo, para cada archivo diferente necesito una ip nueva, así que cada vez que acabo una descarga tengo que realizar esa operación, y como los episodios están partidos en trozos de unos 90 MB, me tardan de 5 a 10 minutos depende de como me vaya el adsl, porque hay veces que va a 200 KB/s y otras veces va a 400 KB/s. La operación es muy sencilla solo tengo que entrar a mi router y en Adsl Status pone "disconnect" le doy al botón luego la pagina recarga y el botón cambia a "connect" lo pulso y ya tengo nueva ip. Este es uno de los motivos por los que no me he quejado de no tener ip fija, con ip fija no habría podido hacer esto, además uso un servicio gratuito de dns dinámico soportado por mi router. Ah, otra cosa, no me esperaba para nada que hubiera tantas IPs libres ayer en pocas horas use 38 direcciones ip diferentes y hoy ya llevo 14 ip. Esto por supuesto tiene serios inconvenientes, es nefasto para el p2p, pero no me importa, dejare el mldonkey descansando mientras consigo todos los episodios de este magnifico programa. Y no puedo chatear, o al menos no por irc, cada vez que desconecto se me desconecta del servidor y tengo que volver a conectar, es un poco incómodo. Pero bueno por uno o dos días no va a pasar nada. De todas formas otra cosa que he pensado es que muchos clientes de orange van a tener problemas con rapidshare, porque cada ip que uso tiene un tiempo de espera para poder seguir descargando, y en total creo que necesitare unas 400 ip's en total, pero bueno como wanadoo tiene tantas no importa si alguien no puede usar rapidshare que cambie de ip y ya está.

Solventado con facilidad el primer problema y estando pendiente de la ventana de downloads del firefox para reiniciar mi conexión cada vez que acabara una descarga y no perder tiempo, pensé que sería muy cómodo hacer un script que dándole todas las url las descargara una por una, pero claro tenemos el problema del captcha (la imagen con una letras que luego hay que escribir) eso no es automático. De todas formas puede existir algún bug o alguna web que dándole el enlace te de un link de descarga, algún truco... algo que permitiría automatizarlo todo. Así que busqué un poco pero no aparecía nada útil todo el mundo habla de proxys, ip dinámicas... incluso ganar dinero viendo publicidad, dinero con el cual luego se paga una cuenta premium, pero ni lo he probado ni lo voy a hacer, esas cosas suelen sen un timo. Bueno entonces pensé en buscar directamente un script quizás a alguien se le hubiera ocurrido y lo hubiera hecho, así fue, encontré un script bash que hace la tarea que busco, pero no como yo esperaba, el script llegado el momento te muestra la imagen del captcha para que tu le introduzcas las letras, y obviamente precisa de un entorno gráfico. Por cierto el script lo encontráis aquí y si solo queréis descargarlo este es el enlace, ah, yo no lo he probado porque no hace exactamente lo que yo quiero, simplemente lo he leído para ver como funciona y poder hacer mi propio script. El script está bien documentado con comentarios y los nombres de las funciones son explícitos, y se entiende bastante bien que hace cada cosa. Os comento mi idea para el script, es que haga lo mismo que el original, solo que la imagen en vez de mostrarla en pantalla la ponga en el directorio del servidor web y luego espere la respuesta por algún sitio que todavía no he pensado, después descargaría el archivo, al acabar cambia la ip (para esto si tengo que hacer mi script desde cero) y toma la siguiente url, pone el captcha en el webserver espera respuesta y descarga y como se yo cuando es el momento de introducir el captcha? fácil, he pensado en que cada vez que espere la respuesta emita un pitido por el speaker, y he pensado que mejor un sonido agudo de esos chirriantes que te destrozan el timpano, así conseguiré obligarme a mi mismo a responder el captcha para que para el pitido.

La función para hacer la propia descarga voy a aprovecharla del script original, es decir, descargar la web, buscar la url de descarga, descargar el captcha, yo voy a programar el cambio de ip para que funcione con mi router, así como la parte del pitido avisador y el poner la imagen en el servidor web para luego esperar la respuesta. Estas son las ventajas del software libe, yo ahora puedo coger ese programa leer el códig, modificarlo y adaptarlo a mis necesidades, en cambio si fuera el típico exe de windows que te descargas sin código fuente, tendría que hacerlo todo yo desde cero cuando ya hay alguien que lo ha hecho. Viva el software libre!

PD: Si consigo hacerlo antes de haber acabado de descargalo todo lo publicaré y explicaré aquí, of course.

sábado, julio 21, 2007

Problemas con apache y php

Tal y como conté en mi post anterior tenía previsto publicar un post sobre shells php, que son script php pensados para ser ejecutados en un servidor remoto mediante una vulnerabilidad RFI (Remote File Inclusion). Pero bueno eso os lo explicare todo mas despacio en el futuro post quiero publicar, ahora voy a contaros los problemas que tengo para preparar mi demostración.

Yo desde tiempos inmemoriales tengo instalado en mi servidor apache con soporte para php (desde que puse el server a funcionar) y iba bastante bien, en su día cuando hice algunos experimentos con php salió todo bien, y como servidor web para tener algunas cosillas accesibles desde cualquier pc de mi red también funcionaba bien. Y ahí estuvo el servidor web funcionando mucho tiempo, sin embargo la ley de Murphy actuó, justo el día que yo quería volver a utilizar el soporte para php no funcionaba, lo primero que quise hacer fue ejecutar directamente una de las shells de las que dispongo, así que la envío al server mediante netcat y luego la pongo en el directorio adecuado (/var/www/shells/) y pruebo a ejecutarla, pero no se ejecuto el codigo php en el servidor, lo que hizo fue ofrecerme descargar el archivo. Yo me quedé un poco desconcertado, no sabía que pasaba, porque el php había dejado de funcionar de repente? porque el servidor funcionaba, las páginas html las mostraba perfectamente. Reviso que sigo teniendo perfectamente instalado el apache y el php, a primera vista todo era correcto, los paquetes estaban instalados y yo no había cambiado los ficheros de configuración de apache. Pues nada tocaba agudizar el ingenio e intentar averiguar que pasaba, aunque realmente de ingenio poco, porque la solución era sencillísima y el problema era bastante fácil de descubrir, sin embargo yo me fui por el camino mas complejo... pero bueno no os adelante hechos, sigamos por orden.

Ejecuto ps axu | grep apache para ver si se estaba ejecutando el apache y no, no estaba, así que arranco el servicio: /etc/init.d/apache2 start, acto seguido pruebo a ver una página php que tenía en /var/www, info.php cuyo ćódigo podéis ver aquí: http://neobiusnet.googlepages.com/info.txt

Que lo que hace es simplemente mostrar una pagina con información sobre php, versión instalada, servidor web que corre... en fin información sobre la implementación. Bueno el caso es que puse esa página: http/debian/info.php (nota: debian es el nombre de mi server, y así esta definido en /etc/hosts). Yo ya un poco harto del tema y sin saber muy bien que hacer pruebo la solución clásica de windows, reinstalar, así que nada apt-get install -reinstall apache2, no valió para nada, así que pruebo desinstalando y eliminando los archivos de configuración a mano, tanto de apache como de php, así que apt-get remove --purge apache2 php5. Bueno tras eliminarlo todo pensé que lo mejor era instalar de nuevo siguiendo algún tutorial, google apache php debian etch, si, yo a los buscadores suelo hablarles en indio, total, si luego van a pasar de las preposiciones y demás pues para eso yo me lo ahorro directamente, además de todos es sabido que lo adecuado es poner las palabras claves. Bueno encontré algo y reinstalo todo (apache+php) edito los archivos de configuración para que apache soporte php. Hecho, reinicio apache y... tampoco interpretaba código php, WTF!! Probé borrándolo una vez mas y probando un tutorial diferente, tampoco funcionó.

Entonces recordé un detalle, hace poco, como mes y medio, instale un nuevo servidor web, thttpd, que se trata de un sencillo servidor web, que no necesita archivo de configuración, las opciones se le ponen como parámetros, al que le interesen mas detalles que lea esto. El caso es que el servidor es muy cómodo, os cuento para que lo uso, yo todas las descargas que hago en el server con mldonkey van a /media/hde/mldonkey/incoming y otras descargas las tengo en /media/hde/series... en fin que de /media/hde cuelgan muchas cosas que me interesan y a las que me gustaría tener acceso sencillo, antes usaba netcat (y para casos concretos sigo usándolo), pero es muy cómodo moverte al directorio que te interese y poner thttpd -p 88 -d /media/hde y tener un servidor web en el puerto 88 con los /media/hde como directorio raiz y poder hacer streaming fácilmente, o descargar varios archivos del servidor... en fin menos trabajoso que netcat e infinitamente mas útil y cómodo (ojo me refiero a esta tarea, netcat sigue siendo utilísimo, sin embargo para esta necesidad creo que esta opción es mejor). O a lo mejor me interesan varios archivos del disco duro externo montado en /mnt, pues pongo otro server en el puerto 89 y con ese directorio como raíz, es una solución muy flexible.

Y la historia de thttpd a que viene? pues muy sencillo resulta que este servidor web "suplantó" a apache y se ejecutaba en el puerto 80, y este servidor no tiene soporte para php. Esto lo descubrí de una forma muy sencilla, puse en firefox http://debian y me mostró un listado de los archivos de /var/www (no hay index.*) en una página html con el formato por defecto de thttpd, así que lo reconocí al instante. Para solucionar el problema y comprobar que efectivamente el servicio corría y en ese puerto ejecuté: lsof -i TCP:80, vi el pid del proceso y lo maté, rearranqué apache probé el archivo info.php y se ejecutó! también lo hizo una shell que probé. Así que nada problema solucionado, simplemente pasaba que thttpd corría en lugar de apache.

Bueno realmente la historia no ha acabado, eso han sido los problemas para conseguir ejecutar páginas en php, pero todavía me queda otra cosa, yo había preparado una página vulnerable a RFI para hacer una demostración sobre como usar las shells php. El código que puse para el archivo que llame php.php podéis verlo aquí: http://neobiusnet.googlepages.com/php.txt

Con intención de pasarle luego luego como parámetro la shell (típico ataque rfi). Sin embargo por alguna razón que no entiendo (no sé php) me muestra esto al ejecutarlo:

Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/shells/php.php on line 5

RFI


Y el rfi no me funciona, alguien que sepa de php en la sala?

Nada mas, os seguiré contando mas cosas según vayan pasando.

PD: Vaya mierda blogger, no puedo poner código html, blogger lo interpreta y el código php lo ha transformado como ha querido. Así que lo he tenido que subir en txt a google pages.

Explicaciones

Ya se que llevo muchos días sin contar nada útil en el blog, y para eso os escribo este post, para comentaros que pasa, de todas formas este post ni es un cierre, ni tampoco es un "yo, ya posteare...." y luego tardo un mes en escribir, no. De hecho para hoy mismo espero haber terminado algún post.

Bueno os cuento, como sabéis la última semana he estado en Badajoz y no he podido hacer muchas cosas, por lo que tampoco tenía nada que contar, además de falta de tiempo. Luego cuando llegué aquí (creo que el miércoles) estuve preparando un post sobre shells php, pero se me complico el tema, porque para ilustrar mi post quería poneros screenshots y a lo mejor un vídeo, el plan era poner usar el apache + php que tengo en el servidor, poner una página php con una vulnerabilidad rfi y explotarla con alguna shell php, pero ya os digo, se complicó, el servidor web no iba bien, no ejecutaba páginas php... en fin un lío, y ahora lo que pasa es que como no se mucho de php (en realidad nada), la página que preparé cuando conseguí que el server funcionara bien, tenía (y tiene) un error y no hay manera de que funcione lo que yo tenía pensado.

Luego la fonera... la fonera desde aquel intento fallido que ya os conté en el último post no he podido volver a intentarlo por falta de tiempo (ahora os cuento), así que tampoco he podido hablar de eso, de todas formas tengo que conseguirlo como sea porque tampoco me serviría comprar una fonera nueva, porque las últimas para abrirle el ssh tiene que ser por hardware y estaría en las mismas. Cuando siga con este asunto os contaré, pero ya os digo que al primero que le interesa es a mi, porque si no todo el plan que tenía pensado se va al carajo no sirve para nada.

Además estos días he tenido poco tiempo, porque la semana anterior al viaje no salí prácticamente nada, luego me fui de viaje y cuando volví pues como hacía mucho tiempo que no veía a los amigos pues quedé estos días.

Y bueno eso es todo, ahora voy a escribiros unas cosillas, por ejemplo, los problemas que me han surgido para mi post sobre shells php. En fin que la situación se va a normalizar.

jueves, julio 19, 2007

Arreglando la fonera

Ya os conté ayer que recibí el circuito que necesitaba para la fonera, bien pues ya lo probé, al principio me faltaban conectores para los cables, pero al final los compré e intenté montarlo, lo primero fue soldar los pines al circuito, solo soldé los que iba a usar (4 de los 6 que hay), y luego corte cuatro trozos de cable les puse un conector en cada punta y lo conecté todo, luego lo conecté al puerto serie del ordenador y abro el hyperterminal de windows xp, creamos a la conexión y por fin enchufo la fonera a la corriente eléctrica, se enciende, y el resultado fue: fracaso!, el primer intento falló.

Eso lo hice sobre las 22:00 creo que serían, así que ya no tenía mas ganas de seguir probando, así que hoy haré mas intentos, seguiré probando a ver si lo consigo de una vez. Os pondría una foto, pero es que no la hice, y ahora mismo esta todo desconectado, en mi próxima prueba haré fotos para el post. Os seguiré contando...

miércoles, julio 18, 2007

Ya he vuelto

Hace escasos minutos acabo de llegar de Badajoz, ya estoy en mi casa, o como dice shinchandmc, en mi base. Perdonarme por no haber posteado nada desde el jueves, pero es que no he podido, tengo algunas cosas que contaros que espero poder postear lo mas pronto posible.

Desde que me fui estuve preocupado por llegar a tiempo para recoger el paquete que me mandaban desde Canadá, el que pedí en ebay, el que contiene el circuito necesario para reparar mi fonera. Porque lo pedí el día 3 y el vendedor me dijo que tardaría de 10 a 15 en llegarme, así que a lo mejor venían a entregármelo y yo no estaba aquí, lo primero que hice al soltar las maletas fue bajar al buzón para ver si había algún aviso de entrega de alguna agencia de transporte, cojo todas lo que había (un buen montón de papeles y sobres) y veo un sobre marrón que venía por Air Mail, desde Canadá!! y pone en una pegatina: electronic samples, era mi "paquete", lo abro y efectivamente era el circuito necesario. Una fotito:



Luego lo probaré y postearé como me ha ido. Y bueno nada mas, solo decir que espero que el blog y mi vida retomen su ritmo normal.

jueves, julio 12, 2007

Ingenieria inversa para la web 2.0 (II)

Esta es la segunda parte de mi reciente post Ingeniería inversa para la web 2.0, y es debido a que shinchandmc me dijo en un comentario que mi script fallaba, me dejo una url con la que mi script no funcionaba bien, y llevaba razón, nada mas ver la url lo supe. Mi respuesta la podéis leer en los comments de ese post, pero de todas formas voy a explicar un poco mas despacio porque falla, que falla y como lo he arreglado.

Mirar estas dos urls, la primera es la que puso sinchandmc y la segunda la que yo use en mi ejemplo y la que use durante la elaboración del script:

http://mp3tube.net/musics/Black-eyed-peace-Pump-it/45/
http://www.mp3tube.net/es/musics/Camaron-Como-el-agua/4844/

Mi script lo que fallaba en mi script es la parte donde obtiene el nombre de la canción, mirar esta línea:

NOMBRE=$(echo $1 | cut -f6 -d"/")

Lo que hace es dividir la url (el argumento 1, $1) según los símbolos "/", y se queda con la sexta parte, tomemos mi ejemplo:

http:, , www.mp3tube.net, es, musics, Camaron-Como-el-agua, 4844

Si contamos, "Camaron-Como-el-agua" es el número seis, y es con el que se queda el comando cut y lo que se almacena en la variable $NOMBRE. Sin embargo, tomemos ahora la url de shinchandmc:

http:, , mp3tube.net, musics, Black-eyed-peace-Pump-it, 45

Si contamos, el trozo número seis es "45" y no el nombre de la canción, esto es debido a que en la primera url había un trozo más, el "es" y en esta no lo hay, por lo que al haberme basado en la url que si incluye ese dato el script no funcionará bien con los que no tengan dicho dato.

Antes de ponerme a pensar una solución debía comprobar cuantos tipos de url hay en esa web, porque yo quiero que mi script sea universal, no que solo valga para algunas versiones de la web. Nada mas entrar en la web le di a una canción de la lista last music para comprobar como era la url, esta url no tenía ni "es" ni nada parecido. Luego probé eligiendo la versión en español de la web, ahora todas las canciones llevaban el "es" y por último probé la versión brasileña, en esta ocasión lo que se incluía era "br". La versión en inglés, la internacional, no incluye nada de ese estilo. Quedaba hacer una comprobación mas si yo tomo una url con el "es" o con "br" y se lo quito qué pasaría, lo hice y siguió funcionando bien, podía oir la canción tranquilamente, lo mismo pasa a la inversa, si yo tomo una url "internacional" sigue funcionando si le añado "br" o "es". Podéis comprobarlo entrar en estas tres páginas:

http://www.mp3tube.net/musics/Camaron-Como-el-agua/4844/
http://www.mp3tube.net/es/musics/Camaron-Como-el-agua/4844/
http://www.mp3tube.net/br/musics/Camaron-Como-el-agua/4844/

Entonces, la solución es de lo mas obvia, hay que identificar de alguna manera las url y ver cuales llevan "es" o "br" y cuales no, después mediante cut se usará -f6 para las primeras y -f5 para las segundas. La forma de hacerlo que a mi se me ha ocurrido es coger con cut el trozo número 4, el que corresponde a "es" y "br", pero en las url que no llevan ese parámetro sería "musics" en lugar de "es" o "br". Esta es la teoría, el pseudocódigo. Ahora vamos a programarlo de verdad.

Primero creamos una variable, en la que se almacenará el valor del trozo número 4, es decir o "es" o "br" o "musics", será la variable $TYPE:

TYPE=$(echo $1 | cut -f4 -d"/")

A continuación un simple if nos solucionará el problema:

Si $TYPE es igual a "es" -> cut va con -f6
Si $TYPE es igual a "br" -> cut va con -f6
Si $TYPE es igual a otra cosa -> cut va con -f5

if [ $TYPE = "es" ] ; then
 NOMBRE=$(echo $1 | cut -f6 -d"/")

elif [ $TYPE = "br" ] ; then

 NOMBRE=$(echo $1 | cut -f6 -d"/")

else

 NOMBRE=$(echo $1 | cut -f5 -d"/")
fi

Y por último, con la variable nombre elegida de forma correcta se cambia el nombre del archivo descargado:

mv $CANCION.tube $NOMBRE.mp3

Y para acabar sale un mensaje diciendo que el archivo $NOMBRE.mp3 ha sido guardado:

echo "El archivo $NOMBRE.mp3 ha sido guardado"

Esa es la solución que he programado, sin embargo se me ocurrieron otras dos mal útiles y elegantes, os pongo pseudocódigo porque no se programarlo así que no puedo poner otra cosa:

Otra forma de haberlo hecho hubiera sido poner solo un if/else y no un if/elif/else, así:

-Si $TYPE es igual a "es" o a "br" -> cut va con -f6
-Si $TYPE es igual a otra cosa -> cut va con -f5

El problema es que no sabía como poner ese parámetro lógico "o", así que esta no he podido hacerla.

Y la última solución, y para mi la mejor, sería usando comodines:

-Si $TYPE es igual a dos caracteres cualesquiera -> cut va con -f6
-Si $TYPE es igual a otra cosa -> cut va con -f5

Pero claro el problema es que tampoco se como ponerle el comodín necesario, ésta solución es la mejor por una razón básicamente: vale para siempre, si para las url "internacionales" sirve y también vale para las url de cualquier nuevo país que se añada a la lista, por ejemplo si ahora sacan una versión en francés ese parámetro sería "fr", mi script actualmente no funcionaría bien con eso, solo entiende de "es" y de "br". Sin embargo esta última solución es compatible con cualquiera porque solo comprueba que $TYPE es igual a dos caracteres, los que sean, y como todos los países se pueden representar con 2 letras pues ya estaría todo solucionado.

Si averiguo como solucionar ese pequeño problema lo haré y todos contentos :D

Para acabar comunicar una cosa, el nuevo script se puede descargar de aquí:

http://neobiusnet.googlepages.com/mp3tube.sh

Y cada vez que haya alguna actualización se podrá descargar desde ahí, porque las nuevas versiones siempre las voy a subir como mp3tube.sh, las antiguas tendrán un número adecuado, la primera versión todavía puede descargarse desde aquí:

http://neobiusnet.googlepages.com/mp3tube0.1.sh

Aunque no os lo recomiendo porque no funciona bien.

Nuevo libro: "Hacking ético"

Pues si, desde que lo vi cuando estuve por aquí en febrero me llamo mucho la atención, y estuve a punto de comprármelo de no ser por el "detallito" de que una punta de la tapa trasera estaba destrozada, luego iba a lanzarme a comprarlo por internet, pero finalmente vi otro en Cádiz, "Software Libre: Herramientas de Seguridad" y opté por este segundo libro. Ayer ya vi el libro y lo hojeé un poco, luego en casa mire en la web de la editorial el índice un poco mas despacio, y hoy no he aguantado más, he desembolsado 31.60€ y lo he comprado, es un libro muy interesante, empieza hablando de ética, luego un poco de leyes (yankis supongo) y divulgación correcta y ética de vulnerabilidades. La segunda parte ya empieza con lo técnico, habla de test de penetración, técnicas del hacker de hoy y automatización de test de penetración. Después toca hablar de exploits, desde cosas básicas, conocimientos de programación, depuración de código... exploits básicos para linux, avanzados, código para el shell de linux, y exploits básicos para windows. Para acabar, el libro trata el análisis de vulnerabilidades, ingeniería inversa, como crear un exploit para una vulnerabilidad localizada y como parchear una vulnerabilidad. Mas detalles en el índice. En fin un libro muy completo y muy interesante, al menos en apariencia :D

Bueno no puedo acabar este post sin poneros la foto de rigor, que aunque podáis ver el libro en muchos sitios, ya sabéis que me gusta poneros las fotos en el blog :)


PD: El fallo del script ya estoy intentando subsanarlo, cuando este listo (espero que pronto) lo posteo ;-)

De viaje a Badajoz

Ayer me vine a Badajoz, tras un viaje de cuatro horitas llegué aquí a las doce de la mañana. Lo primero que hice fue sacar el portátil y mi equipo wifi: la tarjeta integrada del portátil (atheros), un adaptador usb zydas, un adaptador usb ralink con posibilidad de conectarle una antena externa y dos antenas, una de 8dbi y otra creo que de 4.5dbi, además de la fontenna.

Con todo este arsenal arranque wifislax con intención de averiguar la clave wep de alguna de las redes wifi que hay por aquí, hay bastantes y la mayoría son de imagenio (tipo WLAN_XX) así que el asunto era bastante fácil, solo necesitaba algunos paquetes, y luego generar a partir del bssid y del essid de la red una lista de 65536 posibles claves y mediante aircrack-ng ver cual de ellas es la clave, además conviene apuntar la mac de algún equipo conectado a la red, ya que, al menos, con todas las redes imagenio con las que me he cruzado, tienen filtrado MAC. Bueno el caso es que en poco tiempo tenía dos cables y dos macs aparentemente útiles, así que reinicio y desde ubuntu cambio mi mac mediante el paquete macchanger:

macchanger ath0 -m XX:XX:XX:XX:XX:XX

Pero no conectaba, así que entonces pensé en probar la conexión de yoigo y luego seguir intentándolo con el wifi. Yoigo directamente no fui capaz de que me funcionara, después seguí con el wifi, pero recordé que la vez anterior que estuve por aquí configuré la tarjeta de red adecuadamente para que funcionara bien con la red WLAN_33 e hice un backup del fichero /etc/network/interfaces, que es el que tiene la configuración de los adaptadores de red. Lo próximo que hice es obvio no? restaure esa copia de seguridad del interfaces, después reinicié (realmente no es necesario, pero yo lo hice) y... no funcionó! Pensé que habrían cambiado la clave wifi o algo, así que volví a intentarlo las otras redes, pero no tenían dhcp, o al menos yo no tenía ip, quizás fuera problema de mi configuración, no me asignaban ip, probé con alguna pero no iba. Después intenté averiguar alguna ip mediante kismet, pero no había ningún cliente conectado, así que una vez mas, tampoco pude. Finalmente intenté conectarme desde ubuntu usando el usb zydas, así que preparé el archivo interfaces con la configuración adecuada (essid, mac, clave) y por fin funcionó, se conectó a la red WLAN_33 sin mayores problemas, ya tenía internet!!

Bueno chicos, creo que hoy voy a ser un poco malo y voy a apuntar mis antenas a la comisaria, que desde una ventana tengo visión directa hacia ella (y está relativamente cerca), vamos a ver que pasa...

Otra cosa, he vuelto a ver un libro curioso, "Hacking ético", la verdad es que me interesa mucho y estoy pensando muy seriamente si comprármelo o no. Ya os seguiré contando cosillas...

martes, julio 10, 2007

Ingenieria inversa para la web 2.0

Ayer, buscando en google una canción en mp3, llegué a una curiosa página, mp3tube.net, que es web estilo estilo youtube pero para alojar mp3s, tiene un reproductor flash para reproducir las canciones y no permite descargar las canciones, pero claro yo aunque quizás hubiera sido mejor descargar la canción mediante p2p ya que me había encontrado con esto no quería dejarlo así, quería averiguar donde estaban guardados los mp3s para poder descargarmelo.

Lo primero que hice fue echarle un vistazo al código fuente, quizás estuviera la url del mp3 en él y me ahorraría tener que descompilar el reproductor flash y buscar en su código ActionScript. Busqué pero no encontré nada útil, excepto un detalle importante, el "id" del archivo, cada archivo tiene uno diferente, así que deduje que me sería útil para descargar las canciones una vez averiguara donde estaban alojadas. Esto fue lo único interesante que vi en el código fuente:

http://www.mp3tube.net/play.swf?id=772691db234dc0b62844eac87f3d21d5

Se ve perfectamente el id, y el nombre del reproductor flash. Luego intenté una tontería, pero a lo mejor funcionaba, puse mp3tube.net/id_del_archivo.mp3 pero no funciono, error 404, tras probar varias posibilidades mas pare probar, no sirvió ninguna de mis intuiciones. Próximo paso? descargar el reproductor flash, descompilarlo y ver que hace. Así que nada wget mp3tube.net/play.swf, apt-cache search swf decompiler, apt-get install flasm, flasm, flasm -d play.swf. Explico: descargo el archivo, busco un descompilador de archivos swf, instalo el que he encontrado (flasm), lo ejecuto sin argumentos para ver la sintaxis, y luego lo ejecuto con -d (descompilar) como parámetro y play.swf (archivo swf) como argumento. Tras mirar un poco veo que hay llama a otro archivo, a fmp3.swf, así que lo descargo igualmente y miro un poco el código de este archivo, no veo nada útil, así que me voy de nuevo al primero y repasándolo veo una cosa cuanto menos curiosa:

'mp3', 'http://matrix.mp3tube.net/tube/', 'id', '.tube'

Lo que me hace pensar que los archivos mp3 se pueden sacar de matrix.mp3tube.net/tube/id_del_archivo.tube, así que hago la prueba poniendo como id el de la canción que puse antes como ejemplo, Como el agua, de Camarón, y descargo mediante wget (si ya que se puede con firefox, pero a mi me gusta el terminal):

wget http://matrix.mp3tube.net/tube/772691db234dc0b62844eac87f3d21d5.tube

Vaya, son 3.5 MB tiene toda la pinta de ser una canción en mp3, cuando termino de descargarlo para ver que es ejecuto:

file 772691db234dc0b62844eac87f3d21d5.tube

Y efectivamente es un fichero mp3, así que intento reproducirlo:

mplayer 772691db234dc0b62844eac87f3d21d5.tube

Suena!! ya sabemos donde están los archivos, pero trabajo acabado?

No... es mucho trabajo hacer todo eso a mano, así que, se me ocurre que puedo hacer un script que haga el solo todo el trabajo, y de paso practico un poco shell scripting.

Blogger deforma un poco (en realidad mucho) es script, así que lo he colgado, podeis verlo aquí: http://neobiusnet.googlepages.com/mp3tube.sh

Voy a comentaros un poco el script, se que algunos lo entenderéis perfectamente, pero a alguien le interesará saber como funciona, así que lo explico un poco:

La primera línea: #!/bin/bash simplemente indica que es un script bash.

Después hay una comprobación mediante un if, si no se le ha puesto ningún argumento muestra en la pantalla mediante varios echo, para que sirve el script y como se usa, lo he puesto en inglés para que lo pueda usar mas gente aunque realmente dudo de la calidad de la pagina mp3tube.net, y de si tiene mucha audiencia o no, pero bueno, lo he puesto en inglés de todas formas.

En caso de que si se le haya pasado la url como argumento comienza descargando la pagina html (linea 17), y lo guarda como index.html.

La línea 18 asigna a la variable CANCION, el id de la canción, imprimiendo el archivo index.html, mediante grep se selecciona una línea y luego mediante cut se corta el id.

En condiciones normales cuando se descarga el archivo tiene un nombre absurdo, [id].tube, es imposible saber que canción es, así que para solucionar esto la línea 19 se encarga de tomar el nombre de la propia url:

http://www.mp3tube.net/es/musics/Camaron-Como-el-agua/4844/

En este caso sería Camaron-Como-el-agua.mp3. La forma de hacerlo es dividiendo con cut la url en partes usando como límites las "/" de la url, con -f6 se selecciona la parte que queremos, este es el dato que se asigna a $NOMBRE.

Por último se descarga el archivo, le cambia el nombre a $NOMBRE.mp3 y termina diciendo "El archivo $NOMBRE.mp3 ha sido guardado".

Una cosa que se me había olvidado, gracias a Castigador por su ayuda con el script, ya que tuve unos problemillas con cut.

domingo, julio 08, 2007

Nuevas ideas para entretenerme

Mi principal proyecto para este verano era preparar la fonera para atacar la red del centro tic, pero claro esto se ha visto truncado desde que la deje bricked y no conseguí arreglarla, solo queda esperar a que me envíen el circuito que compre en ebay. En vista de la situación tengo que hacer algo mientras tanto, puedo seguir algunos de mis proyectos de los llamados "históricos", realmente me acabo de inventar el nombre, pero son los que llevo apuntados en la agenda desde hace mucho tiempo, tipo aprender php, seguir con C, practicar análisis forense, leer "The Art of Deception" de Kevin Mitnick... o bien algún proyecto nuevo.

Me ha dado por los wargames, a raíz de que en uno de los blogs que leo Diariolinux.com, hablaba sobre el hackit de la euskal del año pasado, así que me lo he descargado con intención de intentar hacer todos los niveles. Esto me ha traído a la cabeza uno de los históricos, el análisis forense, por ahí tengo las imágenes de varios retos (los tres del reto de Rediris, y creo que alguno de honeynet) así que me ha parecido interesante retomarlo e intentar analizar yo mismo las imágenes a ver que averiguaría y si me atasco ayudarme con los informes, porque no está de mas recordar que los retos ya acabaron y se publicaron los mejores informes de los participantes. Todavía no estoy muy seguro de la segunda opción pero lo del hackit, creo que voy a empezar ahora mismo :)

Problemas con el router

Orange hace tiempo me regaló un router, lo que no me decían es que era defectuoso...

En principio el router es el mismo que el que yo ya tenía, pero creo que tenía alguna actualización de firmware, así que aprovechando que tenía que cambiar la configuración del adsl, decidí cambiar el router y poner el nuevo, a pesar de que el antiguo, en aproximadamente un año que tendrá, no me había dado ni un solo problema.

Este nuevo router a los pocos días de instalarlo me di cuenta de una cosa que no me gustaba nada, el router tiene 4 tomas ethernet, y un led verde que parpadea cuando hay actividad en alguna de ellas, en mi router antiguo esto lo hacía perfectamente, por ejemplo, si el servidor estaba descargando el ultimo disco del Capullo de Jerez, parpadeaba el led correspondiente, y esto me servía para saber de un vistazo si había actividad en la red y por parte de quien. Bueno pues el router nuevo no lo hace así, si hay actividad en cualquiera de los puertos ethernet, parpadean todos los diodos, no solo el que debería hacerlo.

Ese es un primer problema, en realidad es algo un poco insignificante, porque tampoco estoy todo el día mirando el router para ver que pasa en la red, de hecho habitualmente el router y yo estamos en habitaciones distintas, pero por ejemplo cuando estoy en esa habitación y no estoy usando ningun ordenador, pero tengo el server encendido con mldonkey, de un solo vistazo veo si esta funcionando. El caso es que no he considerado esto como razón para cambiar el router.

Pero ya la gota que colma el vaso es que el router cuando se transmiten grandes cantidades de datos por él, simplemente se autoreinicia, se corta la conexión a internet, el wifi, y la propia red local, hasta que el router rearranque. Si tal y como suena, cuando estaba transmitiendo la imagen de la partición de 30 GB, aproximadamente cuando levaba 1500 MB se corto, luego el router una vez reiniciado se iba reiniciando cada si se seguían transmitiendo "tantos" datos, no es capaz de aguantar un trafico de 2 GB, antes se corta y se reinicia, y esto me ha pasado en mas de una ocasión. La primera vez fue con la imagen de 30 GB, luego pasando al portátil unos 4 GB de películas para pasarlas a un dvd, se me corto bastantes veces. Y la última vez me paso anoche, cuando pasaba al portátil los episodios de Cazadores de mitos que me descargué en descarga directa desde Yendit.com (hay peliculas, series... pasaros y echar un vistazo), se corto muchas veces, por supuesto durante este proceso no se puede navegar por internet porque el router no para de reiniciarse, con mucha frecuencia. Por cierto, esto ocurre tanto por wifi como por ethernet.

El primer problema mira, puedo soportarlo, pero el segundo no me hace ninguna gracia, así que voy a cambiar el router y a hacer una prueba, hacer si aguanta un trafico de 15 GB, si no se corta lo dejo así y ya está, si no llamaré a orange a que me manden otro, porque este router nuevo es de junio, y si no funciona bien esta garantía.

PD: Supongo que ya os habréis enterado de la existencia de una nueva fonera, la fonera+, la podéis ver en el blog de Varsavsky, de todas formas es un poco cara (45€), vamos a esperar a los primeros análisis en la red y a ver que tal se porta, si se puede flashear...

Disco duro reparticionado

Finalmente el disco duro ya esta reorganizado y tengo las particiones perfectamente hechas, pero cambié el método que conté en el ultimo post, el procedimiento fue el siguiente:

Resumiendo un poco, la forma inicial que tenía pensada para mover las particiones era hacer imágenes con dd, borrar las particiones, crear particiones iguales pero en el lugar adecuado y luego restaurar con dd. Lo primero que intenté fue hacer la imagen y enviarla sobre la marcha al servidor mediante netcat, no me pareció muy fiable, así que externalicé el disco duro del servidor y lo hice de nuevo, como dieron checksums diferentes no podía fiarme de que ninguno de los dos estuviera bien, pensé en hacer una nueva imagen esperando que tuviera un checksum igual al de alguna de las imágenes existentes. Entonces, justo cuando me iba a poner a hacerlo pensé en otra posibilidad, usar partimage, un software para linux para clonar particiones, si os interesa saber sobre estos softwares y linux os recomiendo este topic del foro de elhacker.net: Sobre clonadores y linux.

Para hacerlo con mayor seguridad iba a hacerlo desde un live cd, de esta forma podría evitar que ninguna de las particiones estuviera en uso, no tocaria ninguna partición. Cogí el primer livecd que vi, el de ubuntu 7.04, así que arranqué con él, así que me conecto a mi red inalámbrica e instalo mediante apt el paquete partimage, porque no lo trae por defecto. Después ejecuto umount /dev/sda* por si hubiera alguna partición montada y luego ya empiezo a realizar todas las imágenes almacenándolas en el disco de 320 GB. Cuando acabe ese proceso abrí gparted y borré las particiones, y las hice de nuevo de la forma adecuada. Por último restaurar con las imágenes y ya esta terminado.

Ahora mismo el disco duro esta así:

-Partición 1: 6 GB, recuperación del sistema (Acer)
-Partición 2: 30 GB, Windows Vista
-Partición 3: 52 GB, extendida: [
-Partición 5: 6 GB, / de ubuntu
-Partición 6: 30 GB, /home
-Partición 7: 500 MB, swap ]
-Partición 4: 35.5 GB, ahora mismo esta del almacen de datos y vacía, seguramente le instale una segunda distro linux.

Con el /home tengo que hacer algo, lo tengo lleno, de los 30 GB estan ocupados 29.5, puedo utilizar la partición 4 para almacenar datos, pero de todas formas prefiero vaciar el home un poco. Hay una cosa que me ha sorprendido bastante, yo me esperaba que esto fuera debido a que tendría algunos archivos grandes que ocupaban mucho, pero no, archivos grandes (~1 GB) solo son 2 o 3, lo que pasa es que la carpeta (/home/neobius) tiene 16485 elementos, la mayoría pequeños, y claro así es normal que coja 30 GB. De todas formas puede que si haya mas archivos grandes que yo no conozca, para ello me acorde de que leí en un blog sobre un programa que te muestra gráficamente lo que ocupa cada archivo, pero era para MAC, de todas formas yo creo que hace tiempo leí sobre alguno para linux, si alguien lo conoce que me lo diga please :) El programa para mac se llama GrandPerspective, por si os interesa a alguno. Para solucionar lo del /home, lo que estoy pensando es simplemente copiarlo al "nuevo" disco duro y borrarlo del portátil.

viernes, julio 06, 2007

Reorganizando el disco duro

El portátil cuando lo compre venia con tres particiones ntfs, la primera 6.83GB, la segunda y la tercera de unos 52 GB cada una. La primera tiene los datos para hacer una recuperación, es decir, reinstalar windows vista y poner el ordenador como venía de fábrica, en la segunda es donde estaba instalado windows vista, y la tercera era para guardar datos.

Yo quería instalar linux en el portátil, ubuntu concretamente, pero no podía eliminar windows porque el ordenador en principio no era solo para mi, os cuento, una de las razones era para poder llevarlo a Badajoz, ya que por la muerte de mi tía, en Febrero tuvimos que ir allí, luego ibamos a hacer un segundo viaje, pero antes decidimos comprar un ordenador portátil para tenerlo allí, bueno no me enrollo mas, el caso es que el portátil no iba a ser yo el único que lo usara, así que no iba a borrar windows. De todas formas por si algun dia quería probar algo pues tampoco está demás tenerlo.

Lo que hice fue borrar la tercera partición, con lo que tenía 50GB para instalar ubuntu, en ese espacio hice dos particiones primarias, de 36.50GB y de 15.80GB respectivamente, ambas con el sistema de archivos ext3. La primera de ellas era para ubuntu y la segunda tanto para guardar datos cuando la de ubuntu se me quedara corta, como para instalar otra distro si me diera por probar alguna o me interesara también tener otra. La partición de ubuntu era una extendida, y dentro de ella hice una de 6GB (/), una de 30GB (/home) y una swap de 500MB, aunque realmente la swap teniendo 2GB de ram nunca se ha usado, pero bueno por si acaso. En la ultima partición, la de 15 GB, al final opté por instalar wifislax, una distro para hacking wifi.

Hace poco, cuando los 30GB del /home se me estaban quedando cortos, pensé que dejar 50 GB para windows vista era exagerado, así que fui a reducir la partición pensando en dejarle unos 15 o 20 gb, pero cuando fui a hacerlo veo que esa particion de 50 GB, con windows vista y el software por defecto de acer, tenía ocupados nada mas y nada menos que 20GB, WTF!!!, al final opté por dejarle 30GB. Así que la situación del disco duro cambió, ahora estaba (y está) así:

-Partición 1: 6.83 GB
-Partición 2: 32.95 GB
-Espacio sin particionar: 19.70 GB
-Partición 3 (extendida):
-Partición 5: 6.00 GB
-Partición 6: 30.01 GB
-Partición 7: 509.84 MB
-Partición 4: 15.80 GB

Y como ya tengo /home al 100% y la partición cuatro, la estoy llenando también pues he pensado que debería "mover" todo y dejar los 20 GB al final y poder hacer la particion 4 mas grande (20+15), así tendré mas espacio útil. Hay varias formas de hacerlo:

-Borrar y hacer todo de nuevo (reinstalar ubuntu, backups...).
-Mover las particiones si es que es posible.
-Hacer una imagen de la partición 3 y borrarla junto con la 4, luego hacer las mismas particiones pero antes, es decir justo después de la partición 2. Restauraría las imágenes de la partición 3, y todo el espacio libre que quedara sería la partición 4.

Voy a optar por la opción, porque yo en ubuntu tengo muchos paquetes instalados y no quiero tener que instalar todo de nuevo, simplemente creo una imagen de la partición y luego la restuaro, pero claro esto trae consigo un problema, dónde guardo la imagen, la solución se me vino a la cabeza enseguida, enviarla según se va creando a mi server y que la guarde en mi flamante disco duro de 320 GB. Todo parece estar bien planeado así que ayer por la tarde me dispuse a hacerlo, para aligerar la tarea conecté la laptop al router con un cable ethernet, porque haciéndolo por wifi es mas lento. Luego ejecuté en mi server:

nc -l -p 9999 >particion.img

Donde 9999 es el puerto por el que va a recibir los datos y particion.img el nombre de archivo donde va a guardar los datos. En la laptop ejecuté esto:

dd if=/dev/sda6 | nc debian 9999

Donde /dev/sda6 es la partición a clonar y debian 9999 son, respectivamente, el host y el puerto a donde se enviaran los datos. El procedimiento es el siguiente, el servidor escucha en el puerto 9999 y lo que reciba en ese puerto lo redirecciona y lo guarda en el archivo particion.img, luego desde el pc cliente (el portátil en mi caso) obtiene bit a bit los datos guardados en el archivo /dev/sda6, que es un archivo especial que representa a la partición 6 del primer disco, entonces se conecta al puerto 9999 de la maquina conocida como debian (es el hostname de mi server) y le envía los datos. Fácil no?

Pues no, no es fácil, porque no se muy bien porque, pero mi router no tragó bien los 30 GB que quise pasar por él, se cortaba muy de vez en cuando y al poco continuaba enviando, y eso la verdad para mi no fue muy buena señal, así que opté por desmontar el disco duro de 320 GB de mi server y externalizarlo usando la caja de mi disco duro externo de 250 GB, hecho esto realize el mismo procedimiento, solo que en vez de enviarlo por la red lo guarde en el disco duro usb:

dd if=/dev/sda6 of=/media/disk/particion.img

Después calculé el md5sum de ambas imágenes, la que hice en local y la que envié por red, fueron resultados diferentes, por lo tanto son archivos distintos, ergo uno o dos están mal, así que tampoco me fié de esta última imagen. Hoy voy a hacer otra imagen de la misma partición y si el md5sum es el mismo que el de alguna de las otras imágenes la tomaré por buena. En caso contrario seguiré hasta que haya dos con el mismo md5sum, ya que no quiero arriesgarme a perder algunos de mis datos. Bueno eso para el /home. Luego tengo que hacer lo mismo con la partición /. La swap obviamente no voy a clonarla y la partición 4 no me interesa clonarla tampoco, ya que simplemente tiene una wifislax y algunos datos que quiero, esos datos los copiaré y el resto lo borro.

Ese es el plan para hoy, así que voy a ponerme a trabajar ahora mismo, a ver si consigo ganar los 19 GB que hay ahí perdidos.

miércoles, julio 04, 2007

Cable para la fonera

Bueno, primero disculpas por no postear estos últimos días, pero como sabéis me cargue la fonera, la deje totalmente cerrada, sin conexión a la red, la única forma de arreglarla era con el cable serie, y el lunes fui a comprar el circuito o en su defecto los componentes para montarlo yo mismo. Tuve que comprar lo segundo y he estado desde entonces intentando hacerlo funcionar... no lo he conseguido.

Si, eso es lo que ha pasado, compre todos los componentes y he intentado hacerlo siguiendo este esquema:





No he podido hacerlo funcionar, lo he hecho de todas las formas posibles, lo he montando y vuelto a montar montones de veces, revisado cada conexión, cada detalle... no ha habido manera, así que tras dos días intentándolo he tomado una decisión, comprar el circuito ya hecho, así que me he ido a ebay y por unos 10$ (gastos de envío incluidos) lo he comprado, a ver cuando me llega. De todas formas quizás de aquí a que llegue me pongo con el circuito alguna vez mas y lo hago funcionar, pero de todas formas ya esta pedido.

Os dejo también con una foto que hice de mi circuito, aunque quiero señalar que falta un cable al puerto serie, porque se salió y le hice la foto sin volver a ponerlo. También quiero decir que en mis pruebas de esta mañana la conexión con la fonera estaba mejor que en la foto, con unos alicates lo ajuste bastante mas y yo creo que estaba bien. No os puedo poner una foto del ultimo montaje porque ya lo desmonté y lo guarde. Bueno la foto es ésta:



Pues nada mas, sólo decir que espero que el blog retome un ritmo mejor, pero es que estos días no he hecho nada que contar, pues como ya os he dicho he estado liado con la fonera.

lunes, julio 02, 2007

Test de adicción a los blogs

Via SigT encuentro un curioso test que mide tu adicción a los blogs, tan sólo son 14 preguntas, este es mi resultado:



Bueno otra cosa, ahora me acercaré a comprar el material para reparar mi fonera, ya os contaré que tal

domingo, julio 01, 2007

Fonera sin conexión

Hoy me he dado cuenta de que mi fonera no tenía conexión a internet, así que me he puesto a investigar que pasaba, empecé a probar configuraciones diferentes en el fichero /etc/config/network. Tras varias configuraciones, no recuerdo exactamente cuales, todas infructuosas, perdí el acceso a la fonera, ni ssh, ni pings, ni nada. Entonces intenté arreglarlo pulsando el botón reset de la fonera... no sirvió para nada, lo hice de todas las maneras posibles, dejándolo pulsado mas tiempo, menos tiempo, con la fonera apagada, con ella encendida... todo inútil.

Total que ahora mismo tengo un ladrillo inútil, pero tranquilos, con el famoso cable que entre otras cosas sirve para abrir el ssh, se puede arreglar, si con el consigo una shell del sistema lo arreglo y ya está, si no, reflasheo y sin mas problemas y en el hipotético caso de que no sea capaz de hacer funcionar bien la fonera con openwrt, le pondría dd-wrt y ya está.

Mañana mismo me acercaré a una tienda de electrónica y espero que me vendan el circuito adecuado, si no compraré los componentes e intentaré montarlo yo mismo, si los astros de alinean para que todo esto salga mal, entonces lo comprare por internet o en ebay o en alguna tienda especializada.

[EDIT]

Lo sorprendente es que hasta ahora no habia podido conectarme a la red wifi creada por la fonera, sin embargo ahora he podido hacerlo y tengo acceso a toda mi red, y a internet. Si recuerdo que la configuración que le deje especificaba gateway, dns, ip y netmask. Que yo sepa la ip que le deje era 192.168.0.5 pero esa ip no responde a nada. Bueno el caso es que la fonera esta viva o al menos eso parece.

De todas formas no deja ningun rastro, ni snifando el trafico veo nada de ella, tampoco aparece nada en un traceroute... es invisible, sin embargo puedo asegurar que no estoy conectado a la red wifi de mi router, estoy conectado a la red wifi de mi fonera, red con essid OpenWrt.

En fin, esperare a comprar mañana el cable y a ver que pasa...

Flashear la fonera

Acabo de flashear la fonera, le he puesto openwrt. Las principales opciones que tenía eran dd-wrt y openwrt. Al final he optado por openwrt porque todo es por consola, en cambio, en dd-wrt es mediante interfaz web (aunque supongo que también se podra mediante consola) y en openwrt es consola pura y dura y yo como tengo ese extraño gusto por la consola en vez de por la interfaz gráfica (hasta cierto punto) pues me he ido a por openwrt.

El proceso no es para nada complicado y os debería funcionar bien sin mayores complicaciones, yo lo he hecho siguiendo este tutorial de Mikelevel sacado del foro fonera.info, que os recomiendo visitar si estáis interesados en la fonera.

Bueno voy a ir comentando todo lo que yo he hecho y para ello utilizaré algunas partes del tutorial que os he dicho y otras cosas las cambiaré para que se pueda hacer desde linux, ya que todas las herramientas que utiliza el tutorial son para windows. Las partes del tutorial que yo no he seguido no las voy a poner aquí tampoco, si lo mio no os funciona y/o queréis leer mas ir a tutorial directamente.

Para empezar debemos contar con acceso ssh a la fonera, si no lo tenéis seguir cualquier tutorial, hay muchos en internet. También tenemos que descargar openwrt, la versión que vayamos a instalar, yo utilicé la última estable, podéis hacer de betatesters y probar nuevas versiones en desarrollo, pero yo prefiero no arriesgarme a tener un fonera bricked. Los archivos que hay que descargar son openwrt-atheros-2.6-root.jffs2-64k y openwrt-atheros-2.6-vmlinux.lzma. Además también necesitaremos un servidor tftp.

El servidor tftp que yo he usado ha sido atftpd (apt-get install atftpd). La configuración es sencilla, ejecutamos dpkg-reconfigure atftpd y dejamos todas las opciones por defecto. Creamos el directorio /tftpboot (sudo mkdir /tftpboot) y ponemos en el los dos ficheros que nos hemos descargado antes.

Ahora entramos por ssh a la fonera y ejecutamos lo siguiente (cada comando es una línea, si hay alguno partido en dos es por el ancho de mi blog, no porque el comando sea así):

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

Cuando la fonera se haya reiniciado ejecutamos esto:

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

Ahora la fonera se reiniciará de nuevo, pero no lo hará completamente y tenemos que entrar al RedBoot, hacemos esto (nota: estos pasos los cuento como los hecho yo):

- Desenchufamos de la corriente la Fonera.
- Enchufamos el cable de red por un extremo a la fonera y por otro al PC
- Configuramos nuestra tarjeta de red con IP 192.168.1.166 (vale cualquiera de 192.168.1.0/24), mascara de subred 255.255.255.0 y sin puerta de enlace.
- Abrimos un terminal, ejecutamos ping 192.168.1.254 y lo dejamos de fondo.
- Abrimos otro terminal y lo dejamos preparado para hacer un telnet a 192.168.1.254 9000, es decir ponemos telnet 192.168.1.254 9000 y lo dejamos ahí no le damos a intro.
- Enchufamos a la corriente la fonera.
- Cuando la fonera devuelva los pings nos conectamos por telnet.

Si ha salido debéis ver el prompt del RedBoot>

Indicamos a la fonera los datos de la red:

RedBoot> ip_address -l 192.168.1.254 -h 192.168.1.xxx

Ahora viene el flasheo, ejecutamos estos comandos, con tranquilidad, esperar a que acaben algunos se toman su tiempo, y mientras se estén ejecutando los comandos no toquéis nada, no pulséis ninguna tecla hasta que no os devuelva el prompt:

RedBoot> fis init
RedBoot> load -r -v -b 0x80040450 openwrt-atheros-2.6-root.jffs2-64k
RedBoot> fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs (OJO : Puede llegar a tardar 20 minutos, en mi caso solo fueron 14)
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
RedBoot> fis load -l vmlinux.bin.l7
RedBoot> exec

Esperamos unos segundos y desenchufamos/enchufamos la fonera, yo desenchufe unos 20 segundos después de que dejara de responder a los pings.

Ahora nos conectamos por telnet a 192.168.1.1 (telnet 192.168.1.1) y creamos una contraseña para root ejecutando passwd root.

Ya tenemos openwrt en nuestra fonera, ya tenemos un linux totalmente operativo en la fonera, a partir de ahora podéis hacer lo que queráis, yo voy a contaros algunas configuraciones que le he hecho.

La ip de mi router es 192.168.0.1 y mi fonera, antes de ser flasheada, tenía la ip 192.168.0.5, así que cambié esta configuración antes de cortar la conexión telnet, ya que tenemos una shell de root delante así que para ahorrar tiempo, para ello, edité con vi el fichero /etc/config/network, y cambié la ip que tenía puesta (192.168.1.1) a 192.168.0.5.

Después si desenchufé la fonera y la volví a poner en su sitio y conectarla al router (casi todo el proceso lo había hecho con la fonera conectada a la laptop). La encendí de nuevo y efectivamente tenía esa ip y me pude conectar a ella por ssh.

Otra cosa que me paso fue que no tenía wifi, WTF!! sin embargo tras buscar un poco, vi algo sospechoso en el archivo /etc/config/wireless:

# disable radio to prevent an open ap after reflashing:
option disabled 1

Por lo que simplemente edité con vi y cambié el 1 por un 0, reboot y ya tenía wifi la fonera. Todavía no he hecho nada más con ella, os seguiré contando mas cosas según vaya haciéndolas.

Antes de acabar decir dos cosas mas, la primera es que ahora voy a investigar un poco este firmware y luego montaré un entorno de laboratorio similar a lo que mi fonera se encontrará en la red de mi centro tic y haré todo el montaje para comprobar el funcionamiento. La otra cosa es que os recomiendo la lectura de este tutorial de openwrt para la fonera que cuenta desde la instalación hasta la configuración básica y al final tiene un montón de enlaces que parecen útiles. Y también el manual oficial de openwrt.

PD: Mi fonera si que aparecía (y aparece) en los mapas, lo que pasa es que no estaba bien situada, por lo visto había que colocarla a mano y yo pensé que poniendo solo la dirección era suficiente y claro como no la situé en el mapa me aparecía en medio del atlántico. Ahora está todo solucionado.

PD2: Tomar nota de la fecha de ayer, desde entonces mi fonera esta flasheada y mi servidor intenta engañar a fon, vamos a esperar 30 días a ver si fon dice algo.