2016-04-16 9 views
1

Ich versuche zu lernen über Programmierung und Arbeit in der Befehlszeile und all das und ich bin immer noch wirklich neu darin. Ich habe eine Amazon Dash-Taste, mit der ich mich herumschlagen konnte, und ich konnte sie dazu bringen, eine Nachricht in einem Slack-Raum auszulösen, wenn ich sie drücke. Dann habe ich versucht, das Programm auf meinem raspi2 neu zu erstellen, es funktionierte ONCE und jetzt, wenn ich das Programm starte, scheint es nur die MAC-Adresse nicht zu erkennen, dh nichts passiert überhaupt. HierRasPi triggert nicht auf ARP Probe

ist das Programm, das

import requests 
import json 

SLACK_INCOMING_WEB_HOOK = "https://hooks.slack.com/services/....." #Figure I should remove this for my question... 
SLACK_INCOMING_USER = "SlackBit Bot" #Slack Bot display name 
SLACK_INCOMING_CHANNEL = "#test" #Slack Channel 

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 == 'a0:02:dc:42:32:e3': # Huggies 
     print "Pushed Doritos" 
     payload = { 
      "text": "You Pressed The Button!", 
      "username": SLACK_INCOMING_USER, 
      "channel": SLACK_INCOMING_CHANNEL 
     } 
     r = requests.post(SLACK_INCOMING_WEB_HOOK, json.dumps(payload), headers={'content-type': 'application/json'}) 
     print r.status_code 
     print r.content 
     else: 
     print "ARP Probe from unknown device: " + pkt[ARP].hwsrc 

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

Es funktionierte das erste Mal ausgeführt wird, ich das Programm lief und die Taste gedrückt, aber jetzt läuft es nur und tut nichts, auf unbestimmte Zeit.

Jede Hilfe wäre willkommen. Entschuldigung, wenn meine Terminologie falsch ist.

Danke!

+0

Wie funktioniert das Paket aussehen, die Sie versuchen zu filtern? –

+0

@KlausD. Ich bin mir nicht einmal sicher, wie ich das beantworten soll, tut mir leid:/Alles was ich weiß ist, dass es wie erwartet funktionierte, als ich es das erste Mal lief und dann nie wieder. – Shane

+0

Also, ich weiß nichts darüber, wie Dash funktioniert, aber im Allgemeinen sollten Sie nur diese Arp-Anfrage nur einmal sehen und dann sollte der Client es zwischenspeichern, bis die Sache ausläuft ... können/haben Sie versucht, die Dash-Hardware neu zu starten? Haben Sie versucht, den Datenverkehr abzufragen, um zu sehen, ob neben ARP-Anfragen noch andere Daten gesendet werden? – Foon

Antwort

0

Versuchen Sie die Zeile auszukommen:

if pkt[ARP].psrc == '0.0.0.0': # ARP Probe 
0

ich zwei brandneue Strich haben Knöpfe, stattdessen eine arp für 0.0.0.0 zu tun, sie einen bootp Anfrage machen eine DHCP-Adresse zu erhalten, führt dies zu der allgemeine Skripts, die nach einem arp 0.0.0.0 suchen, um sie zu ignorieren.

Sie können die Skripts ändern, um nach bootp zu suchen, anstatt nach arp 0.0.0.0 zu suchen, oder einfach, wie cyrus sagt, den Zeilen-Test für eine arp-Sonde auskommentieren.

0

Für jene noch mit dieser Änderung zu kämpfen (Erkennen der Dash-Taste mit bootp vs. arp), hier ist was ich mit einem brandneuen Dash Knopf bin mit:

from scapy.all import * 
import requests 
import time 
def arp_display(pkt): 
    if pkt.haslayer(DHCP): 
    if pkt[Ether].src == 'x:x:x:x:x:x': # Dash Button MAC 
    print "Pushed Dash Button" 
    else: 
    print "BOOTP Request from other device: " + pkt[Ether].src 
print sniff(prn=arp_display, filter="(udp and (port 67 or 68))", store=0) 
Verwandte Themen