TCPDump - фильтр по MAC-адресу

25

Я хотел бы отобразить весь трафик для или с определенного MAC-адреса. Для этого я пытался

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

Не работает и возвращает ошибку

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

Я не знаю, как интерпретировать это сообщение об ошибке, и я не знаю, как решить проблему.

Любая помощь ?

phenetas
источник
Вы уверены, что это правильный формат MAC-адреса? MAC-адреса не имеют стандартного формата. У меня возникли проблемы с разными устройствами и кодом, требующим разных форматов. Некоторым нужны двоеточия, некоторые тире, некоторые с 2 цифрами, некоторые с 3, некоторые с 4, и однажды одна, которая нуждалась в этом, разрезается пополам.
Рон Мопин
Привет, да, конечно. Этот формат используется для ответов, когда он работает. Как, например, эта команда работает:> sudo tcpdump -e -nni all etherr src aa: bb: cc: 11: 22: 33 РЕДАКТИРОВАТЬ: И это возвращает мне примерно то, что я хочу в принципе. (Я только что обнаружил это)
Фенетс
Это действительно ужасное сообщение об ошибке, и tcpdump на OS X до Mavericks, или когда не захватывается на «любое» устройство на Mavericks и более поздних версиях или на любой другой ОС, сообщит «tcpdump: адрес ethernet, используемый в неэфирном выражении» , Я подал сообщение об ошибке 21698116 на Apple, репортер ошибок для этого.

Ответы:

41

В качестве фильтра пакетов вы использовали следующее: host aa:bb:cc:11:22:33

В настоящее время он ищет IP-адрес или имя хоста, но вы даете ему MAC-адрес.

Чтобы использовать MAC-адрес, вам нужно включить etherпримитив фильтра пакетов.

В вашем случае должно работать следующее:

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

Или, если вам нужно указать интерфейс, то это будет что-то вроде:

sudo tcpdump -i eth0 ether host aa:bb:cc:11:22:33
YLearn
источник
Спасибо, это действительно хорошо объяснено, теперь я четко понимаю параметр «эфир». Теперь возникает вопрос: почему я не вижу заголовки пакетов HTTP при работе в Интернете? (У меня есть iPhone в качестве тестового устройства, и я слежу за его MAC-адресом, если я пингую его, я вижу трафик, если я просто просыпаюсь или заставляю его спать, я вижу трафик, но ничего при серфинге в Safari)
фенет
Никто не может сказать, так как мы не знаем вашу среду или где вы смотрите на данные в этой среде. Мне нужно знать гораздо больше, прежде чем я смогу ответить на этот вопрос.
YLearn
Итак, я работаю на Mac с последней ОС Os 10 Yosemite, и моим тестовым устройством является iPhone 5S с iOs 7. Сеть базовая, одна точка доступа Wi-Fi, один Mac, один iPhone. Дело в том, что если я сделаю a, sudo tcpdumpя увижу весь трафик в сети, и если я буду просматривать веб-страницы на своем Mac, я буду видеть такие строки, как 11:54:20.887984 IP 10.11.204.50.56049 > 886entdc11.enterprise.886ventures.com.domain: 46247+ A? programmers.stackexchange.com. (47), но если я сделаю a, sudo tcpdump host IPOfIphoneто я не увижу ничего из интернет-трафика, если буду заниматься серфингом с телефон.
Фенетс
Предполагая, что ваша «точка доступа» на самом деле является своего рода шлюзовым устройством и предоставляет вам доступ к Интернету и что вы выполняете tcpdump на Mac: если вы не настроили его для этого каким-либо образом, интернет-трафик iPhone не будет Пройдите Mac, чтобы Mac его не увидел.
YLearn
Да, это имеет смысл, может быть, мне не хватает основы сетей (электрический фон). Поэтому, если я понимаю, вы говорите, что я могу видеть только трафик с / на мой Mac или трансляцию. Но в таком случае, почему я вижу трафик, когда телефон подключается к Wi-Fi? В этом случае я получаю сообщение, 11:45:52.852928 IP 10.11.204.15.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/1 TXT "model=N51AP" (98)которое является связью между телефоном (10.11.204.15) и 224.0.0.251, что определенно не мой Mac (я предполагаю, что это точка доступа).
фенет