2012-10-26 18 views
16

Używam tcpdump na routerach DD-WRT w celu przechwytywania danych połączenia w górę z telefonów komórkowych. Chciałbym słuchać tylko niektórych adresów MAC. Aby to zrobić, próbowałem uruchomić polecenie za pomocą składni podobnej do Wireshark:Jak filtrować adresy MAC za pomocą tcpdump?

tcpdump -i prism0 ether src[0:3] 5c:95:ae -s0 -w | nc 192.168.1.147 31337

tak, że mogę słuchać do wszystkich urządzeń, które mają jako początkowy adres mac 5c:95:ae.

Problem polega na tym, że składnia jest nieprawidłowa i zastanawiałem się, czy ktokolwiek z was zna właściwą składnię, aby uzyskać to, czego chcę.

Odpowiedz

10

Z man pcap-filter Znalazłem rozwiązanie:

tcpdump "ether[6:2] == 0x5c95 and ether[8:1] == 0xae" 
+0

Hi! Wielkie dzięki za odpowiedź. Znalazłem również w ten sposób. Problem polega na tym, że muszę podać flagę src po eterze, ale jeśli ją dodaję, to nadal otrzymuję błąd składni. –

+0

Dlaczego ta flaga jest potrzebna? – graphite

+2

Dlaczego musisz określać 'src' after 'ether'? "Eter" w "ether src XX: XX: XX: XX: XX: XX" oznacza "jest to adres Ethernet", więc aby spojrzeć tylko na adres źródłowy, musisz podać "src", ale "ether" w 'ether [6: 2]' mówi "jest częścią nagłówka Ethernet", a bajty 6 i 7 nagłówka Ethernet są pierwszymi dwoma bajtami adresu źródłowego, a bajt 8 jest trzecim bajtem adresu źródłowego, więc '6: 2' i' 8: 1' określają, że testujesz adres źródłowy. filtr grafitu jest dokładnie tym, czego potrzebujesz i chcesz. –

Powiązane problemy