Scapy函数不从Amazon破折号按钮返回DHCP请求

时间:2017-03-27 05:04:55

标签: python udp scapy dhcp

我正在使用scapy嗅探功能来使用Amazon Dash按钮来触发功能。我正在使用的代码基本上完全来自Github的解决方案,并进行了一些非常小的调整。

我已经使用了线鲨,发现了破折号按钮的DHCP请求并从此处拉出了按钮的MAC地址,但该功能仍未返回任何内容。

以下是代码:

import logging
logging.getLogger('scapy.runtime').setLevel(logging.ERROR)
from scapy.all import *

def dash_pressed():
  print 'Dash button pressed.'

def udp_filter(pkt):
  options = pkt[DHCP].options
  for option in options:
    if isinstance(option, tuple):
      if 'requested_addr' in option:
        mac_to_action[pkt.src]()
        break

mac_to_action = {'DASH_MAC_ADDRESS_HERE' : dash_pressed}
mac_id_list = list(mac_to_action.keys())

print 'Waiting for a button press...'
sniff(prn=udp_filter, store=0, filter='udp', lfilter=lambda d: d.src in mac_id_list)

(替换了mac_to_action dict中的MAC地址字符串)

我没有收到任何错误,只是没有任何错误。当我打印嗅探功能时,它显示0 udp数据包。我已经对我的MAC地址进行了两次和三次检查,这绝对是源地址(不管怎样我都可以将它与ff:ff:ff:ff:ff:ff混合)。为什么不按下短按按钮?

1 个答案:

答案 0 :(得分:0)

此代码适用于我的亚马逊按钮

<script type="module" src="module.js"></script>
<script nomodule src="fallback.js"></script>

我不确定问题是否存在ARP / DHCP差异。 可能是您运行没有root权限的代码或执行其他阻止scapy正常工作的代码。