2012-10-26 17 views
16

Ich benutze tcpdump auf DD-WRT Routern, um Uplink-Daten von Mobiltelefonen zu erfassen. Ich würde gerne nur einige Mac-Adressen hören. Um dies zu tun habe ich versucht, den Befehl unter Verwendung einer Syntax ähnlich wie Wireshark auszuführen:Wie filtern MAC-Adressen mit tcpdump?

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

so, dass ich auf alle Geräte hören, die als anfängliche MAC-Adresse 5c:95:ae haben.

Das Problem ist, dass die Syntax falsch ist und ich frage mich, ob jemand von euch die richtige Syntax kennt, um zu bekommen, was ich will.

Antwort

10

Mit man pcap-filter fand ich diese Lösung:

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

Hallo! Vielen Dank für die Antwort. Das habe ich auch gefunden. Das Problem ist, dass ich das Flag src nach Ether spezifizieren muss, aber wenn ich es addiere, bekomme ich noch Syntaxfehler. –

+0

Warum brauchst du diese Flagge so sehr? – graphite

+2

Warum müssen Sie 'src' nach' ether' angeben? Der "Äther" in "Äther src XX: XX: XX: XX: XX: XX" bedeutet "Dies ist eine Ethernet-Adresse". Um nur die Quelladresse zu betrachten, müssen Sie "src" angeben, aber den "Äther" in 'ether [6: 2]' sagt "dies ist Teil des Ethernet-Headers" und Bytes 6 und 7 des Ethernet-Headers sind die ersten zwei Bytes der Quelladresse und Byte 8 ist das dritte Byte der Quelladresse, Also geben die '6: 2' und' 8: 1' an, dass Sie die Quelladresse testen. Graphitfilter ist genau das, was Sie brauchen und wollen. –