Está en la página 1de 5

Cómo habilitar el modo monitor en todos los dispositivos?

Tenemos algunos GRANDES problemas aquí, Android es una distribución móvil de Linux,
pero Google no realiza muchas cosas para Android y a los fabricantes no les gusta
que sea portátil o personalizable.

Problema 1:
Los conjuntos de chips más utilizados en los teléfonos inteligentes Android no
tienen controladores con modo de monitor o soporte de inyección de
paquetes/marcos , así que ... necesitamos usar adaptadores externos.

Problema 2:
Los kernels de Android están diseñados para ser livianos y rápidos, por lo que más
del 90% de los controladores no están habilitados de forma predeterminada , solo
los controladores esenciales para el funcionamiento del dispositivo.
Los Kernels de PC tiene una gran cantidad de controladores habilitados de forma
predeterminada, ¡por eso es que con solo conectar y usar funciona en tu PC!

Problema 3
El 99% de los usuarios no se preocupan por aprender sobre el desarrollo de Linux.
Los usuarios tontos son la razón por la que no tenemos dispositivos realmente
inteligentes .

¿Cómo resolver estos problemas?

¿El problema 1 es un problema del fabricante, así que nunca lo tocaremos, el


problema 3? Bueno este solo un meteorito del tamaño del estado de California podria
resolverlo.

Pero podemos resolver fácilmente el problema 2.

Configuración de un entorno de compilación cruzada

¿Lo que necesitamos?

> Distribucción de Linux (se recomienda Debian).


> Mkboot-tools.
> Androi NDK.
> El árbol(tree) de su dispositivo.
> El código fuente de su rom kernel.
> Y algunos conocimientos sobre el desarrollo de Linux y CROSS COMPILE.

Ok, comenzaremos en el momento en que tengas una distribución de Linux instalada.

Descargar mkboot-tools
Mkboot-tools se puede encontrar aquí descargalo y extraelo.

Descargar Android NDK


La cámara NDK de Android se puede descargar aquí

¿Dónde está el árbol(tree) de mi dispositivo y rom Kernel?


No lo sé, si usas stock ROM, lo encontrarás en el sitio web oficial, pero si usas
un ROM personalizado estás jodido porque solo algunos desarrolladores liberan el
código fuente completo.

Si no tiene el árbol(tree) de su dispositivo o el código fuente del kernel,


necesitará crear uno desde cero, busque tutoriales en XDA DEVELOPERS .

Si usted es un usuario de la fuerza (usuario de SAMSUNG), todo se vuelve más


simple, en el sitio web de código abierto de SAMSUNG puede encontrar todo el código
fuente de su dispositivo.

¿Qué controladores necesito?


Necesitas mirar el conjunto de chips de tu adaptador wifi, usa WikiDevi para
encontrar el nombre del controlador del Kernel, enlaces, especificaciones ...

Compilaré ATHEROS, REALTEK y RALINK, pero puede compilar otros como Mediatek,
Broadcom ...

Primer paso
El primer paso es encontrar defconfig para su dispositivo, estará en " arch / arm /
configs / ".

Ahora, necesitamos resolver nuestra compilación cruzada con nuestra cadena de


herramientas creada con la ayuda de Android NDK.

export CROSS_COMPILE=/home/mydumuser/android-toolchain/bin/arm-linux-androideabi- o
export CROSS_COMPILE=/home/mydumuser/android-toolchain/bin/aarch64-linux-
androideabi-

export ARCH=arm ó export ARCH=arm64

make yourdefconfig

Ahora necesitamos cambiar el archivo de configuración del kernel con nuestros


controladores, podemos hacerlo con:

make menuconfig

Se abrirá una ventana ncurses en el terminal, en esta ventana podemos navegar con
las teclas de flechas, enter, tabulador y espacio.

.config - Linux/arm 3.10.100-4ndr4x Kernel Configuration


──────────────────────────────────────────────────────────────────────────────
┌──────────── Linux/arm 3.10.100-4ndr4x Kernel Configuration ─────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ [ ] Patch physical to virtual translations at runtime │ │
│ │ (0x80000000) Physical address of main memory │ │
│ │ General setup ---> │ │
│ │ [*] Enable loadable module support ---> │ │
│ │ [*] Enable the block layer ---> │ │
│ │ System Type ---> │ │
│ │ Bus support ---> │ │
│ │ Kernel Features ---> │ │
│ │ Boot options ---> │ │
│ │ CPU Power Management ---> │ │
│ └────↓(+)─────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└─────────────────────────────────────────────────────────────────────────┘

Para habilitar, los controladores necesitarán habilitar GENERIC IEEE 802.11


(mac80211) ve a Networking support --> Wireless --> Generic IEEE 802.11 (mac80211)
y habilitala con la barra espaciadora, debe ser * porque necesita ser copilada como
un modulo interno, como esto:

.config - Linux/arm 3.10.100-4ndr4x Kernel Configuration


→ Networking support → Wireless ──────────────────────────────────────────────
┌─────────────────────────────── Wireless ────────────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌────↑(-)─────────────────────────────────────────────────────────────┐ │
│ │ <*> Generic IEEE 802.11 Networking Stack (mac80211) │ │
│ │ [ ] PID controller based rate control algorithm (NEW) │ │
│ │ [*] Minstrel (NEW) │ │
│ │ [*] Minstrel 802.11n support (NEW) │ │
│ │ Default rate control algorithm (Minstrel) ---> │ │
│ │ [*] Enable mac80211 mesh networking (pre-802.11s) support (NEW)│ │
│ │ [*] Enable LED triggers │ │
│ │ [ ] Export mac80211 internals in DebugFS (NEW) │ │
│ │ [ ] Trace all mac80211 debug messages (NEW) │ │
│ │ [ ] Select mac80211 debugging features (NEW) ---> │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└─────────────────────────────────────────────────────────────────────────┘

Ahora, regrese e ingrese en Device Drivers --> Network device support --> Wireless
LAN

.config - Linux/arm 3.10.100-4ndr4x Kernel Configuration


→ Device Drivers → Network device support → Wireless LAN ─────────────────────
┌───────────────────────────── Wireless LAN ──────────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ --- Wireless LAN │ │
│ │ < > Marvell 8xxx Libertas WLAN driver support with thin firmwar│ │
│ │ < > Atmel at76c503/at76c505/at76c505a USB cards (NEW) │ │
│ │ < > USB ZD1201 based Wireless device support │ │
│ │ < > Wireless RNDIS USB support │ │
│ │ < > Realtek 8187 and 8187B USB support (NEW) │ │
│ │ < > Simulated radio testing tool for mac80211 (NEW) │ │
│ │ [ ] Enable WiFi control function abstraction │ │
│ │ < > Atheros Wireless Cards ---> │ │
│ │ < > Broadcom 43xx wireless support (mac80211 stack) (NEW) │ │
│ └────↓(+)─────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└─────────────────────────────────────────────────────────────────────────┘

Ahora habilitaremos los drivers, habilitaré ATHEROS, REALTEK y RALINK. NO HABILITEN


LAS OPCIONES DE DEPURACIÓN

Ateros

.config - Linux/arm 3.10.100-4ndr4x Kernel Configuration


[...] Drivers → Network device support → Wireless LAN → Atheros Wireless Cards
┌──────────────────────── Atheros Wireless Cards ─────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ --- Atheros Wireless Cards │ │
│ │ [ ] Atheros wireless debugging (NEW) │ │
│ │ [*] Atheros bluetooth coexistence support (NEW) │ │
│ │ <*> Atheros 802.11n wireless cards support │ │
│ │ [*] Atheros ath9k AHB bus support │ │
│ │ [ ] Atheros ath9k debugging (NEW) │ │
│ │ [*] Atheros ath9k rate control │ │
│ │ <*> Atheros HTC based wireless cards support │ │
│ │ [ ] Atheros ath9k_htc debugging (NEW) │ │
│ │ <*> Linux Community AR9170 802.11n USB support │ │
│ │ [*] SoftLED Support (NEW) │ │
│ │ <*> Atheros mobile chipsets support │ │
│ │ <*> Atheros ath6kl SDIO support │ │
│ │ <*> Atheros ath6kl USB support │ │
│ │ [ ] Atheros ath6kl debugging (NEW) │ │
│ │ [*] Atheros ath6kl tracing support │ │
│ │ <*> Atheros AR5523 wireless driver support │ │
│ │ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└─────────────────────────────────────────────────────────────────────────┘

RALINK

.config - Linux/arm 3.10.100-4ndr4x Kernel Configuration


[...] Drivers → Network device support → Wireless LAN → Ralink driver support
┌───────────────────────── Ralink driver support ─────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ --- Ralink driver support │ │
│ │ <*> Ralink rt2500 (USB) support │ │
│ │ <*> Ralink rt2501/rt73 (USB) support │ │
│ │ <*> Ralink rt27xx/rt28xx/rt30xx (USB) support │ │
│ │ [*] rt2800usb - Include support for rt33xx devices (NEW) │ │
│ │ [*] rt2800usb - Include support for rt35xx devices (EXPERIMEN│ │
│ │ [*] rt2800usb - Include support for rt53xx devices (EXPERIMEN│ │
│ │ [*] rt2800usb - Include support for rt55xx devices (EXPERIMEN│ │
│ │ [*] rt2800usb - Include support for unknown (USB) devices │ │
│ │ [ ] Ralink debug output (NEW) │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└─────────────────────────────────────────────────────────────────────────┘

REALTEK

.config - Linux/arm 3.10.100-4ndr4x Kernel Configuration


→ Device Drivers → Network device support → Wireless LAN ─────────────────────
┌───────────────────────────── Wireless LAN ──────────────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌────↑(-)─────────────────────────────────────────────────────────────┐ │
│ │ < > Broadcom 43241 wireless cards support │ │
│ │ < > Broadcom 43455 wireless cards support │ │
│ │ < > Broadcom 4334W wireless cards support │ │
│ │ < > Broadcom 43454 wireless cards support │ │
│ │ (/system/etc/firmware/fw_bcmdhd.bin) Firmware path │ │
│ │ (/system/etc/wifi/bcmdhd.cal) NVRAM path │ │
│ │ < > Broadcom IEEE802.11n embedded FullMAC WLAN driver │ │
│ │ < > IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) │ │
│ │ < > Marvell 8xxx Libertas WLAN driver support │ │
│ │ < > Softmac Prism54 support (NEW) │ │
│ │ <*> Ralink driver support ---> │ │
│ │ <*> Realtek wireless card support │ │
│ │ [ ] Debugging output for rtlwifi driver family │ │
│ │ <*> Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter │ │
│ │ [ ] TI Wireless LAN support ---> │ │
│ │ < > ZyDAS ZD1211/ZD1211B USB-wireless support (NEW) │ │
│ │ < > Marvell WiFi-Ex Driver │ │
│ │ < > SPRD Wireless LAN Support │ │
│ │ [*] sprdwl mem alloc │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└─────────────────────────────────────────────────────────────────────────┘

Ok, todo hecho, ahora necesitamos guardar y salir .

Ahora tendra que ejecutar los comandos para compilar la imagen del Kernel, estos
comandos son específicos para cada dispositivo o rom y los encontraran en el
árbol(tree) de su dispositivo.

Después de terminar la compilación, encontrará la imagen del kernel en " arch /


(arm / arm64) / boot / zImage "
Para construir su boot.img necesitará desempaquetar su boot.img normal usando
mkboot-tools (Instrucciones en el archivo README del repositorio).

Reemplace el "kernel" por tu zImage, renómbrelo a "kernel", borra "kernel size" y


"ramdisk_size", empácalo de nuevo y tendrás tu nuevo boot.img con los drivers
habilitados.

Instálalo usando twrp zip, odin ...

Ahora para terminar, necesita descargar el firmware de los drivers y ponerlo en " /
etc / firmware "

¡Feliz hacking!

También podría gustarte