2016-04-16 22 views
1

我正在尝试学习编程和在命令行中工作,所有这些,我仍然对它很感兴趣。我得到了一个亚马逊Dash按钮,我可以在按下它时在Slack房间里触发一条消息。然后我尝试在我的raspi2上重新创建程序,它一直工作,现在当我运行程序时,它似乎无法识别MAC地址,即根本没有任何反应。RasPi在ARP探针上不触发

这里是正在运行

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) 

它工作的我第一次运行该程序,并按下按钮,但现在它只是运行,所以没有任何无限期程序。

任何帮助,将不胜感激。对不起,如果我的术语是错的。

谢谢!

+0

如何分组看,你是试图过滤? –

+0

@KlausD。我甚至不知道如何回答这个问题,对不起:我所知道的是,它在我第一次运行它,然后再也不会如预期的那样运行。 – Shane

+0

所以,我对短跑的工作方式一无所知,但总的来说,你应该只看到一次arp请求,然后客户端应该缓存它,直到事情超时......你能/你有没有试过重新启动短跑硬件?您是否尝试过嗅探流量,以查看除arp请求之外是否还有其他数据发送? – Foon

回答

0

尝试注释掉行:

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

我有两个全新的仪表板按钮,而不是做了0.0.0.0的ARP,他们正在做的BOOTP请求获得一个DHCP地址,这将导致寻找arp 0.0.0.0来忽略它们的常见脚本。

您可以修改脚本以监视bootp,而不是监视arp 0.0.0.0,或者正如cyrus所说,注释掉arp探测器的行测试。

0

对于这种变化(检测与BOOTP与ARP短跑按钮)还在挣扎,这里是我使用的是一个全新的短跑按钮是什么:

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)