Como o Linux e os BSDs (incluindo o OS X) divergem, as instruções de como fazer isso em um determinado sistema operacional parecido com Unix também são divergentes. Aqui estão algumas instruções para o OS X.
- Encontre o endereço IP do seu roteador, talvez executando
netstat -rnaf inet
e olhando a rota "padrão" no topo da lista. - Encontre o endereço MAC do seu roteador, talvez executando
arp -an
e procurando o endereço IP do seu roteador. - Diga à sua interface de rede para usar o endereço MAC do seu roteador:
sudo ifconfig en0 ether 00:11:22:33:44:55
- Espero que funcione. Sem ferramentas específicas para falsificação de ARP, você fica à mercê do código ARP da sua pilha de rede. Se a sua pilha de rede tiver um código ARP moderno, talvez ele não tente lutar para ter esse endereço MAC, se já houver alguém usando-o (o que, obviamente, será: seu roteador).
Não tenho conhecimento de nenhuma ferramenta de linha de comando Unix amplamente implantada e "incorporada" que permita forjar pacotes ARP personalizados. É por isso que as pessoas instalam outros comandos como arpspoof
e ettercap
.
No OS X, você pode transmitir qualquer seqüência arbitrária de bytes que desejar, por meio do recurso de kernel do Filtro de Pacotes Berkeley. Apenas open(2)
a /dev/bpfX
device, use ioctl(2)
para anexá-lo a uma interface como en0
e escreva bytes nele. Cada gravação individual (ou seja, cada buffer de bytes transferidos em uma chamada individual para write(2)
) é transmitida como um pacote. Mas isso é um pouco além do que você pode fazer facilmente com um script de shell. Eu acho que a maioria dos Graybeards do Unix usaria uma pequena ferramenta C para fazer isso. Mas isso é basicamente reimplementar a funcionalidade chave de alguma outra ferramenta ARP-spoofing bem conhecida, e em ambientes Unix modernos, é mais fácil dizer ao seu gerenciador de pacotes para instalar arpspoof
ou ettercap
ou algo assim.