2012-09-06 13 views
5

पृष्ठभूमि:पैकेट मिलान व्यवहार

मैं Scapy उपयोग कर रहा हूँ एक नेटवर्क डिवाइस का परीक्षण करने के जो कर सकते हैं चुनिंदा स्रोत/गंतव्य MACs, IP पते, और परत 4 पोर्ट संख्या को स्वैप करके पाश वापस पैकेट। स्वैपिंग layer_2_only, layers_2_and_3, layers_2_3_and_4 के लिए चुना जा सकता है। मैं एक सर्वर पर स्कैपी चला रहा हूं, डिवाइस पर पैकेट प्रेषित कर रहा हूं और यह सत्यापित कर रहा हूं कि वापस भेजे गए पैकेट में उचित स्रोत/dest फ़ील्ड सेटिंग के आधार पर बदल गए हैं।

समस्या:

Scapy srploop() विधि है, जो पैकेट भेजता है और मैचों पिंग और एआरपी की तरह संदेश प्रकारों के अच्छी तरह से काम प्राप्त करता है। मुझे लगता है कि अगर मैं यूडीपी पैकेट ट्रांसमिट करता हूं और लूप-बैक डिवाइस द्वारा स्रोत/dest पोर्ट्स को उलट नहीं किया जाता है, तो स्कैपी लूप-बैक पैकेट को एक मैच की तरह नहीं मानता है। जब पोर्ट नंबर को लूप-बैक डिवाइस द्वारा उलट दिया जाता है, तो पैकेट को मैचों के रूप में पहचाना जाता है।

सवाल:

  1. ओवरराइड या अन्यथा Scapy के पैकेट मिलान तर्क को प्रभावित करने के लिए एक रास्ता है? उदाहरण के लिए, परत 4 पर मिलान अक्षम करने में सक्षम होना उपयोगी होगा। मैंने प्रलेखन को देखा है और कुछ भी नहीं आया है जो बताता है कि यह संभव है।

  2. क्या यह स्कैपी में हासिल करने का एक और तरीका है। मैंने send() का उपयोग करके sniff() का उपयोग करके प्रयोग किया है, लेकिन मैं उस विधि का उपयोग करके उत्तरों को कैप्चर करने में सफल नहीं रहा हूं।

उत्तर

1

प्रश्न के दूसरे भाग के लिए, आप दृष्टिकोण मैं Scapy fails to sniff packets when using multiple threads में उल्लेख किया है की कोशिश करना चाहते हो सकता है।

मूल रूप से, एक अलग धागे पर स्निफ़ेर चलाएं और वापसी ट्रैफ़िक को एक कतार में फ़िल्टर करें, जिसे तब send() कर रहे मुख्य थ्रेड से एक्सेस किया जा सकता है। तो आप एक ही समय में (दो धागे पर) भेज और प्राप्त कर रहे हैं।

एकमात्र समस्या यह है कि मेरे विशेष सेटअप पर, मैं स्निफ़ेर में कुछ अजीब व्यवहार में आया जहां यह अलग थ्रेड पर चलने पर फ़िल्टर को लागू करने में विफल रहता है। उम्मीद है कि आप बेहतर भाग्य होगा।

अद्यतन: स्नफ़फर के साथ यह समस्या हल हो गई थी (ऊपर दिए गए मेरे प्रश्न का संदर्भ लें)।

आशा है कि इससे मदद मिलती है!

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