2014-06-24 8 views
5

निम्न कोड के आधार पर फ़िल्टर करने के लिए:कैसे ईथरनेट मैक पता

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

एक त्रुटि फेंकता है क्योंकि sniff एक आईपी, नहीं एक मैक उम्मीद कर रही है।

तो मैक द्वारा फ़िल्टर कैसे किया जाना चाहिए?

+0

क्या आप इंटरफ़ेस का उपयोग कर सकते हैं? –

+0

क्या आप थोड़ा गहराई से समझा सकते हैं? – bzupnick

उत्तर

1

sniff के लिए lfilter specyfing के बारे में क्या?

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


dst और src सूंघा संदेश की विशेषताएँ हैं।


पहले मैंने एक उत्तर पोस्ट किया है जहां stop_filter निर्दिष्ट किया गया था। मुझे लगता है कि यह आपके लिए काम नहीं करेगा, क्योंकि stop_filter से मैक पते से मेल खाने वाले पहले पैकेट को प्राप्त करने के बाद स्कैपी बंद हो जाएगी। 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) 
+0

मैंने अपनी लिपि में और दुभाषिया में lfilter के साथ अपने उत्तर की कोशिश की। मैंने सही स्रोत मैक से पिंग किया और यह इसे स्नीफ नहीं लग रहा था। – bzupnick

+0

एक और आईपी पता पिंग करने का प्रयास करें? – macfij

+0

मेरी समस्या यह थी कि मेरे मैक में अपरकेस अक्षर थे और स्कापी लोअरकेस अक्षरों को बचाता है। खूबसूरती से काम करता है =) – bzupnick

2

filter पैरामीटर बीपीएफ फिल्टर की जरूरत है। सही वाक्यविन्यास इसलिए filter="ether dst aa:bb:cc:dd:ee:ff" है।

यह एक पाइथन फ़ंक्शन को lfilter पैरामीटर के रूप में उपयोग करने से (तेज़) तेज है, जैसा कि मैकफिज द्वारा किसी अन्य उत्तर में सुझाया गया है (ठीक है) (साथ ही आपको मैक पते में ऊपरी/निचले-केस अक्षरों से निपटने की ज़रूरत नहीं है)।

संबंधित मुद्दे