2016-04-16 2 views
1

Я пытаюсь узнать о программировании и работе в командной строке, и все это, и я все еще на самом деле новичок в этом. У меня есть кнопка Amazon Dash, с которой можно связаться, и я смог заставить ее вызвать сообщение в комнате Slack, когда вы его нажимаете. Затем я попытался воссоздать программу на моем raspi2, она работала ONCE, и теперь, когда я запускаю программу, она просто не распознает MAC-адрес, т. Е. Ничего не происходит вообще.RasPi не запускается на ARP Probe

Вот это программа, которая работает

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, они делают запрос ВООТРА, чтобы получить адрес DHCP, это приводит к тому, общие скрипты, которые ищут arp 0.0.0.0, чтобы игнорировать их.

вы можете изменить скрипты, чтобы посмотреть на bootp, вместо того, чтобы смотреть на arp 0.0.0.0 или просто, как говорит cyrus, прокомментируйте тестирование линии для зонда arp.

0

Для тех, кто еще борется с этим изменением (Обнаружение кнопки тира с BOOTP против АРПОВ), вот что я использую с совершенно новой кнопкой черточки:

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) 
Смежные вопросы