2011-03-25 5 views
5

में स्नीफिंग क्या कोई जानता है कि पाइथन में लाइव डेटा स्निफ़र कैसे लिखना है जो मूल आईपी पता और पूरा यूआरएल एक्सेस किया जा रहा है? मैंने urlsnarf से डेटा खींचने पर ध्यान दिया है हालांकि आईपीवी 6 समर्थित नहीं है (और कनेक्शन आईपीवी 6 होस्ट होंगे)।यूआरएल पाइथन

जबकि मैं टीसीपीडम्प से डेटा खींच सकता हूं और जीईटी/पोस्ट के लिए greping कर सकता हूं जो मुझे वेबसर्वर पर बस पथ के साथ छोड़ देगा, और मैं संबंधित एफक्यूडीएन प्राप्त नहीं करूंगा। दुर्भाग्य से SQUID w/IPv6 TPROXY का उपयोग पर्यावरण की कॉन्फ़िगरेशन के कारण एक विकल्प नहीं है।

क्या किसी के पास libpcap के लिए पाइथन बाइंडिंग के साथ ऐसा करने के बारे में कोई विचार है? आपकी मदद के सबसे सराहना जाएगा :)

धन्यवाद :)

+2

स्कैपी में कुछ आईपीवी 6 बाइंडिंग होनी चाहिए। एक बार जब आप आईपीवी 6 बाधा को पार कर लेते हैं तो यह सिर्फ http शीर्षलेखों को पार्स करने का मामला होना चाहिए। यह सब एप्लिकेशन लेयर में है, इसलिए आईपीवी 6 को भेजे जा रहे डेटा को प्रभावित नहीं करना चाहिए। – krs1

+0

http://stackoverflow.com/questions/462439/packet-sniffing-in-python- संभवतः संबंधित से संबंधित है। –

उत्तर

2

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

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

ओह, और आप आईपीवी 6 होस्ट के बारे में जानकारी प्रिंट करने के लिए socket.inet_ntop और socket.getaddrinfo का उपयोग करना चाहेंगे।