2016-04-16 50 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)