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 / 12: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 / 13: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 / 13:21
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warning – yii\base\ErrorException

PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '76110',
    'url' => 'get-the-mac-address-of-a-connected-unlabeled-unconfigured-unconfigurable-ethe',
];

$_COOKIE = [
    '_csrf-frontend' => '65e8e007dce7c10f0d0fcc507b8ca7662958728b137687756ca8fd3c191f65aca:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"y0KCvcNcnvcynQUPwQvoUTLQZJ5Uai7d";}',
    'advanced-frontend' => 'fm7m8dn877m4ebnegg7ejej4a6',
];

$_SESSION = [
    '__flash' => [],
];