Como habilitar o modo monitor em todos os dispositivos?
Temos alguns GRANDES problemas aqui, o Android é uma distribuição móvel do Linux,
mas o Google não faz muitas coisas para Android e os fabricantes não gostam
que seja portátil ou personalizável.
Problema 1:
Os conjuntos de chips mais utilizados em smartphones Android não
têm controladores com modo de monitor ou suporte de injeção de
pacotes/marcos, então... precisamos usar adaptadores externos.
Problema 2:
Os kernels do Android são projetados para serem leves e rápidos, por isso mais
90% dos controladores não estão habilitados por padrão, apenas
os controladores essenciais para o funcionamento do dispositivo.
Os Kernels de PC têm uma grande quantidade de drivers habilitados de forma
predeterminada, ¡por eso es que con solo conectar y usar funciona en tu PC!
Problema 3
99% dos usuários não se preocupam em aprender sobre o desenvolvimento do Linux.
Os usuários burros são a razão pela qual não temos dispositivos realmente
inteligentes.
Como resolver esses problemas?
O problema 1 é um problema do fabricante, então nunca o tocaremos,
problema 3? Bueno este solo un meteorito do tamanho do estado da Califórnia poderia
resolverlo.
Mas podemos resolver facilmente o problema 2.
Configuração de um ambiente de compilação cruzada
O que precisamos?
Distribuição de Linux (se recomenda Debian).
Mkboot-tools.
Androi NDK.
A árvore do seu dispositivo.
O código fonte do seu kernel rom.
E alguns conhecimentos sobre o desenvolvimento de Linux e CROSS COMPILE.
Ok, começaremos no momento em que você tiver uma distribuição Linux instalada.
Download mkboot-tools
Mkboot-tools pode ser encontrado aqui, baixe-o e extraia.
Baixar Android NDK
A câmera NDK do Android pode ser baixada aqui
Onde está a árvore (tree) do meu dispositivo e rom Kernel?
Não sei, se você usar ROM de estoque, você encontrará no site oficial, mas se você usar
um ROM personalizado você está ferrado porque apenas alguns desenvolvedores liberam o
código fonte completo.
Se não tiver a árvore do seu dispositivo ou o código fonte do kernel,
você precisará criar um do zero, procure tutoriais no XDA DEVELOPERS.
Se você é um usuário da força (usuário da SAMSUNG), tudo se torna mais
simples, no site de código aberto da SAMSUNG você pode encontrar todo o código
fonte do seu dispositivo.
Que controladores eu preciso?
Você precisa olhar o conjunto de chips do seu adaptador wifi, use o WikiDevi para
encontrar o nome do controlador do Kernel, links, especificações ...
Compilarei ATHEROS, REALTEK e RALINK, mas posso compilar outros como Mediatek.
Broadcom ...
Primeiro passo
O primeiro passo é encontrar o defconfig para o seu dispositivo, que estará em "arch/arm/"
.
Agora, precisamos resolver nossa compilação cruzada com nossa cadeia de
ferramentas criadas com a ajuda do Android NDK.
export CROSS_COMPILE=/home/mydumuser/android-toolchain/bin/arm-linux-androideabi- o
exportar CROSS_COMPILE=/home/mydumuser/android-toolchain/bin/aarch64-linux-
androideabi-
export ARCH=arm ó export ARCH=arm64
faça seu defconfig
Agora precisamos alterar o arquivo de configuração do kernel com nossos
controladores, podemos fazê-lo com:
fazer menuconfig
Uma janela ncurses será aberta no terminal, nesta janela podemos navegar com
as teclas de flechas, enter, tabulador e espaço.
Linux/arm 3.10.100-4ndr4x Configuração do Kernel
──────────────────────────────────────────────────────────────────────────────
┌──────────── Configuração do Kernel Linux/arm 3.10.100-4ndr4x ─────────────┐
│ As teclas de seta navegam pelo menu. <Enter> seleciona submenus --->. │
│ As letras destacadas são teclas de atalho. Pressionar <Y> inclui, <N> exclui, │
│ <M> modulariza recursos. Pressione <Esc><Esc> para sair, <?> para Ajuda, </> │
│ para Busca. Legenda: [*] embutido [ ] excluído <M> módulo < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ [ ] Corrigir traduções físicas para virtuais em tempo de execução │ │
(0x80000000) Endereço físico da memória principal
Configuração geral --->
[*] Ativar suporte a módulos carregáveis --->
│ │ [*] Habilitar a camada de bloco ---> │ │
Tipo de Sistema --->
Suporte de ônibus --->
│ │ Recursos do Kernel ---> │ │
│ │ Opções de inicialização ---> │ │
│ │ Gerenciamento de Energia da CPU ---> │ │
│ └────↓(+)─────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > < Save > < Load > │
└─────────────────────────────────────────────────────────────────────────┘
Para habilitar, os controladores precisarão ativar o GENERIC IEEE 802.11
(mac80211) vá em Suporte de Rede --> Sem Fio --> IEEE 802.11 Genérico (mac80211)
e habilite-a com a barra de espaço, deve ser * porque precisa ser compilada como
um módulo interno, como isso:
Linux/arm 3.10.100-4ndr4x Configuração do Kernel
→ Suporte de rede → Sem fio ──────────────────────────────────────────────
┌─────────────────────────────── Sem Fio ────────────────────────────────┐
│ As teclas de seta navegiam no menu. <Enter> seleciona submenus --->. │
│ Letras destacadas são teclas de atalho. Pressionar <Y> inclui, <N> exclui, │
│ <M> modulariza recursos. Pressione <Esc><Esc> para sair, <?> para Ajuda, </> │
│ para Pesquisa. Legenda: [*] embutido [ ] excluído <M> módulo < > │
│ ┌────↑(-)─────────────────────────────────────────────────────────────┐ │
│ │ <*> Pilha de Redes Genérica IEEE 802.11 (mac80211) │ │
Algoritmo de controle de taxa baseado em controlador PID (NOVO)
[*] Minstrel (NOVO)
│ │ [*] Suporte Minstrel 802.11n (NOVO) │ │
│ │ Algoritmo de controle de taxa padrão (Minstrel) ---> │ │
│ │ [*] Habilitar suporte a rede em malha mac80211 (pré-802.11s) (NOVO)│ │
│ │ [*] Ativar gatilhos de LED │ │
│ │ [ ] Exportar internals do mac80211 no DebugFS (NOVO) │ │
│ │ [ ] Rastrear todas as mensagens de depuração do mac80211 (NOVO) │ │
│ │ [ ] Selecionar recursos de depuração mac80211 (NOVO) ---> │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
Selecione
└─────────────────────────────────────────────────────────────────────────┘
Agora, volte e entre em Drivers de Dispositivo --> Suporte a dispositivo de rede --> Sem fio
LAN
Configuração do Kernel Linux/arm 3.10.100-4ndr4x
→ Controladores de Dispositivo → Suporte a dispositivos de rede → LAN sem fio ─────────────────────
┌───────────────────────────── Rede Sem Fio ──────────────────────────────┐
│ As teclas de seta navegam no menu. <Enter> seleciona submenus --->. │
│ Letras destacadas são teclas de atalho. Pressionar <Y> inclui, <N> exclui, │
│ <M> modulariza recursos. Pressione <Esc><Esc> para sair, <?> para Ajuda, </> │
│ para Pesquisa. Legenda: [*] embutido [ ] excluído <M> módulo < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
--- Rede LAN Sem Fio
Suporte ao driver WLAN Marvell 8xxx Libertas com firmware leve
│ │ < > Cartões USB Atmel at76c503/at76c505/at76c505a (NOVO) │ │
Suporte a dispositivo sem fio baseado em USB ZD1201
Suporte a RNDIS USB sem fio
Realtek 8187 e 8187B suporte USB (NOVO)
Ferramenta de teste de rádio simulado para mac80211 (NOVO)
│ │ [ ] Ativar abstração da função de controle WiFi │ │
│ │ < > Cartões WLAN Atheros ---> │ │
Suporte wireless Broadcom 43xx (pilha mac80211) (NOVO)
│ └────↓(+)─────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
Selecionar
└─────────────────────────────────────────────────────────────────────────┘
Agora habilitaremos os drivers, habilitarei ATHEROS, REALTEK e RALINK. NÃO HABILITEM
AS OPÇÕES DE DEPURAÇÃO
Ateros
configuração do Kernel Linux/arm 3.10.100-4ndr4x
[...] Drivers → Suporte a dispositivos de rede → LAN sem fio → Cartões sem fio Atheros
┌──────────────────────── Cartões Sem Fio Atheros ─────────────────────────┐
As teclas de seta navegam pelo menu. <Enter> seleciona os submenus --->.
│ As letras em destaque são as teclas de atalho. Pressionar <Y> inclui, <N> exclui, │
│ <M> modulariza recursos. Pressione <Esc><Esc> para sair, <?> para Ajuda, </> │
│ para Pesquisa. Legenda: [*] embutido [ ] excluído <M> módulo < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
--- Placas Wireless Atheros
│ │ [ ] Depuração sem fio Atheros (NOVO) │ │
│ │ [*] Suporte à coexistência do bluetooth Atheros (NOVO) │ │
│ │ <*> Placas de wireless Atheros 802.11n suportam │ │
[*] Suporte ao barramento AHB Atheros ath9k
│ │ [ ] Depuração Atheros ath9k (NOVO) │ │
[*] Controle de taxa Atheros ath9k
│ │ <*> Placas de rede sem fio baseadas em Atheros HTC suportam │ │
│ │ [ ] Depuração Atheros ath9k_htc (NOVO) │ │
│ │ <*> Suporte USB 802.11n da Comunidade Linux AR9170 │ │
│ │ [*] Suporte SoftLED (NOVO) │ │
│ │ <*> Chipsets móveis Atheros suportam │ │
│ │ <*> Suporte Atheros ath6kl SDIO │ │
Suporte a USB Atheros ath6kl
│ │ [ ] Depuração Atheros ath6kl (NOVO) │ │
│ │ [*] Suporte de rastreamento Atheros ath6kl │ │
Suporte ao driver sem fio Atheros AR5523
│ │ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
Selecionar
└─────────────────────────────────────────────────────────────────────────┘
RALINK
Linux/arm 3.10.100-4ndr4x Configuração do Kernel
[...] Drivers → Suporte a dispositivos de rede → LAN sem fio → Suporte ao driver Ralink
┌───────────────────────── Suporte ao driver Ralink ─────────────────────────┐
│ As teclas de seta navegam no menu. <Enter> seleciona os submenus --->. │
│ As letras destacadas são teclas de atalho. Pressionar <Y> inclui, <N> exclui, │
│ <M> modulariza recursos. Pressione <Esc><Esc> para sair, <?> para ajuda, </> │
│ para Pesquisa. Legenda: [*] embutido [ ] excluído <M> módulo < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ --- Suporte ao driver Ralink │ │
│ │ <*> Suporte Ralink rt2500 (USB) │ │
│ │ <*> Suporte Ralink rt2501/rt73 (USB) │ │
│ │ <*> Suporte para Ralink rt27xx/rt28xx/rt30xx (USB) │ │
│ │ [*] rt2800usb - Incluir suporte para dispositivos rt33xx (NOVO) │ │
[*] rt2800usb - Incluir suporte para dispositivos rt35xx (EXPERIMENTAL)
[*] rt2800usb - Incluir suporte para dispositivos rt53xx (EXPERIMENTAL
│ │ [*] rt2800usb - Incluir suporte para dispositivos rt55xx (EXPERIMENTAL│ │
│ │ [*] rt2800usb - Incluir suporte para dispositivos desconhecidos (USB) │ │
│ │ [ ] Saída de depuração Ralink (NOVO) │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
Selecionar
└─────────────────────────────────────────────────────────────────────────┘
REALTEK
.config - Configuração do Kernel Linux/arm 3.10.100-4ndr4x
→ Controladores de Dispositivo → Suporte a dispositivos de rede → LAN sem fio ─────────────────────
┌───────────────────────────── LAN Sem Fio ──────────────────────────────┐
As teclas de seta navegão pelo menu. <Enter> seleciona submenus --->.
│ As letras destacadas são teclas de atalho. Pressionar <Y> inclui, <N> exclui, │
│ <M> modulariza recursos. Pressione <Esc><Esc> para sair, <?> para Ajuda, </> │
│ para Busca. Lenda: [*] incorporado [ ] excluído <M> módulo < > │
│ ┌────↑(-)─────────────────────────────────────────────────────────────┐ │
As placas sem fio Broadcom 43241 suportam
Cartões sem fio Broadcom 43455 suportam
As placas wireless Broadcom 4334W suportam
As placas sem fio Broadcom 43454 suportam
( /system/etc/firmware/fw_bcmdhd.bin) Caminho do firmware
│ │ (/system/etc/wifi/[Link]) Caminho NVRAM │ │
│ │ < > Driver WLAN FullMAC embutido da Broadcom IEEE802.11n │ │
IEEE 802.11 para Host AP (Prism2/2.5/3 e WEP/TKIP/CCMP)
Suporte ao driver WLAN Marvell 8xxx Libertas
Suporte Softmac Prism54 (NOVO)
│ │ <*> Suporte ao driver Ralink ---> │ │
Suporte para placa de rede sem fio Realtek
[ ] Saída de depuração para a família de drivers rtlwifi
Adaptador de Rede Sem Fio USB Realtek RTL8192CU/RTL8188CU
│ │ [ ] Suporte à LAN sem fio TI ---> │ │
ZyDAS ZD1211/ZD1211B suporte USB-sem fio (NOVO)
│ │ < > Driver Marvell WiFi-Ex │ │
│ │ < > Suporte de LAN Sem Fio SPRD │ │
│ │ [*] alocação de memória sprdwl │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
Selecionar
└─────────────────────────────────────────────────────────────────────────┘
Ok, tudo feito, agora precisamos salvar e sair.
Agora você terá que executar os comandos para compilar a imagem do Kernel, esses
comandos são específicos para cada dispositivo ou rom e os encontrarão no
árvore do seu dispositivo.
Após concluir a compilação, você encontrará a imagem do kernel em "arch/"
(braço / arm64) / inicialização / zImage
Para construir seu [Link], você precisará desempacotar seu [Link] normal usando
mkboot-tools (Instruções no arquivo README do repositório).
Substitua o 'kernel' pelo seu zImage, renomeie-o para 'kernel', apague 'tamanho do kernel' e
"ramdisk_size", empacote novamente e você terá seu novo [Link] com os drivers
habilitados.
Instale-o usando twrp zip, odin ...
Agora, para terminar, é necessário baixar o firmware dos drivers e colocá-lo em "/
etc / firmware
Feliz hacking!