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, usetshark -D
para listar todas as interfaces. -
(Editar) No Linux, você pode usar
tcpdump
em vez de instalartshark
, que precisa da instalação de todo o pacotewireshark
.tcpdump
deve 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-utils
do repositório. -
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. - Traga a ponte para cima
ifup br0
-
Verifique se está em
brctl show
e veja a tabela MACbrctl showmacs br0
- Lucro (?)