sábado, agosto 04, 2007

Ya funciona la fonera!!!

Como sabéis estos últimos días he estado haciendo alguna cosilla con el LFS y también tenía pendiente la reparación de la fonera, ya que con ella pensaba desarrollar mi principal proyecto del verano. Bueno los que seguís el blog sabéis la historia de mi fonera, la flasheé, para hacer con ella algunas cosas en el centro tic, pero luego la deje sin conexión, desconfiguré la red y la deje totalmente aislada, pero podía recuperarla utilizando el cable serie que o bien lo montaba yo mismo, cosa que no fui capaz de hacer, o bien lo compraba montado, que también lo hice. Sin embargo cuando llegó intente usarlo pero fracasé y creo que fue debido a mi gran habilidad para soldar. Entonces ya la dejé abandonada una temporada... hasta ayer.

Lo que pasa es que hablando en el irc Uticox me preguntó por mi fonera, le dije que seguía bricked, que yo ahora estaba con el LFS, el me respondió que yo hacía muchas cosas pero no acababa ninguna y que el que mucho abarca... Y lleva toda la razón del mundo, la fonera que era mi gran proyecto para el verano lo había dejado simplemente porque había surgido un problemilla que no fui capaz de solucionar tras varios intentos, así que le dije, hoy estoy con el LFS y quiero seguir con él, pero mañana mismo me pongo con la fonera y la arreglaré. Bueno cuando llego "mañana" (antes de ayer) no seguí con la fonera, porque estuve en la playa y luego por la tarde salí un rato y luego quería leerme los feeds del día. Pero ayer si que cogí la fonera y dije de hoy no pasa, hoy la arreglo, y si no me pongo a trabajar con ella hasta que funcione, no puede ser que yo no pueda repararla. Así que cogí los materiales electrónicos, la fonera, el cable serie, y el manual para conectarlo todo.

Cuando fui a empezar ya tuve el primer problema, los pines que hay que soldarle al circuito estaban mal soldados, a parte de que la soldadura tenía un aspecto muy feo, tenía algunas grietas, y un pin estaba soldado junto con el de al lado, por poquísimo, pero hacía contacto, así que nada a quitar todo esto y a soldarlo de nuevo. Bastó con mover un poco los pines para que todo el estaño se despegara, se rompiera y se cayera (podéis imaginaros la calidad de mi soldadura xD), así que nada a soldar de nuevo, cogí el estaño y un soldador, pero antes de usarlo busqué un manual de como soldar, ponía que hay que calentar el componente y poner el estaño al lado, para tratar de que sea el componente quien derrita el estaño. Así que nada lo intento, pero mas problemas, espero, espero, sigo esperando, pero no soy capaz de recrear lo que pone en el manual, se ve que el soldador sera muy malo y no se calienta lo suficiente. Entonces recuerdo que en casa hay dos soldadores, voy a buscar el otro... y lo intento de nuevo, pero este se calienta demasiado!! pongo el soldador tocando el pin y por el otro lado del pin pongo el estaño para que se derrita cuando el pin tenga la temperatura adecuada, pero entonces empieza a oler a quemado y el pin se mueve, hasta el punto de se sale, le doy la vuelta al circuito (lo tenia bocabajo para soldar) y veo que el plástico negro que une los 6 pines esta deformado y un poco quemado. Y ahora que hago? un soldador no calienta y el otro calienta demasiado...

Intenté practicar con cables, si, soldando cables, y salía mas o menos bien. Intenté de nuevo con el circuito, cogí seis pines nuevos (porque los otros ya era para tirar), pero tampoco fue bien, con el primer soldador no había manera, no se llegaba a calentar lo necesario (pero si le ponía el estaño directamente en la punta lo fundía al instante), probé con el otro de nuevo, pero con intención de ponerlo muy poco tiempo para que lo pines no se derritieran, fracasé.

Cambio de estrategia, si no soy capaz de hacerlo por hardware vamos a seguir intentándolo por software. Se me ocurrieron varias cosas, pero para empezar la conecté al router y la enchufé, porque a lo mejor por algún fenómeno físico-cuántico la fonera funcionaba bien. Ahora paso una cosa un poco rara, la fonera creo una red inalámbrica abierta con essid OpenWrt, me conecto a ella y tengo acceso a internet, un traceroute para que ver que pasa y WTF! lo primero que aparace es mi router (192.168.0.1), intento conectarme a mis otras máquinas y puedo perfectamente, tengo acceso a mi red local, es decir, que la fonera es un puente invisible entre mi router y yo. Próximo paso? pues se me ocurren dos cosas una muy sencilla, y otra mas compleja, la primera es conectar la fonera a mi laptop y snifar a ver que pasa, la otra es montar una segunda tarjeta de red en mi server y convertirlo en un router, el plan es que mi server este conectado al router y a la fonera, y que el trafico de la fonera lo pase por la otra tarjeta de red hasta el router y de ahí a internet. La parte interesante es que la fonera creara su red OpenWrt, yo me conectaré a ella con la laptop navegaré un poco y todo el tráfico pasara por mi server, donde podré snifarlo todo y ver que huellas deja la fonera en los paquetes tcp, si tuviera un router con linux no tendría tantas complicaciones... Siguiente problema: no se como convertir mi server en un router, así que al amigo google y a buscar un poco. Pero en ese momento recordé que en fonera.info hay un tutorial de como recuperar una fonera mal flasheada, y pensé que mejor releerlo antes de seguir con este complejo (y seguramente inútil) plan. Leo que redboot puede iniciarse al arranque y esperar una conexión durante unos segundos y luego seguir con el arranque normal (redboot se usa para flashear la fonera). Pero chicos, se hace tarde, mañana por la mañana comprobaré si mi fonera arranca el redboot e ese modo, en cuyo caso podré reflashearla y asunto solucionado!

Hoy cuando me he levantado, como de costumbre me acerco enciendo el router, y el servidor, pero esta vez también cogí la fonera, el alimentador, y un cable cruzado. Me tiro en el sofá con el portátil, lego poco los feeds y luego ya me dispuse a probar lo de la fonera. Configuro mi tarjeta de red ethernet con ip 192.168.1.166, netmask 255.255.255.0 y sin gateway. También desactive el wifi para evitar problemas. Después conecto la fonera al portátil con el cable cruzado, abro un terminal con dos pestañas y en una pongo ejecuto un ping a 192.168.1.254 y en la otra dejo preparado un telnet 192.168.1.254 9000 para ejecutarlo en cuanto esa ip responda al ping. A continuación conecto la fonera a la corriente eléctrica, y al poco empiezo a ver que responde a los pings! raudo y veloz ejecuto el telnet y se conecta, pero me suelta un bonito mensaje:

== Executing boot script in 8.723 seconds - enter ^C to abort

Yo no se exactamente a que se refiere con ^C, pero yo lo interpreté como crtl+c, no sirvió, lo intenté de nuevo y tampoco valió para nada. Entonces, como en todos los manuales hablaba de putty, decidí intentarlo con putty, y esta vez el resultado fue diferente, el propio putty se encargó del tema, esto fue lo que apareció en el terminal de putty:

== Executing boot script in 8.723 seconds - enter ^C to abort
^C
RedBoot>

Ya tenía el prompt de reboot!! y yo todavía conservo el servidor tftp en mi portátil, el mismo que monte en su día cuando la flasheé por primera vez, y en el todavía tengo los archivos necesarios para el flasheado, así que comencé a introducir los comandos y tras un rato ya tenía la fonera flasheada de nuevo con openwrt. Sobre como flashearla ya escribí un post.

Una vez se ha acabado el flasheo hay que reiniciar la fonera y conectarse por telnet a la ip 192.168.1.1, y tendremos una shell de la fonera, en la cual hay que setear un password para root y partir de ahí las próximas conexiones serán por ssh. Mi problema ahora fue que no podía contactar con 192.168.1.1, y acaba de flashear! bueno tras varios intentos fallidos volví a flashear y tampoco podía conectar de ninguna forma con la fonera, pero entonces puse el wireshark a funcionar y reinicié la fonera, después vi que la fonera preguntaba por 192.168.1.254, y entonces pensé, y si me pongo esa ip, al mejor ya puedo conectarme a ella, lo hice y funcionó, hice el telnet, le puse el password y volví a reiniciar, ahora para probar que todo estaba bien conecté por ssh a la fonera y funcionó, por último configure una cosa, la ip de la fonera, porque mi red no está en ese rango, así que le puse la que le correspondía, 192.168.0.5, apago, la conecto al router y ya es visible para toda mi red. Ya funciona bien, y lo mejor no es eso, lo mejor es que aunque se me vuelva a estropear, lo puedo solucionar de la misma forma, porque redboot esta configurado para escuchar durante el arranque en la ip 192.168.1.254 puerto 9000 durante 10 segundos, así que si me vuelvo a cargar el sistema operativo puedo reflashear con toda la tranquilidad del mundo y sin cable serie!!! Por cierto quien quiera conseguir esto que lea este tutorial (aunque a mi tras flashearla la primera vez se me puso esa configuración): Configurar el Redboot para poder entrar por telnet

Bueno ya para acabar comentar que la inactividad de los últimos días ha sido por culpa de la playa, de los cazadores de mitos, de alguna salida, y del lfs. Ahora espero estar ocupado con la fonera, os iré contando mis avances con ella. Y el LFS para cuando este lista la fonera, porque no esta de mas recordar que era un proyecto de "relleno" para entretenerme mientras no tenía fonera.

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