TCPDump - Filtruj według adresu MAC

25

Chciałbym wyświetlić cały ruch do lub z określonego adresu MAC. Do tego próbowałem

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

To nie działa i zwraca mi błąd

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

Nie wiem, jak interpretować ten komunikat o błędzie i nie wiem, jak rozwiązać problem.

Jakaś pomoc ?

fenetas
źródło
Czy na pewno jest to prawidłowy format adresu MAC? Adresy MAC nie mają standardowego formatu. Wystąpiły problemy z różnymi urządzeniami i kodami wymagającymi różnych formatów. Niektóre potrzebują dwukropków, niektóre myślniki, niektóre z 2 cyframi, niektóre z 3, niektóre z 4, a raz taki, który potrzebował go przeciąć na pół.
Ron Maupin
Cześć, tak, całkiem pewne. Jest to format używany do odpowiedzi, gdy działa. Jak na przykład to polecenie działa:> sudo tcpdump -e -nni all ether src aa: bb: cc: 11: 22: 33 EDYCJA: I zwraca mi mniej więcej to, czego zasadniczo chcę. (Właśnie to odkryłem)
Phenetas
To naprawdę straszne komunikat o błędzie, a tcpdump na OS X przed Mavericks, lub gdy nie jest uchwycenie na „any” urządzenia na Mavericks, a później, lub na dowolnym innym OS będzie raport „tcpdump: Adres ethernet używane w non-eter wyrażenia” . W tym celu zgłosiłem błąd 21698116 w raporcie błędów Apple.

Odpowiedzi:

41

Użyłeś następujących filtrów jako filtrów pakietów: host aa:bb:cc:11:22:33

W tej chwili szuka adresu IP lub nazwy hosta, ale podajesz mu adres MAC.

Aby użyć adresu MAC, musisz dołączyć etheroperację podstawową filtru pakietów.

W twoim przypadku powinny działać następujące elementy:

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

Lub, jeśli trzeba określić interfejs, byłoby to coś w stylu:

sudo tcpdump -i eth0 ether host aa:bb:cc:11:22:33
YLearn
źródło
Dziękuję, to jest naprawdę dobrze wyjaśnione, rozumiem teraz parametr „eter”. Jedno pytanie brzmi: dlaczego nie widzę nagłówków pakietów HTTP podczas surfowania po Internecie? (Mam iPhone'a jako urządzenie testowe i wącham jego adres MAC, jeśli go pinguję, widzę ruch, jeśli go obudzę lub uśpię, widzę ruch, ale nic podczas surfowania w Safari)
phenetas,
Nikt tak naprawdę nie może powiedzieć, ponieważ nie znamy Twojego środowiska ani miejsca, w którym patrzysz na dane w tym środowisku. Musiałbym wiedzieć o wiele więcej, zanim będę mógł odpowiedzieć na to pytanie.
YLearn
Ok, rozwijam na komputerze Mac z ostatnią Os 10 Yosemite, a moim urządzeniem testowym jest iPhone 5S z iOs 7. Sieć jest podstawowa, jeden punkt dostępu Wi-Fi, jeden Mac, jeden iPhone. Chodzi o to, że jeśli zrobię a sudo tcpdump, zobaczę cały ruch w sieci i jeśli będę surfować po Internecie na moim Macu, zobaczę takie linie 11:54:20.887984 IP 10.11.204.50.56049 > 886entdc11.enterprise.886ventures.com.domain: 46247+ A? programmers.stackexchange.com. (47), ale jeśli to zrobię sudo tcpdump host IPOfIphone, nie zobaczę niczego z ruchu internetowego, jeśli surfuję z telefon.
phenetas
Zakładając, że „punkt dostępu” jest w rzeczywistości rodzajem urządzenia bramowego i zapewnia dostęp do Internetu oraz wykonywanie tcpdump na komputerze Mac: chyba że skonfigurujesz to w jakiś sposób, ruch internetowy iPhone'a nie przejdź przez komputer Mac, aby komputer Mac go nie widział.
YLearn
Tak, to ma sens, może brakuje mi podstaw sieci (tło elektryczne). Więc jeśli rozumiem, mówisz, że widzę tylko ruch z / do mojego Maca lub nadawany. Ale w takim przypadku, dlaczego widzę ruch, gdy telefon łączy się z Wi-Fi? W takim przypadku otrzymuję 11:45:52.852928 IP 10.11.204.15.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/1 TXT "model=N51AP" (98)komunikację między telefonem (10.11.204.15) a 224.0.0.251, która zdecydowanie nie jest moim komputerem Mac (zakładam, że to jest punkt dostępu).
phenetas