martes, 22 de septiembre de 2009

Flasheando el dir 300

Hace unos días, después de una visita al canal de chat de Buenos Aires Libre (#buenosaireslibre en freenode) me arme de valor y la instale DD-WRT (Un firmware basado en Linux para routers, con una gran cantidad de funcionalidades) a mi DIR-300. Use dos guías diferentes: la oficial, que es bastante escueta, y otra, para un router similar, que explica como configurar nuestra máquina para que el flasheo sea un éxito. Decidí escribir una guía en castellano, con bastante información que no hay sobre el proceso.

Conceptos Generales:
Herramientas que vamos a utilizar:

-GNU/Linux, en el sabor que mas nos guste. (Yo personalmente utilice Ubuntu Jaunty 9.04)

-Un servidor tftp (En Debían y derivados sudo apt-get install tftp xinetd tftpd).

-El archifamoso Putty (sudo apt-get install putty)

-Un cable de Red (Elemental Watson!)

-Los archivos ap61.ram, ap61.rom, linux.bin y dir300-firmware.bin (En su versión mas actualizada, desde el sitio oficial)

Hay cinco pasos principales para flashear el router:
1)Configurar el servidor tftp en la máquina que vamos a utilizar y verificar su funcionamiento.
2)Entrar al RedBoot del DIR- 300. Para eso vamos a usar un script de bash, que nos va a simplificar el trabajo.
3)Cargar el RedBoot modificado(ap61.ram) en la memoria del router.
4)Cargar la imagen de linux, linux.bin.
5)Configurar el script de inicio del router.

--Configurando el servidor tftp---

1-Instalamos, usando apt-get xinetd, tftpd y tftp
Bash:~$ sudo apt-get install xinetd tftpd tftp

2-Creamos el archivo de configuración en /etc/xinetd.d
Bash:~$ sudo gedit /etc/xinetd.d/tftp
Y le ponemos como contenido:

----Código----
service tftp
{
protocolo = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /tftpboot
disable = no }
----/Código----

3- Creamos el directorio /tftpboot, que es la carpeta que contiene los archivos compartidos por tftp y le damos permisos para que sea de acceso irrestricto, y no sea propiedad de nadie

Bash:~$ sudo mkdir /tftpboot
Bash:~$ sudo chown -R nobody /tftpboot/
Bash:~$ sudo chmod -R 777 /tftpboot/

4- Si no descargamos los archivos aun, lo hacemos ahora y los ponemos en nuestro directorio /tftpboot/ (son cuatro archivos en total)

5-Reiniciamos xinetd
Bash:~$ sudo /etc/init.d/xinetd stop
Bash:~$ sudo /etc/init.d/xinetd start

6- Probamos que todo funcione correctamente:
Bash:~$ tftp 127.0.0.1 #Nos conectamos por loopback al servidor que esta corriendo en nuestro equipo
tftp> verbose #Ponemos a la sesion en modo verbose, asi tenemos mas feedback de lo que pasa.
Verbose mode on.
tftp> get linux.bin #pedimos el archivo linux.bin
getting from 127.0.0.1:linux.bin to linux.bin [netascii]
Received 3764422 bytes in 0.5 seconds [60230752 bits/sec]]]
tftp> quit #terminamos la sesión
Nuestro servidor tftp funciona!!!!!

----Entrando al RedBoot----
No es fácil entrar al RedBoot sin la ayuda del siguiente script:

---Codigo---
#!/bin/bash
echo

echo ""
echo "Ingrese el nombre o la direccion IP del host: "
read host
while true
do
if eval "ping -c 1 -s 1 $host" > /dev/null; then
echo "Router Awake"
putty telnet://$host 9000 -m redboot.txt
break
else
echo "Esperando al Redboot para iniciar. Presione CTRL + C para salir"

sleep 1
fi done
---/Código---


Le ponemos el nombre que mas nos guste, en mi caso router.sh.

Tenemos que crear también un archivo redboot.txt que contenga lo siguiente:
---Código---
^C
-
--/Código---

Ahora empieza la acción!!!

-Desconectá el router (todos los cables de red y la energía), dale un besito de buenas noches y prometele que después de la operación va a sentirse mucho mas enérgico, animado, y funcional.
-Enchufa la computadora al router, usando el cable de red, en el puerto WAN.
-Cambia la ip de tu equipo a 192.168.20.80
Bash:~$ sudo ifconfig eth0 192.168.20.80 up #cambia eth0 por la interface que estes usando.
-ejectuta el script router.sh:
---Sesión de Bash---
Bash:~$ sudo ./router.sh

Ingrese el nombre o la direccion IP del host:

192.168.20.81 #esto lo ingresamos nosotros y le damos enter
Esperando al Redboot para iniciar. Presione CTRL + C para salir # Ahora conectamos la energia al router, despues de un momento nos tendria que abrir una ventana de putty
---Sesión de Putty---
RedBoot> load ap61.ram #Ojo!! es el ap61.ram, no se confundan con el ap61.rom!

RedBoot> go #La sesión va a ser terminada, ni se te ocurra resetear el router!

---/Sesión de Putty---

#Nos conectamos por cualquier puerto LAN del router, teniendo cuidado de no desconectar la alimentación
Bash:~$ sudo ifconfig eth0 192.168.1.20 up #Cambiamos la Ip a 192.168.1.20
Bash:~$ sudo ./router.sh #volvemos a usar nuestro lindo script para conectarnos al router
Ingrese el nombre o la direccion IP del host:
192.168.1.1

Esperando al Redboot para iniciar. Presione CTRL + C para salir.

---Sesión de Putty---

DD-WRT> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System

... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x807f0000-0x80800000 at 0xbffe0000: .
DD-WRT> ip_address -h 192.168.1.20
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.20
DD-WRT> load -r -b %{FREEMEMLO} ap61.rom

Using default protocol (TFTP)
Raw file loaded 0x80080000-0x800a8717, assumed entry at 0x80080000
DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot
An image named 'RedBoot' exists - continue (y/n)? y
... Erase from 0xbfc00000-0xbfc30000: ...
... Program from 0x80080000-0x800a8718 at 0xbfc00000: ...
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x807f0000-0x80800000 at 0xbffe0000: .
DD-WRT> reset
#El Router se va a reiniciar, con el nuevo bootloader, por lo tanto, cerramos la ventana de putty y esperamos ~1 minuto, para volver a lanzar el script de conexión.
---/Sesión de Putty---
Bash:~$ sudo ./router.sh #volvemos a usar nuestro lindo script para conectarnos al router
Ingrese el nombre o la direccion IP del host:

192.168.1.1
Esperando al Redboot para iniciar. Presione CTRL + C para salir.
---Sesión de Putty---
DD-WRT> ip_address -h 192.168.1.20
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.2

DD-WRT> load -r -b 0x80041000 linux.bin #tomate unos segundo para chequear bien los números en Hexadecimal.
DD-WRT> fis create linux # Esta operación tarda unos minutos, tené paciencia
DD-WRT> fconfig boot_script true

DD-WRT> fconfig boot_script_timeout 4
DD-WRT> fconfig
Run script at boot: true
Boot script: Enter script, terminate with empty line
>> fis load -l linux
>> exec
>> Boot script timeout (1000ms resolution): 3 #Apretamos Enter
Use BOOTP for network configuration: false #Apretamos Enter
Gateway IP address: #Apretamos Enter
Local IP address: #Apretamos Enter
Local IP address mask: #Apretamos Enter

Default server IP address: #Apretamos Enter
Console baud rate: 9600 #Apretamos Enter

GDB connection port: 9000 #Apretamos Enter

Force console for special debug messages: false #Apretamos Enter

Network debug at boot time: false #Apretamos Enter
Update
RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0×80ff0000-0×81000000 at 0xbffe0000: .
DD-WRT> reset
---/Sesión Putty---
---/Sesión Bash---

Ya tenemos el ddwrt instalado!
Normalmente, no te va a levantar la ip automagicamente, para eso, desconecta el cable de red, espera que el router termine de arrancar, y volvelo a conectar, es un bug conocido de DD-WRT.

Para entrar a la configuración web:
http://192.168.1.1

Fuentes:
Sitio Oficial
Guia Oficial
Guia Copada del foro ddwrt
Archivos para el DIR-300 (Poniendo DIR 300 en el cuadro de busqueda)


lunes, 7 de septiembre de 2009

Mi dell esta cada vez mas cerca!!

Gracias al Post en criadoindomable.wordpress.com donde están los números de teléfonos de la empresa de transportes de Dell en argentina, ya se que esta en el país, y si todo sale bien me la entregan, a mas tardar, el día miércoles!

Es increíble lo malo que es el servicio de soporte de ventas de Dell en argentina, ellos me dijeron que me estaría llegando en 25 días hábiles!! una locura!

En el mismo post me entere que tengo un upgrade gratuito a windows 7 home, que es mejor que tener gastando espacio en disco a un desastre como el Vista. Igual ya estoy poniendo a descargar la nueva versión de Ubuntu. (Estoy pensando en ponerle también un Debian)

viernes, 4 de septiembre de 2009

Pycon Argentina 2009 - Dia '-1' (Jueves 3 de septiembre)

14:00hs - Universidad de Belgrano.

Estamos citados, junto a la gente de BAL para planificar la instalación de la cobertura de internet wifi de la PyCon. Inicialmente nos juntamos con Facundo Batista, coordinador general del evento, para descargar los programas, tutoriales, anotadores y aguas para oradores (unos cientos de kilos de papel y agua). Yo, para ahorrar tiempo relevo unas interesantes rosetas de red, categoría 6 (un lujo). Nuestro contacto de referencia nos dio una explicación muy confusa de que bocas y cables podíamos usar y que no, de paso nos cuenta que en lugar de una conexión ADSL de Telecom, vamos a tener un servicio corporativo de Fibertel, de 5Mb de Download(640kb/s), y unos pobres 512Kb (64kb/s) de Upload. Hasta este punto parece que todo viene viento en popa.
Tuvimos que contratar nuestro propio enlace de internet, porque, según nos cuentan, la gente de sistemas de la UB es bastante vaga, y tienen miedo de que les sobrecarguemos el enlace, y que los hackers que vienen a la convención les vulneren todo.

16:00hs - Universidad de Belgrano - El horizonte se desdibuja

Nos dicen que no vamos a poder usar los cables que estan tan bien ubicados en las salas, y que busquemos los cables que habían puesto para las jornadas regionales. Lamentablemente, los usaron para pasar los nuevos, hermosos y relumbrantes cables de categoria 6. En este momento solo teníamos un cable desde el lugar donde luego pondrían Fibertel hasta el subsuelo, donde estarían los stand de los sponsors y de la comunidad. Eso dejaba sin cobertura a los auditorios, desde donde nuestro ansioso publico querria twitear, actualizar sus blogs y navegar sin parar.
Estabamos en un estado de desconcierto, que se convirtió en general cuando los instaladores de Fibertel nos plantearon un panorama desconcertante: no había un cable desde el centro de la manzana (donde estan las pacheras de fibertel) y el cuartito donde tenian que poner el router.

17:00hs - Universidad de Belgrano - Vemos Tierra a la distancia.

Los muchachos lograron conectar Fibertel, ahora teníamos internet, pero no teníamos como llegar a cada uno de los accespoint de BAL. Entonces se me enciende un chispazo de inteligencia y planee un plan de emergencia:
Las bocas están conectadas a un switch, que entrega direcciones por DHCP, pero en el fondo, no es mas que eso: un switch. ¿¿¿ Porque no nos conectamos por las bocas, de forma, semi ilegal, y creamos rutas estáticas entre los acces point y el router que va a natear la conexión de Fibertel, dejando que los accespoint nateen y hagan DHCP??, usamos nuestro enlace de Internet, y la red de la UB no peligra.
Cuando le plantee esto al contacto de la UB se horrorizo. Ellos no tenia forma de monitorizar que no lo hiciéramos. Me pidió que esperemos, que iba a tratar de gestionarnos la llave para que usemos la pachera, y no pasemos por su switch. Con los chicos de BAL decidimos que para pasar el rato podíamos ir configurando los equipos wireless. Al caos general se sumo que no teníamos un router, ya que diegui (A.K.A. dmascialino) había prestado su linksys wrt54g, pero yo no había llegado a pasar a buscarlo.

19:00hs - Universidad de Belgrano - Hackeando los sistemas de la UB

Finalmente nos autorizaron a usar la pachera, pero, detalle, me trajeron una llave como la de la puerta de mi casa, que obviamente no era la que necesitábamos (Entiéndase que es un gabinete para montar unidades de rack, con un pequeño agujero por debajo, donde acometen los cables, y una puerta de vidrio, muy paqueta con cerradura tipo candado). A esta altura ya me estaba por explotar el cuerpo en mil pedazos, pero me arme de valor y le dije que si no lo habría, yo rompería la cerradura, sin ninguna culpa. Él me autorizo, así que me puse en acción. Busque mis destornilladores, y opte, como primera opción en usar la fuerza bruta. Todos sabemos que el hacking por fuerza bruta no es demasiado eficiente, así que después de varios intentos, decidí buscar algún bug en la configuración de la caja, para desactivar la protección desde adentro.
Por suerte ese bug existia, y logre llegar con mi mano, atravez del agujero de acometida de cables, sorteando el haz de cables y el enlace de fibra optica (super paquete) hasta la parte trasera de la cerradura, donde comprobé, con mayor fortuna, que había un tornillo.
Entonces con valentia, y rezando porque nadie de seguridad me viera, meti un destornillador y vulnere la maldita cerradura. A los 5 minutos llegaron con otra persona de sistemas, con otro destornillador. Por suerte el trabajo ya estaba hecho ¡y algo mejor!, la cerradura quedo desactivada para futuras convenciones.

19:00hs Universidad de Belgrano - Esperando la Carroza.

Despues de configurar junto a gacq (de BAL) los access point, (unos aparatos muy lindos que pueden ver aca) nos quedamos esperando que peter (tambien de BAL) cayera con el linksys WRT54GL, con dd-wrt, que se encargaría del routeo. Por suerte todo funcionó correctamente, pero nos enteramos de algo muy gracioso: 2 horas antes, los muchachos de Fibertel, dejaron sin televisión a toda la UB (¿¿quién necesita tele en una universidad??)

21:00hs Casa


Estoy reventado, me voy a dormir sin saber lo que me espera mañana.....