我试图学习编程和在命令行中工作以及所有这些,而且我还是很陌生。我得到了一个亚马逊短跑按钮,当你按下它时,我能够让它在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)
这是我第一次运行程序并按下按钮,但现在它只是运行并无限期地执行任何操作。
任何帮助将不胜感激。对不起,如果我的术语都错了。
谢谢!
答案 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)