TCPDump - Filtrar por dirección MAC

25

Me gustaría mostrar todo el tráfico para o desde una dirección MAC específica. Por eso lo intenté

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

No funciona y me devuelve un error.

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

No sé cómo interpretar este mensaje de error y no sé cómo resolver el problema.

Alguna ayuda ?

fenetas
fuente
¿Estás seguro de que es el formato de dirección MAC correcto? Las direcciones MAC no tienen un formato estándar. Me he encontrado con problemas con diferentes dispositivos y códigos que requieren diferentes formatos. Algunos necesitan dos puntos, algunos guiones, algunos con 2 dígitos, algunos con 3, algunos con 4, y, una vez, uno que necesitaba que se cortara por la mitad.
Ron Maupin
Hola si bastante seguro Este es el formato utilizado para las respuestas cuando funciona. Como por ejemplo, este comando funciona:> sudo tcpdump -e -nni all ether src aa: bb: cc: 11: 22: 33 EDIT: y me devuelve aproximadamente lo que quiero básicamente. (Acabo de descubrir eso)
phenetas
Ese es un mensaje de error realmente horrible, y tcpdump en OS X antes de Mavericks, o cuando no se captura en "cualquier" dispositivo en Mavericks y posterior, o en cualquier otro sistema operativo informaría "tcpdump: dirección de ethernet utilizada en expresiones que no son ether" . He presentado el error 21698116 en el reportero de errores de Apple para esto.

Respuestas:

41

Ha utilizado lo siguiente como filtro de paquetes: host aa:bb:cc:11:22:33

Tal como está, está buscando una IP o un nombre de host, pero le está dando una dirección MAC.

Para usar una dirección MAC, debe incluir la etherprimitiva de filtro de paquetes.

En su caso, lo siguiente debería funcionar:

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

O, si necesita que especifique la interfaz, sería algo como:

sudo tcpdump -i eth0 ether host aa:bb:cc:11:22:33
YLearn
fuente
Gracias, esto está muy bien explicado, ahora entiendo claramente el parámetro "éter". Una pregunta ahora es ¿por qué no puedo ver los encabezados de paquetes HTTP cuando navego por la web? (Tengo un iPhone como dispositivo de prueba y estoy olfateando su dirección MAC, si lo hago ping puedo ver el tráfico, si solo lo despierto o lo hago dormir puedo ver el tráfico, pero nada cuando navego en Safari)
phenetas
Nadie podría realmente decir que no conocemos su entorno o dónde está mirando los datos en ese entorno. Necesitaría saber mucho más antes de poder responder esa pregunta.
YLearn
Ok, desarrollo en una Mac con el último Os 10 Yosemite, y mi dispositivo de prueba es un iPhone 5S con iOs 7. La red es básica, un punto de acceso wifi, una mac, un iPhone. La cuestión es que, si hago una sudo tcpdump, veré todo el tráfico en la red y si navego por la web en mi Mac, veré líneas como 11:54:20.887984 IP 10.11.204.50.56049 > 886entdc11.enterprise.886ventures.com.domain: 46247+ A? programmers.stackexchange.com. (47), pero si lo hago sudo tcpdump host IPOfIphone, no veré nada del tráfico de Internet si navego con el teléfono.
phenetas
Suponiendo que su "punto de acceso" es en realidad una especie de dispositivo de puerta de enlace y le proporciona acceso a Internet y que está haciendo tcpdump en la Mac: a menos que lo haya configurado de alguna manera, el tráfico de Internet del iPhone no lo hace pasar por la Mac para que la Mac no lo vea.
YLearn
Sí, tiene sentido, tal vez me falta la base de las redes (fondo eléctrico). Entonces, si entiendo, estás diciendo que solo puedo ver el tráfico desde / hacia mi Mac o emitido. Pero en ese caso, ¿por qué puedo ver el tráfico cuando el teléfono se conecta al wifi? En ese caso, obtengo una 11:45:52.852928 IP 10.11.204.15.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/1 TXT "model=N51AP" (98)comunicación entre el teléfono (10.11.204.15) y 224.0.0.251 que definitivamente no es mi mac (supongo que este es el punto de acceso).
phenetas