如何使用 tcpdump 过滤 MAC 地址?
Posted
技术标签:
【中文标题】如何使用 tcpdump 过滤 MAC 地址?【英文标题】:How to filter MAC addresses using tcpdump? 【发布时间】:2012-10-16 17:01:54 【问题描述】:我在 DD-WRT 路由器上运行 tcpdump 以便从手机捕获上行链路数据。我只想听一些mac地址。为此,我尝试使用类似于 Wireshark 的语法运行该命令:
tcpdump -i prism0 ether src[0:3] 5c:95:ae -s0 -w | nc 192.168.1.147 31337
这样我就可以收听所有具有初始mac地址5c:95:ae
的设备。
问题是语法错误,我想知道你们中是否有人知道正确的语法来获得我想要的东西。
【问题讨论】:
【参考方案1】:man pcap-filter
我找到了这个解决方案:
tcpdump "ether[6:2] == 0x5c95 and ether[8:1] == 0xae"
【讨论】:
嗨!非常感谢您的回答。我也发现了这种方式。问题是我需要在 ether 之后指定标志 src 但如果我添加它,我仍然会收到语法错误。 你为什么这么需要这个标志? 为什么要在ether
之后指定src
? ether src XX:XX:XX:XX:XX:XX
中的 ether
表示“这是一个以太网地址”,因此要仅查看源地址,您需要指定“src”,但 ether[6:2]
中的 ether
表示“这是以太网的一部分header”,以太网报头的字节 6 和 7 是源地址的前两个字节,字节 8 是源地址的第三个字节,所以 6:2
和 8:1
指定您正在测试源地址地址。石墨的过滤器正是您需要和想要的。
好的!那我试试!非常感谢您的帮助!有什么问题我再写到这里!
嗨!我不知道为什么,但这没有用。基本上,我使用整个 mac 地址(tcpdump -i prism0 ether src 5c:95:ae:x8:6c:3a -s0 -w | nc 192.168.1.147 31337)运行命令,然后 tcpdump 捕获了从我的手机发送的数据包。虽然,如果我使用石墨的过滤器(tcpdump -i prism0 "ether[6:2] == 0x5c95 and ether[8:1] == 0xae" -s0 -w | nc 192.168.1.147 31337)它不会捕获任何数据包。我不应该得到更多带有石墨过滤器的数据包吗?再次感谢您的帮助!以上是关于如何使用 tcpdump 过滤 MAC 地址?的主要内容,如果未能解决你的问题,请参考以下文章