पाई पर एआरपी के लिए सूंघने के लिए पायथन और स्केपी का उपयोग करना


12

मैं अपने नेटवर्क पर एक विशिष्ट वायरलेस डिवाइस से एआरपी अनुरोधों को खोजने के लिए रास्पबेरी पाई का उपयोग करने की कोशिश कर रहा हूं। यह उन अमेज़ॅन डैश बटन में से एक है। जब कोई वाईफ़ाई से कनेक्ट करता है तो सुनने के लिए किसी ने इस कोड का उपयोग किया था।

from scapy.all import *
def arp_display(pkt):
  if pkt[ARP].op == 1: #who-has (request)
    if pkt[ARP].psrc == '0.0.0.0': # ARP Probe
      if pkt[ARP].hwsrc == '74:75:48:5f:99:30': # button 1
        print "Pushed Huggies"
      elif pkt[ARP].hwsrc == '10:ae:60:00:4d:f3': # button 2
        print "Pushed Elements"
      else:
        print "ARP Probe from unknown device: " + pkt[ARP].hwsrc

print sniff(prn=arp_display, filter="arp", store=0, count=10)

जब मैं इसे रास्पियन (अजगर और स्केप के साथ) पर चलाता हूं, तो मुझे एक त्रुटि मिलती है

"IndexError: Layer [ARP] not found"

मैं पहली बार स्केपी और सिर्फ डाइविंग से अपरिचित हूं। किसी भी विचार के लिए धन्यवाद।


क्या आपको कभी यह काम मिला? मैं उस मुद्दे पर पिछले मिल गया है, लेकिन अभी भी मेरे बटन से एक ARP अनुरोध नहीं देख सकता
jbnunn

@jbnunn इस जवाब ने मेरे लिए काम किया stackoverflow.com/questions/24415294/…
काटू

जवाबों:


7

मैं भी वही काम कर रहा हूं। मैंने जो पाया वह tcpdumpस्थापित नहीं था।

एक साधारण sudo apt-get install tcpdumpमेरे लिए यह त्रुटि तय है।


6

मेरे पास एक ही त्रुटि थी, लेकिन यह पाया कि यह मज़बूती से नहीं होता है, कभी-कभी यह तुरंत विफल हो जाता है:

IndexError: Layer [ARP] not found

और कभी-कभी यह हमेशा के लिए चलता है।

संकेत: count=0इसे हमेशा के लिए चलाने के लिए प्रिंट सूँघने की रेखा में सेट करें , गिनती समयबाह्य प्रतीत होती है।

मैंने शुरू में वेबसाइट से स् थेरेपी स्थापित की थी, लेकिन यह करना समाप्त कर दिया:

apt-get update
apt-get upgrade
apt-get install tcpdump tcpreplay wireshark python-scapy

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

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


1

हमारे यहां एक ही मुद्दा था, और यह पता चला कि हम एक शर्त की जांच करना भूल गए।

सभी ब्लॉक होने से पहले बस इस लाइन को जोड़ें:

if pkt.haslayer(ARP):

0

मेरे रसपी बी 2012 पर यह सीपीयू के 50% तक खा जाता है।

मैंने जो कोशिश की थी

सूँघना (फ़िल्टर = "tcp और पोर्ट 123", prn = Print_summary, store = 0)

मैंने मशीन के आईपी पर डैश-बटन अनुरोधों को पुनर्निर्देशित किया जहां स्काइप मेरे फ़ायरवॉल के माध्यम से चलता है। यह विचार था कि मैक को सहेजने के लिए सभी स्रोतों की निगरानी नहीं बल्कि केवल पोर्ट पर कनेक्शन के अनुरोधों को देखने के लिए ressources को सहेजना था।

यह ~ 30% Cpu की खपत करता है। यह एक उबंटू मशीन पर काम करता है, लेकिन एक रस्सी बी पर काम शुरू करने में लगभग 5 मिनट लगते हैं और फिर मेरे पूरे नेटवर्क से कनेक्शंस दिखाता है - यह उबंटू मशीन पर नहीं है। मैं Raspy Musicbox छवि पर इसके टूटे हुए मान।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.