TCPDump-按MAC地址过滤


25

我想显示来自特定MAC地址或来自特定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

我不知道如何解释此错误消息,也不知道如何解决该问题。

有什么帮助吗?


您确定这是正确的MAC地址格式吗?MAC地址没有标准格式。我遇到了不同设备和需要不同格式的代码的问题。有些需要冒号,有些破折号,有些需要2位数字,有些需要3位,有些需要4位,还有一次需要将其切成两半。
罗恩·莫平

嗨,是的,可以肯定。这是工作时用于响应的格式。例如,此命令有效:> sudo tcpdump -e -nni all ether src aa:bb:cc:11:22:33编辑:它基本上返回了我想要的东西。(我刚刚发现)
phenetas

这是一个真正可怕的错误消息,并且在Mavericks之前的OS X上或在未在Mavericks及更高版本上的“任何”设备上捕获或在任何其他 OS 上捕获tcpdump时,都会报告“ tcpdump:非醚表达式中使用的以太网地址” 。为此,我已将错误21698116提交给Apple错误报告程序。

Answers:


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

谢谢,这确实很好地解释了,我现在清楚地理解了“ ether”参数。现在的一个问题是,为什么我在网上冲浪时看不到HTTP数据包头?(我有一部iPhone作为测试设备,我在嗅探其MAC地址,如果我ping它,我可以看到流量,如果我唤醒它或使其处于睡眠状态,我可以看到流量,但是在浏览Safari时什么也看不到)
phenetas 2015年

由于我们不了解您的环境或您在该环境中查看数据的位置,因此没有人可以说真的。在能够回答该问题之前,我需要了解更多信息。
YLearn

好的,我在运行最后一个Os 10 Yosemite的Mac上进行开发,而我的测试设备是具有iOs 7的iPhone 5S。事实是,如果执行“ 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则我将无法从互联网流量中看到任何内容电话。
phenetas

假设您的“访问点”实际上是某种网关设备,并且提供了对Internet的访问,并且您正在Mac上进行tcpdump:除非您已对其进行了某种配置,否则iPhone的Internet流量不会通过Mac,因此Mac看不到它。
YLearn

是的,这很有道理,也许我错过了网络基础(电气背景)。因此,如果我理解您的意思是,我只能看到来自Mac或来自Mac或广播的流量。但是在那种情况下,为什么我可以在手机连接到wifi时看到流量?在那种情况下,我得到的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(我认为这是接入点)。
phenetas,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.