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>'
-
-ecaptura o quadro Ethernet também -
-llibera o buffer stdout imediatamente. -
-nnão resolve nomes de host -
-qseja mais calmo. - substitua
<your_mac>pelo endereço MAC de sua interface local, conforme encontrado, por exemplo,ip addr show. - obviamente substitua
eth0pela interface correta. Se você estiver no Windows, usetshark -Dpara listar todas as interfaces. -
(Editar) No Linux, você pode usar
tcpdumpem vez de instalartshark, que precisa da instalação de todo o pacotewireshark.tcpdumpdeve ser pré-instalado no Ubuntu (está no meta-pacoteubuntu-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!
- Instale
bridge-utilsdo repositório. -
Crie uma nova ponte Ethernet em
/etc/network/interfacesauto 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 0Isso 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. - Traga a ponte para cima
ifup br0 -
Verifique se está em
brctl showe veja a tabela MACbrctl showmacs br0 - Lucro (?)