2012-08-17 53 views
9

我正在使用Scapy並希望根據目標MAC地址進行過濾。Scapy BPF過濾器不工作

但是,我正在獲取數據包,其中目標MAC地址不是過濾器中指定的地址。

這裏是一個代碼片段:

from scapy.all import * 

sniff(iface="eth1", filter="ether dst host 91:e0:f0:01:00:00", 
     count=3, prn=lambda x: x.show()) 

我運行Scapy的2.2.0

在這裏的問題的任何想法?

+0

考慮格式代碼。 – 2012-08-17 18:21:41

+0

格式化代碼並未清除問題。 – user1607606 2012-08-23 16:04:45

+0

嘗試了我的系統上的代碼,相同版本的scapy。過濾器工作。什麼類型的MAC地址通過過濾器? – RyPeck 2013-06-17 22:30:31

回答

1

這是scapy錯!看起來scapy在應用BPF過濾器之前開始接收數據包(filter參數爲sniff函數)。需要一段時間才能正常工作! 兩種方法來擺脫這樣的:

  1. 使用lfilter定義腳本中的過濾功能。它在繁忙的鏈接上效率不高,因爲過濾器應用於腳本而不是內核。考慮使用pypy加快速度。
  2. 對於某些第一個數據包檢查腳本中的目標MAC地址,然後不再檢查它;即在嗅探開始時檢查分組的正確性以通過不穩定階段scapy,然後依靠scapy來過濾不需要的分組。
+0

當然,升級它似乎解決了這個問題 – Cukic0d 2018-02-11 10:57:50

1

安裝tcpdump的解決了這個問題對我來說 - 現在嗅探過濾器的工作原理

1

在我的情況下,升級到2.3.3dev(github上的版本),固定它