Si alguno es un afortunado poseedor de una tarjeta wifi con chipset Atheros (que es el que viene usando Cisco) debéis saber que todo un mundo de diversión inalámbrica está a vuestro alcance ;-)

Identificar la tarjeta

Bueno... para saber si tenemos una tarjeta yo uso lspci porque yo la tengo integrada, si la vuestra es pcmcia o usb podéis usar cardctl o lsusb respectivamente... para mi caso:
# lspci | grep Ath
00:09.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)
Y ahí la tenemos! bueno pues vamos al siguiente paso...

Instalar los drivers madwifi

Pues nada... si tenemos Debian podemos hacerlo más o menos rápido:
$ m-a a-i madwifi
Como queremos divertirnos, instalaremos un par de cosas más:
$ apt-get install madwifi-tools kismet
Bien... si no tenemos Debian o queremos instalar los drivers a pelo podemos entrar en madwifi.org donde encontramos dos sabores: madwifi y madwifi-old-openhal. Descargáis el que queráis mediante subversion, con make y make install los tendréis compilados y funcionando sin problemas. Las diferencias entre los dos es simple: existe una capa llamada HAL (Hardware Access Layer), es la capa que accede al chipset directamente. El chipset puede manejar frecuencias y potencias de transmisión fuera del rango de los estándares wifi (incluso frecuencias militares...), por ley (según legislaciones de algunos países), los fabricantes de aparatillos inalámbricos deben proporcionar mecanismos para asegurar que sus dispositivos no trabajen en otras frecuencias. En el caso de Atheros ese mecanismo es no proporcionar el código de HAL. Los dos sabores que tenemos son pues:
  • madwifi: HAL cerrado, pero toda la funcionalidad WIFI disponible.
  • madwifi-old-openhal: porciones de HAL abiertas (descubiertas, más bien), a mi me funcionan bien pero no tan bien como el anterior.

Configuración de la interfaz

Una vez cargados los drivers con dmesg deberéis obtener lo siguiente:
ath_pci: 0.9.4.5 (svn r1993)
PCI: Enabling device 0000:00:09.0 (0000 -> 0002)
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNK3] -> GSI 11 (level, low) -> IRQ 11
wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: H/W encryption support: WEP AES AES_CCM TKIP
wifi0: mac 5.9 phy 4.3 radio 4.6
wifi0: Use hw queue 1 for WME_AC_BE traffic
wifi0: Use hw queue 0 for WME_AC_BK traffic
wifi0: Use hw queue 2 for WME_AC_VI traffic
wifi0: Use hw queue 3 for WME_AC_VO traffic
wifi0: Use hw queue 8 for CAB traffic
wifi0: Use hw queue 9 for beacons
wifi0: Atheros 5212: mem=0x64000000, irq=11
Aquí vemos los cifrados hardware soportados, los rates, etc... también vemos que disponemos de la interfaz wifiX (donde X es un número). Si usáis los madwifi con HAL abierto sólo dispondréis de una interfaz nueva athX. Si tenémos wifi0 también tendremos ath0, ésta es la que debemos usar, la configuramos de la siguiente forma (archivo /etc/network/interfaces en caso de Debian/Ubuntu):
  • Todo automático:
    iface ath0 inet dhcp
    Esto hará que se asocie con el punto de acceso que más calidad de señal tenga y haga ahí sus peticiones dhcp.
  • Automático a una determinada red:
    iface ath0 inet dhcp
    wireless-essid UCLM
    
    Esto buscará la red UCLM y hará ahí sus peticiones DHCP, ejemplos de essid pueden ser motorola, Bianco_, etc.
  • Automático en una determinada red con cifrado WEP:
    iface ath0 inet dhcp
    wireless-essid vecino
    wireless-key 1234567890ABCDEF1234567890
    
    Se conectará a la red llamada vecino cifrada con esa contraseña (se detecta el tipo de cifrado según la contraseña).
Si las redes no tienen servicio DHCP se debe especificar una dirección, una máscara y una puerta de enlace como con cualquier otro tipo de interfaz.

Configurar Kismet

Si somos muy curiosos puede ser que queramos tener kismet funcionando. Kismet es una utilidad que permite estudiar redes wifi pero que por si sólo puede ser estudio de futuras recetas. Aquí explicaremos cómo configurarlo para su función con madwifi (los drivers con HAL cerrado). El archivo de configuración especifica sources, una source es un dispositivo inalámbrico capaz de establecerse en modo monitor. La source para el caso de madwifi es la siguiente (archivo /etc/kismet/kismet.conf):
source=madwifi_g,wifi0,madwifi-ng
El primer campo es el driver para la tarjeta, tenemos madwifi_a, madwifi_b, madwifi_g, madwifi_ab y madwifi_ag (consultad la documentación de Kismet y os vienen todos). El segundo campo es el nombre del dispositivo y por último el nombre que asignamos a la source. Si ahora iniciamos kismet (como root o con un usuario con permisos suficientes), la interfaz cambiará a modo monitor y empezará a capturar paquetes como loco, generará una serie de archivos (descripciones de las redes en xml, etc.) y entre ellos el dump en formato libpcap (que puede ser abierto con wireshark) en el directorio /var/log/kismet/. Hay que decir que kismet realiza un acceso bloqueante a la interfaz, con lo que las conexiones wifi se caerán mientras estéis usándolo. También te avisan de que después de usar kismet es probable que la interfaz deje de funcionar correctamente... pero a mi eso nunca me ha pasado.

Interfaces para todos

Otra cosa realmente interesante de madwifi es la posibilidad que nos brinda de crear nuestras propias interfaces wifi "virtuales" mediante la herramienta wlanconfig. Son muchas las posibilidades que nos ofrece, pero veamos algunas "útiles"...
  • Crear una interfaz wifi en modo Ad-Hoc:
    $ wlanconfig ath create wlandev wifi0 wlanmode adhoc
    Usando la interfaz real wifi0 nos creará una nueva, llamada athX, donde X es el siguiente número de interfaz disponible (aunque podemos especificarlo nosotros usando ath2, por ejemplo, en vez de ath).
  • Crear una interfaz en modo monitor:
    $ wlanconfig ath create wlandev wifi0 wlanmode monitor
  • Crear una interfaz en modo access point con una MAC diferente a la nuestra (da escalofríos pensar qué se puede hacer con esto...):
    $ wlanconfig ath create wlandev wifi0 wlanmode ap bssid
    Si coexisten otras interfaces virtuales debemos especificar al final nosbeacon para deshabilitar el uso hardware de los beacon frames.
Esto son sólo un par de ejemplos.... consultad la página man porque te explican hasta como hacer un bridge en unos pocos pasos...

Conclusiones

Aún se han quedado un par de cosas en el aire... como por ejemplo la inyección de paquetes (que también puede hacer la tarjetilla) etc. Pero creo que para ir abriendo boca tenemos suficiente. Es una lástima que el HAL esté cerrado porque desde luego el chipset este parece bastante espectacular...

Enlaces

Multiband Atheros Driver for Wifi Kismet


blog comments powered by Disqus