Aircrack-ng "mon0 is on channel -1": Error en Ubuntu. Solución para 11.10, 11.04, 10.10, 10.04.

Aircrack-ng, mon0 is on channel -1La suite Aircrack-ng es una herramienta excelente que, sin embargo lleva bastante tiempo sin ser actualizada. Como las distros y los kernels sí que van evolucionando nos encontramos con que, después de intalar una nueva versión de la distribución, fácilmente el programa deje de funcionar. Por lo que yo he podido comprobar hasta Ubuntu 10.04 el programa funciona perfectamente, pero con la salida de Ubuntu 10.10 Maverick Meerkat comenzó a dejar dejar de funcionar. El problema consiste en que al usar el programa éste no consigue sincronizar con el que canal en el que se encuentra el objetivo y nos da un mensaje de error del tipo: "aireplay-ng: mon0 is on channel -1, but the AP uses channel 3". Siendo 3 el canal en el que esta ocasión se encuentra el objetivo. Este bug ya ha quedado reportado en launchpad desde hace tiempo. Sin embargo las distribuciones, los kernels y los parches siguen progresando.
Para conseguir solucionarlo debemos de aplicar al kernel un parche llamado "Compact wireless", cuya lista de versiones podemos encontrar pinchando aquí. A continuación voy a explicar cómo he solucionado yo este problema en mi Linux Mint 11 Katia (o lo que es lo mismo, un Ubuntu 11.04 Natty Narwhal) con un Kernel 2.6.38-8 Aunque el parche se encuentra explicado en varias webs me he decidido a usar esta como referencia, pese a que no usa la última versión de parche. Por lo que yo sé funciona perfectamente en ubuntu 10.04 Lucid Lynx, ubuntu 10.10 Maverick Meerkat y ubuntu 11.04 Natty Narwhal. Para parchear ubuntu 11.10 simplemente debemos cambiar de versión del parche.
Antes de aplicar el parche debemos de tener claro estas cosas:
1-El parche se ejecuta sobre la versión del kernel que tenemos instalada, de forma que si actualizamos el kernel nos encontraremos con que el programa vuelve a repetir el mismo error. A causa de esto podemos hacer unas de las dos siguientes cosas. La primera opción, la más sencilla, consiste en actualizar el kernel pero no borrar el anterior. De esta manera cada vez que queramos usar aircrack-ng podemos arrancar el sistema desde el viejo kernel. La segunda opción consiste en ir parcheando cada nueva versión del kernel que salga. En el caso del kernel 2 nos encontraremos con pocas o ninguna versión nueva, pero para los kernels 3 sí que hay actualizaciones más frecuentes con lo que habría que estar parcheándolo casi constantemente si queremos tener el último kernel parcheado.
2-El parche tarda un buen rato en aplicarse. No lo he cronometrado pero puede ser en torno a quince minutos en los que veremos que se suceden operaciones en nuestra terminal. Todo esto es normal y debemos de esperar al final del proceso con la confianza de que estamos haciendo lo correcto.
3-Antes de empezar debemos de estar seguros de tener instalados los headers. En caso contrario el parche no podrá realizarse correctamente. Para instalarlos deberemos ejecutar el siguiente comando desde nuestra terminal:

sudo apt-get install linux-headers-generic

Después de estas consideraciones previas paso a explicar el proceso que he realizado y que por lo menos es válido para ubuntu 10.04 Lucid Lynx, ubuntu 10.10 Maverick Meerkat y ubuntu 11.04 Natty Narwhal. Introducimos en nuestra terminal los siguientes comandos:

wget http://www.orbit-lab.org/kernel/compat-wireless-3.0-stable/v3.0/compat-wireless-3.0-rc4-1.tar.bz2 && tar -jxf compat-wireless-3.0-rc4-1.tar.bz2

cd compat-wireless-3.0-rc4-1

wget http://patches.aircrack-ng.org/channel-negative-one-maxim.patch

patch ./net/wireless/chan.c channel-negative-one-maxim.patch


Ahora es conveniente que editemos con gedit para comprobar el archivo. Lo haremos introduciendo este comando en la terminal

gedit scripts/update-initramfs


En el caso de que encontremos una línea que está al principio y que pone esto: "KLIB=/lib/modules/2.6.31-wl/build" debemos sustituirla por esto otro. "KLIB=/lib/modules/$(uname -r)/build". En mi caso, que como dije es el basado en ubuntu 11.04, no he tenido que rectificar nada ya que el único texto que había en el fichero era el segundo.

A continuación ponemos en la terminal:

make && sudo make install && sudo make unload

Esperamos los diez minutos que antes comentaba y, cuando termine, escribimos la última línea

sudo reboot

Hecho esto el ordendor debería reiniciarse y ahora se arrancará con el kernel parcheado. Lo que nos permitirá que aircrack funcione sin problemas.

En el caso de que estemos usando un Ubuntu 11.10 Oneiric Ocelot podemos seguir el proceso descrito aquí y que también se puede ver en el vídeo que está al final de este artículo. Es el que explico a continuación:

Creamos un fichero de texto (por ejemplo con gedit) y ponemos mtodas estas líneas:

#!/bin/bash
sudo apt-get install -y linux-headers-$(uname -r) patch
wget http://www.orbit-lab.org/kernel/compat-wireless-3.0-stable/v3.0.0/compat-wireless-3.0-2.tar.bz2
tar -jxf compat-wireless-3.0-2.tar.bz2
cd compat-wireless-3.0-2/
wget http://patches.aircrack-ng.org/channel-negative-one-maxim.patch
patch ./net/wireless/chan.c channel-negative-one-maxim.patch
make
sudo make install
sudo make unload
sudo reboot


Le damos a guardar. Después nos ponemos encima del fichero, lo renombramos con la extensión sh (por ejemplo: nombredelarchivoqueramos.sh) y le concedemos permisos (botón derecho del ratón, propiedades, permisos y seleccionamos "permitir ejecutar el archivo como un programa").
Después de esto sólo tenemos que pinchar en el fichero que hemos creado y él código que hemos intorducido se encargará de parchear todo de forma automática. El proceso es similar al descrito en la anterior opció del artículo, sólo que se realiza todo de golpe. Podemos ver cómo se hace de esta última forma en este vídeo:

2 comentarios:

Anónimo dijo...

Como comentario realice el procedimiento, pero a manera de nota una vez descargados los patch apaquen la targeta inhalambrica para que no les marque errores en la copilación debido a que marca varios warning xmodule en uso... OK termino excelente.

Funciona mi tarjeta usb ALFA con el chip RTL8187L lo reconoce pero ojo la targeta interna de mi lap muerta no la detecta el kernel al reiniciar y por lo tanto las banderas del dispositivo al ejecutar

sudo ifconfig wlan0 up

no se encuentran, o lo que es igual no funcionan...

tengan cuidado ahora me encuentro intentando solucionar esto con el driver de mi targeta y ndiswrapper o recompilando un nuevo kernel a patin..

Saludos... unomasloco

Andrés dijo...

Reinstala el kernel y se te va a volver todo para atrás (se quita el parche).

Y si no te anda la wifi interna con esa versión de compat wireless puedes ver si hay otra que sí te ande.

Con las instrucciones que están acá lo que hacemos es instalar drivers wifi nuevos (de un kernel más nuevo) pero en vez de instalarlos con el kernel más nuevo los instalamos en el que ya tenemos.
A ese proceso se le llama "backport".

Asi que lo que estamos haciendo acá es un backport de los drivers wifi.

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...