Ich versuche, mit einem Raspberry Pi ARP-Anforderungen von einem bestimmten drahtlosen Gerät in meinem Netzwerk zu finden. Es ist eine dieser Amazon Dash-Schaltflächen. Jemand hat diesen Code verwendet, um zuzuhören, wenn der Bindestrich eine Verbindung zum WLAN herstellt.
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)
Wenn ich dies auf Raspbian (mit installiertem Python und Scapy) ausführe, erhalte ich eine Fehlermeldung
"IndexError: Layer [ARP] not found"
Ich kenne mich mit Scapy nicht aus und tauche zum ersten Mal ein. Vielen Dank für alle Ideen.
Antworten:
Auch ich mache das Gleiche. Was ich fand war, dass
tcpdump
nicht installiert wurde.Ein einfacher
sudo apt-get install tcpdump
behebt diesen Fehler für mich.quelle
Ich hatte den gleichen Fehler, fand ihn aber nicht zuverlässig, manchmal schlägt er sofort fehl mit:
und manchmal läuft es für immer.
Tipp: Stellen Sie
count=0
in der Druck-Sniff-Zeile ein, dass sie für immer ausgeführt wird.Ich hatte scapy ursprünglich von der Website installiert, tat aber schließlich Folgendes:
und es scheint gut zu laufen, wenn es läuft. Ich bin mir nicht sicher, ob ich all das benötige, aber Python-Scapy hat es empfohlen (und eine Reihe von Grafikroutinen), als ich es installiert habe.
Nachtrag: Jedes Mal, wenn ich mit dem Code experimentiere, ändert sich die Wahrscheinlichkeit, dass er ohne Absturz ausgeführt wird, so dass etwas wirklich Seltsames passiert.
quelle
Wir hatten hier das gleiche Problem, und es stellte sich heraus, dass wir vergessen haben, eine Bedingung zu überprüfen.
Fügen Sie einfach diese Zeile vor allen if-Blöcken ein:
quelle
Auf meinem Raspy B 2012 sind es> 50% der CPU.
Was ich versucht habe, war
sniff (filter = "tcp und port 123", prn = print_summary, store = 0)
Ich habe die Dash-Button-Anfragen an die IP des Rechners umgeleitet, auf dem Scapy über meine Firewall ausgeführt wird. Die Idee war, Ressourcen zu sparen und nicht den gesamten Datenverkehr auf Mac-Adressen zu überwachen, sondern nur Verbindungsanfragen auf dem Port zu überwachen.
Dies verbraucht ~ 30% CPU. Es funktioniert auf einem Ubuntu-Computer, aber auf einem Raspi B dauert es ungefähr 5 Minuten, bis es funktioniert, und zeigt dann Verbindungen von überall in meinem Netzwerk an - was es auf dem Ubuntu-Computer nicht tut. Ich gehe davon aus, dass das Raspy Musicbox-Image kaputt ist.
quelle