Ich habe Probleme, Arbeitscode zu finden, um ARP-Anfragen zu finden, die von einem Amazon-Dashbutton gesendet wurden. Ich versuchte Ted Benson's code, und auch this code here, aber keiner scheint zu arbeiten.Dash-Taste erkennen ARP-Anfragen
Teds Code:
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
print("ARP Probe from: " + pkt[ARP].hwsrc)
print(sniff(prn=arp_display, filter="arp", store=0, count=10))
Das Problem, das ich habe, ist, mit der Linie scapy.all import *
. Ich bekomme eine lange Liste von Erklärungen, aber die letzte Zeile des Fehlers ist import dnet ImportError: No module named dnet
.
Der zweite Code, den ich versuchte, ist
import socket
import struct
import binascii
# Written by Bob Steinbeiser (https://medium.com/@xtalker)
rawSocket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW,
socket.htons(0x0003))
MAC = '74c24671971c'
while True:
packet = rawSocket.recvfrom(2048)
ethernet_header = packet[0][0:14]
ethernet_detailed = struct.unpack('!6s6s2s', ethernet_header)
arp_header = packet[0][14:42]
arp_detailed = struct.unpack('2s2s1s1s2s6s4s6s4s', arp_header)
# skip non-ARP packets
ethertype = ethernet_detailed[2]
if ethertype != '\x08\x06':
continue
source_mac = binascii.hexlify(arp_detailed[5])
dest_ip = socket.inet_ntoa(arp_detailed[8])
if source_mac == MAC:
print "Dash button pressed!, IP = " + dest_ip
Dies ist der Fehler Ich erhalte: 'AttributeError: 'module' object has no attribute 'AF_PACKET''
.
Ich habe beide Code in Python 2.7 und 3.4 versucht und es funktioniert auch nicht. Bitte lassen Sie mich wissen, ob es etwas gibt, was ich tun kann, oder einen Code, den ich wiederverwenden kann.
Willkommen bei SO. Es gibt wahrscheinlich nicht genug Informationen, um diese Frage zu beantworten. Sehen Sie [wie man fragt] (http://stackoverflow.com/help/how-to-ask) und erstellen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). – tmthydvnprt