TCPDump - Filtrar por Endereço MAC

25

Gostaria de exibir todo o tráfego para ou de um endereço MAC específico. Por isso eu tentei

sudo tcpdump host aa:bb:cc:11:22:33

Não funciona e retorna um erro

tcpdump: pktap_filter_packet: pcap_add_if_info(en0, 1) failed: pcap_add_if_info: pcap_compile_nopcap() failed

Não sei como interpretar essa mensagem de erro e não sei como resolver o problema.

Qualquer ajuda ?

phenetas
fonte
Tem certeza de que é o formato de endereço MAC correto? Os endereços MAC não têm um formato padrão. Encontrei problemas com diferentes dispositivos e códigos que exigem formatos diferentes. Alguns precisam de dois pontos, outros traços, alguns com 2 dígitos, outros com 3, outros com 4 e, uma vez, um que precisava ser cortado pela metade.
Ron Maupin
Oi, sim, com certeza. Este é o formato usado para respostas quando funciona. Como por exemplo, este comando funciona:> sudo tcpdump -e -nni all ether src aa: bb: cc: 11: 22: 33 EDIT: E me retorna aproximadamente o que quero basicamente. (Acabei de descobrir isso)
phenetas 07/07
Essa é uma mensagem de erro realmente horrível, e o tcpdump no OS X antes do Mavericks, ou quando não estiver capturando no dispositivo "any" no Mavericks e mais tarde, ou em qualquer outro sistema operacional, informará "tcpdump: endereço Ethernet usado na expressão não-éter" . Arquivei o bug 21698116 no repórter de bug da Apple para isso.

Respostas:

41

Você usou o seguinte como seu filtro de pacotes: host aa:bb:cc:11:22:33

Tal como está, está procurando um IP ou nome de host, mas você está fornecendo um endereço MAC.

Para usar um endereço MAC, você precisa incluir a etherprimitiva de filtro de pacotes.

No seu caso, o seguinte deve funcionar:

sudo tcpdump ether host aa:bb:cc:11:22:33

Ou, se precisar que você especifique a interface, seria algo como:

sudo tcpdump -i eth0 ether host aa:bb:cc:11:22:33
YLearn
fonte
Obrigado, isso está realmente bem explicado, agora eu entendo o parâmetro "ether" claramente. Uma pergunta agora é por que não consigo ver os cabeçalhos de pacotes HTTP quando navego na web? (Eu tenho um iPhone como dispositivo de teste e estou farejando seu endereço MAC; se eu fizer ping, eu posso ver o tráfego, se eu apenas acordá-lo ou fazê-lo dormir, posso ver o tráfego, mas nada ao navegar no Safari)
phenetas 07/07/2015
Ninguém realmente poderia dizer que não conhecemos seu ambiente ou onde você está vendo os dados nesse ambiente. Eu precisaria saber muito mais antes de poder responder a essa pergunta.
YLearn
Ok, desenvolvo em um Mac executando o último Os 10 Yosemite, e meu dispositivo de teste é um iPhone 5S com iOs 7. A rede é básica, um ponto de acesso wifi, um mac e um iPhone. O problema é que, se eu fizer um sudo tcpdump, visualizarei todos os tráfegos na rede e, se eu navegar na Web no meu Mac, visualizarei linhas como 11:54:20.887984 IP 10.11.204.50.56049 > 886entdc11.enterprise.886ventures.com.domain: 46247+ A? programmers.stackexchange.com. (47), mas se eu fizer um sudo tcpdump host IPOfIphone, não visualizarei nada do tráfego da Internet se navegar com o telefone.
phenetas
Supondo que seu "ponto de acesso" seja realmente algum tipo de dispositivo de gateway e forneça seu acesso à Internet e que você esteja executando o tcpdump no Mac: a menos que você o tenha configurado de alguma forma, o tráfego da Internet do iPhone não passe pelo Mac para que ele não o veja.
YLearn
Sim, faz sentido, talvez eu esteja perdendo a base da rede (fundo elétrico). Portanto, se entendi, você está dizendo que só posso ver o tráfego do / para o meu Mac ou transmitido. Mas, nesse caso, por que posso ver o tráfego quando o telefone está se conectando ao wifi? Nesse caso, recebo uma 11:45:52.852928 IP 10.11.204.15.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/1 TXT "model=N51AP" (98)comunicação que é entre o telefone (10.11.204.15) e 224.0.0.251 que definitivamente não é o meu mac (suponho que este seja o ponto de acesso).
phenetas