2016-07-23 16 views
0

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.

+1

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

Antwort

0

Für das erste Beispiel fehlt wahrscheinlich die libdnet Abhängigkeit, wie in this SO answer diskutiert.

Beachten Sie auch, dass ein anderer Ansatz erforderlich ist, um neuere Dash-Schaltflächen für das Modell zu erkennen (auf DHCP-Anfragen anstatt auf ARP-Anfragen zu warten). Ich beschreibe die Lösung in this answer.