RasPi不会在ARP探测器上触发

时间:2016-04-16 22:17:53

标签: python raspberry-pi raspbian arp

我试图学习编程和在命令行中工作以及所有这些,而且我还是很陌生。我得到了一个亚马逊短跑按钮,当你按下它时,我能够让它在Slack房间触发一条消息。然后我尝试在我的raspi2上重新创建程序,它工作ONCE,现在当我运行程序时,它似乎无法识别MAC地址,即根本没有任何事情发生。

这是正在运行的程序

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)

这是我第一次运行程序并按下按钮,但现在它只是运行并无限期地执行任何操作。

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

谢谢!

3 个答案:

答案 0 :(得分:0)

尝试评论该行:

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

答案 1 :(得分:0)

我有两个全新的破折号按钮,而不是为0.0.0.0执行arp,他们正在执行bootp请求以获取dhcp地址,这会导致寻找arp 0.0.0.0的常见脚本忽略它们

你可以修改脚本来监视bootp,而不是观察arp 0.0.0.0,或者正如cyrus所说的那样,注释掉arp探测器的线路测试。

答案 2 :(得分:0)

对于那些仍在努力应对这一变化的人(使用bootp vs. arp检测Dash按钮),这就是我使用全新的Dash按钮时所使用的:

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)