scapy läuft nicht unter Raspberry Pi Desktop x86!

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Pi-User
User
Beiträge: 4
Registriert: Dienstag 6. Februar 2018, 16:24

Hallo zusammen,

überall (auf dem Raspberry Pi Gerät) läuft dieses Skript aber nicht auf dem virtualisierten Raspberry Pi Desktop x86 Server!

Der Raspberry Pi Desktop x86 läuft als VM. Ich kann das Skript nicht ausführen. Ich bekomme ständig eine Fehlermeldung.

Script:

Code: Alles auswählen

from scapy.all import *

def arp_display(pkt):
    if pkt.haslayer(DHCP):
        print pkt[Ether].src

print "Druecken Sie den Dashbutton"
print sniff(prn=arp_display, filter="(udp and (port 67 or 68))", store=0)
Fehlermeldung, wenn ich das Skript als root so ausführe: python scriptname.py

Code: Alles auswählen

Druecken Sie den Dashbutton
Traceback (most recent call last):
  File "dash_button_detect.py", line 8, in <module>
    print sniff(prn=arp_display, filter="(udp and (port 67 or 68))", store=0)
  File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 593, in sniff
    **karg)]
  File "/usr/lib/python2.7/dist-packages/scapy/arch/linux.py", line 496, in __init__
    attach_filter(self.ins, filter, iface)
  File "/usr/lib/python2.7/dist-packages/scapy/arch/linux.py", line 157, in attach_filter
    s.setsockopt(SOL_SOCKET, SO_ATTACH_FILTER, bpfh)
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 22] Invalid argument
Vielen Dank im Voraus für die Hilfe.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe nicht den Hauch einer Ahnung was ein Raspberry Pi Desktop x86 Server sein soll. Kannst du das mal erlaeutern?

Ansonsten findet man fuer die Fehlermeldung und scapy workarounds:

https://pronto185.com/blog/2014/05/15/o ... rk-around/

Vielleicht hilft's ja.
Pi-User
User
Beiträge: 4
Registriert: Dienstag 6. Februar 2018, 16:24

Zuerst Danke für den Link. Die VMs laufen sowieso rund um die Uhr und ich habe genug Ressourcen für die VMs. Ich wollte einfach das Ganze als VM laufen lassen und scapy verwenden. Wenn sich herausstellt, dass es nicht funktioniert, dann werde ich den Pi aus dem Schrank holen.
Pi-User
User
Beiträge: 4
Registriert: Dienstag 6. Februar 2018, 16:24

Ich habe gerade mit ipython versucht. hier ist das Ergebnis:

Code: Alles auswählen

error                                     Traceback (most recent call last)
/home/pi/dash_button_detect.py in <module>()
      6
      7 print "Druecken Sie den Dashbutton"
----> 8 print sniff(prn=arp_display, filter="(udp and (port 67 or 68))", store=0)
      9

/usr/lib/python2.7/dist-packages/scapy/sendrecv.pyc in sniff(count, store, offline, prn, lfilter, L2socket, timeout, opened_socket, stop_filter, iface, *arg, **karg)
    591             else:
    592                 sniff_sockets = [L2socket(type=ETH_P_ALL, iface=iface, *arg,
--> 593                                            **karg)]
    594         else:
    595             sniff_sockets = [PcapReader(offline)]

/usr/lib/python2.7/dist-packages/scapy/arch/linux.pyc in __init__(self, iface, type, promisc, filter, nofilter)
    494                     filter = "not (%s)" % conf.except_filter
    495             if filter is not None:
--> 496                 attach_filter(self.ins, filter, iface)
    497         if promisc is None:
    498             promisc = conf.sniff_promisc

/usr/lib/python2.7/dist-packages/scapy/arch/linux.pyc in attach_filter(s, bpf_filter, iface)
    155     else:
    156         bpfh = struct.pack("HI", nb, id(bpf)+20)
--> 157     s.setsockopt(SOL_SOCKET, SO_ATTACH_FILTER, bpfh)
    158
    159 def set_promisc(s,iff,val=1):

/usr/lib/python2.7/socket.pyc in meth(name, self, *args)
    226
    227 def meth(name,self,*args):
--> 228     return getattr(self._sock,name)(*args)
    229
    230 for _m in _socketmethods:

error: [Errno 22] Invalid argument
Pi-User
User
Beiträge: 4
Registriert: Dienstag 6. Februar 2018, 16:24

Vielen Dank für den Link. :D :D Es läuft. :D
Antworten