Obtém o endereço MAC de um dispositivo ethernet desconfigurado, não configurado e não rotulado?

2

Suponha que você tenha alguma placa incorporada com ethernet conectada à porta ethernet do seu laptop. Você não sabe nada sobre sua configuração de rede (ainda). Você sabe que inicializa, mas é sem cabeça e só tem uma porta ethernet. NÃO possui um endereço IP (ainda).

Como você descobre o endereço MAC do dispositivo?

Eu olhei para arp, arping, arp-scan, arpwatch. A única coisa que encontrei é usar tshark e vasculhar o spew manualmente.

    
por Andrew Wagner 14.10.2015 / 14:40

2 respostas

1

A execução em branco tshark ou tcpdump produz saída confusa, porque todo o tráfego originado em sua máquina também é registrado.

Tente

tcpdump -i eth0 -lenq 'ether src not <your_mac>'
  • -e captura o quadro Ethernet também
  • -l libera o buffer stdout imediatamente.
  • -n não resolve nomes de host
  • -q seja mais calmo.
  • substitua <your_mac> pelo endereço MAC de sua interface local, conforme encontrado, por exemplo, ip addr show .
  • obviamente substitua eth0 pela interface correta. Se você estiver no Windows, use tshark -D para listar todas as interfaces.
  • (Editar) No Linux, você pode usar tcpdump em vez de instalar tshark , que precisa da instalação de todo o pacote wireshark . tcpdump deve ser pré-instalado no Ubuntu (está no meta-pacote ubuntu-standard ).

Alternativa: Se você quiser endereços MAC de origem somente como saída, faça (inspirado e descaradamente adaptado pelo comentário do OP abaixo)

ETH=eth0;MAC=$(cat /sys/class/net/$ETH/address); tcpdump -lenq -i $ETH "ether src not $MAC" | awk '{print }'

É melhor começar a captura sem um link e, em seguida, conecte o cabo.

Eu não acho que há uma maneira de farejar o tráfego. A razão pela qual o ARP falha é que o dispositivo não tem endereço IP e não responde às solicitações ARP.

Outra possível solução seria conectar o dispositivo a um switch gerenciado e ler a tabela de endereços MAC, mas acho que isso não é uma opção para você.

Em qualquer caso, para ser detectável, o dispositivo precisa enviar algum tipo de tráfego Ethernet. Se tiver sorte, envia uma descoberta de DHCP / Bootp que você pode farejar.

(Edit) Por que o host não mantém uma tabela MAC como um switch? Bem, não precisa, porque não é um interruptor. Ao contrário de um comutador, a decisão de qual interface coloca um quadro Ethernet é feita de antemão, de acordo com a tabela de roteamento. O pacote IP é empacotado em um quadro apropriado após a pesquisa ARP.

Claro, você pode transformar sua máquina em um switch L2 adequado. Você pode criar uma ponte entre várias interfaces físicas. Eu brinquei com isso um pouco, e acontece que você consegue uma boa mesa MAC dessa maneira!

  1. Instale bridge-utils do repositório.
  2. Crie uma nova ponte Ethernet em /etc/network/interfaces

    auto br0
    iface br0 inet static # dhcp goes as well
     address ...
     network ...
     bridge_ports eth0
     up /sbin/brctl setageing br0 300
     up /sbin/brctl stp br0 0
    

    Isso define uma "ponte" (não há realmente nenhuma ponte - apenas uma interface) sem spanning-tree stp br0 off . Os endereços vão envelhecer depois dos 300s. Ajuste isso ao seu gosto, mas não para baixo.

  3. Traga a ponte para cima ifup br0
  4. Verifique se está em brctl show e veja a tabela MAC

    brctl showmacs br0
    
  5. Lucro (?)
por Nephente 14.10.2015 / 15:49
0

Você pode usar o wireshark para capturar todo o tráfego e filtrá-lo pelo bootp ou usar a opção -e para imprimir informações da camada de link e o filtro bootp com o tcpdump:

link

sudo tcpdump -i any port bootps -e
    
por João Silva 14.10.2015 / 15:21