Eu preciso escrever um script bash onde devo criar um arquivo que contém os detalhes dos endereços IP dos hosts e seu mapeamento com os endereços MAC correspondentes.
Há alguma maneira possível de descobrir o endereço MAC de qualquer host (remoto) quando o endereço IP do host estiver disponível?
Resposta
Se você deseja apenas descobrir o endereço MAC de um determinado endereço IP, pode usar o comando arp
para procurá-lo, assim que você “pingar o sistema 1 vez.
Exemplo
$ ping skinner -c 1 PING skinner.bubba.net (192.168.1.3) 56(84) bytes of data. 64 bytes from skinner.bubba.net (192.168.1.3): icmp_seq=1 ttl=64 time=3.09 ms --- skinner.bubba.net ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 3.097/3.097/3.097/0.000 ms
Agora procure no Tabela ARP:
$ arp -a skinner.bubba.net (192.168.1.3) at 00:19:d1:e8:4c:95 [ether] on wlp3s0
fing
Se você deseja varrer toda a LAN em busca de endereços MAC, pode usar a ferramenta de linha de comando fing
para fazer isso. Normalmente não é instalado, então você terá que fazer o download e instalá-lo manualmente.
$ sudo fing 10.9.8.0/24
Usando ip
Se você descobrir que não tem os comandos arp
ou fing
disponíveis, você pode use o comando iproute2 “s ip neigh
para ver a tabela ARP do seu sistema:
$ ip neigh 192.168.1.61 dev eth0 lladdr b8:27:eb:87:74:11 REACHABLE 192.168.1.70 dev eth0 lladdr 30:b5:c2:3d:6c:37 STALE 192.168.1.95 dev eth0 lladdr f0:18:98:1d:26:e2 REACHABLE 192.168.1.2 dev eth0 lladdr 14:cc:20:d4:56:2a STALE 192.168.1.10 dev eth0 lladdr 00:22:15:91:c1:2d REACHABLE
Referências
Comentários
Resposta
Você pode usar o comando arp
:
arp -an
Mas você só pode usar este comando em LAN, se você deseja descobrir o endereço MAC de qualquer host remoto, talvez você deva usar alguma ferramenta para capturar o pacote como tcpdump
e analisar o resultado.
Comentários
-
tcpdump(8)
mostrará apenas os MACs locais (ou seja, o MAC do roteador da última perna). Os cabeçalhos da camada MAC dos pacotes de entrada são retirados pelo roteador e novos são adicionados ao pacote de saída.
Resposta
Isso é da minha pergunta e resposta em askubuntu .
Você pode usar o comando
sudo nmap -sP -PE -PA21,23,80,3389 192.168.1.*
nmap:
Ferramenta de exploração de rede e scanner de segurança / porta. Do manual:
-sP
(Ignorar varredura de porta). Esta opção diz ao Nmap para não fazer uma varredura de porta após a descoberta do host, e apenas imprimir os hosts disponíveis que responderam à varredura. Isso geralmente é conhecido como “varredura de ping”, mas você também pode solicitar que os scripts de host traceroute e NSE sejam executados. Por padrão, isso é uma etapa mais intrusiva do que a verificação da lista e pode ser usado frequentemente para os mesmos fins. Ele permite o reconhecimento leve de uma rede alvo sem atrair muita atenção. Saber quantos hosts estão ativos é mais valioso para os invasores do que a lista fornecida pela verificação da lista de cada IP e nome de host.
-PE; -PP; -PM (
Tipos de ping ICMP). Além dos tipos incomuns de descoberta de host TCP, UDP e SCTP discutidos anteriormente, o Nmap pode enviar os pacotes padrão enviados pelo programa de ping onipresente. O Nmap envia um pacote ICMP tipo 8 (solicitação de eco) para os endereços IP de destino, esperando um tipo 0 (resposta de eco) em retorno dos hosts disponíveis. Infelizmente para exploradores de rede, muitos hosts e firewalls agora bloqueiam esses pacotes, em vez de responder como exigido pela RFC 1122 [2]. Por esse motivo, as varreduras somente ICMP raramente são confiáveis o suficiente contra alvos desconhecidos na Internet. Mas para administradores de sistema que monitoram uma rede interna, eles podem ser uma abordagem prática e eficiente. Use a opção -PE para habilitar este comportamento de solicitação de eco.
-A
(opções de varredura agressiva). Esta opção ativa opções avançadas e agressivas adicionais.
21,23,80,3389
Portas para pesquisar
192.168.1.*
Faixa de IPs. substitua pelo seu.
Comentários
- -sP é para ” scanPing “, também é -sn em versões nunca do nmap, ao que parece.
Resposta
arping
arping -I <interface> -c 1 <host>
O comando deve retornar o endereço MAC na resposta. Algo como
$ arping -I eth0 -c1 192.168.1.2 ARPING 192.168.1.2 from 192.168.1.5 eth0 Unicast reply from 192.168.1.2 [08:01:27:38:EF:32] 0.746ms Sent 1 probes (1 broadcast(s)) Received 1 response(s)
arping
é fornecido pelo pacote iputils-arping
no Debian.
Comentários
-
arping
também precisa ser informado sobre qual interface usar, com o-I
opção. - Você pode usar arping -f para sair após a primeira resposta.
arp
obsoleto? Como posso fazer isso comip
?ip
.ip neigh
funciona na maioria das vezes sem ter que instalar pacotes extras. Portanto, acho que ‘ é a melhor resposta.