如何通过以太网MAC地址过滤

时间:2014-06-24 11:55:15

标签: python scapy packet-sniffers

以下代码:

sniff(filter = "dst aa:bb:cc:dd:ee" ) 

抛出错误,因为sniff期待IP,而不是MAC。

那你怎么用MAC过滤?

2 个答案:

答案 0 :(得分:2)

filter参数需要BPF过滤器。因此,正确的语法为filter="ether dst aa:bb:cc:dd:ee:ff"

这比使用Python函数lfilter参数快得多(正如)macfij在另一个答案中建议的那样(加上你不必处理MAC中的大写/小写字母)地址)。

答案 1 :(得分:1)

lfilter指定sniff怎么样?

zzz = sniff(lfilter=lambda d: d.src == 'aa:bb:cc:dd:ee:ff')


dstsrc是嗅探消息的属性。


之前我已经发布了指定stop_filter的答案。我认为它不适合你,因为scapy会在收到与stop_filter的mac地址匹配的第一个数据包后停止。 lfilter应该做的工作。

来自sendrecv.py

lfilter: python function applied to each packet to determine                   
         if further action may be done                                         
         ex: lfilter = lambda x: x.haslayer(Padding)