Como enviar manualmente uma solicitação ARP

Como enviar manualmente uma solicitação ARP

Recentemente, farejei com o Tcpdump um pacote "ARP, solicitação que tem 192.168.2.3, diga 192.168.2.2, comprimento 28".

Gostaria de reproduzir esta mensagem e enviar uma solicitação ARP do meu laptop para qualquer IP que eu decidir. Como posso fazer isso ?

Eu também estaria interessado em forçar a atualização de toda a tabela ARP. Eu sei que excluir a tabela irá renová-la, mas apenas em laptops, essa operação é muito lenta e pode levar até 1/2/5 minutos para reconstruir a tabela ARP completa. Existe uma maneira de forçar a reconstrução da tabela, enviando uma solicitação ARP transmitida?

Estou usando um Mac com o sistema operacional Yosemite 10.10.4 mais recente

Obrigado.

Responder1

nmapé uma ferramenta de uso geral para varredura de redes e pode ser usada apenas para fazer uma varredura arp:

nmap -PR 10.0.1.0/24 -sn

O -sndesativa a varredura de portas, de modo que apenas faz solicitações arp e -PRé a varredura arp.

Responder2

Existe uma ferramenta de código aberto chamada arpingque permite enviar solicitações ARP personalizadas. Você pode obtê-lo em seu gerenciador de pacotes de código aberto favorito do OS X, como Homebrew ou MacPorts.

As solicitações ARP geralmente são transmitidas (porque você não sabe para qual endereço MAC enviá-las, caso contrário não seria necessário enviar uma). No entanto, eles não sãocuringa; isto é, você não pode enviar uma única solicitação solicitando que todos os hosts da rede enviem respostas ARP para você. O protocolo não fornece uma maneira de especificar um curinga no lugar do endereço IP de destino.

Responder3

Os pacotes ARP são enviados pelo sistema operacional sob demanda – essencialmente, quando ele precisa se comunicar com outro endereço IP na mesma sub-rede e ainda não conhece o endereço MAC desse host, ele envia uma solicitação ARP. Isso significa que reconstruir a tabela não é realmente um processo bem definido, já que você não sabe quais outros hosts existem até a primeira vez que seu computador tenta se comunicar com eles.

Atualizar as entradas dos endereços IP que estão atualmente na tabela não é muito difícil. Basta fazer uma lista das entradas atuais, usar sudo arp -dapara excluir todas as entradas atuais e, em seguida, usar algo como pingforçar o sistema operacional a re-ARP cada uma das entradas excluídas:

ip_addresses=$(arp -an | grep -Ev '\(incomplete\)|ff:ff:ff:ff:ff:ff'| sed -n 's/? (\([0-9.]*\)) at .*$/\1/p')
sudo arp -da
for ip in $ip_addresses; do ping -c1 -t1 $ip & disown; done &>/dev/null

Observe que o último comando dispara todos os pings em segundo plano, então praticamente todos eles são executados ao mesmo tempo e a tabela deve ser reconstruída rapidamente.

Se você deseja excluir e re-ARP apenas uma única entrada, faça o seguinte:

sudo arp -d 10.0.0.1
ping -c1 -t1 10.0.0.1

informação relacionada