标签: scapy

使用 Python 和 Scapy 在 Pi 上嗅探 ARP

我正在尝试使用 Raspberry Pi 查找来自我网络上特定无线设备的 ARP 请求。它是亚马逊仪表板按钮之一。有人使用此代码来收听仪表板何时连接到 wifi。

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 == '74:75:48:5f:99:30': # button 1
        print "Pushed Huggies"
      elif pkt[ARP].hwsrc == '10:ae:60:00:4d:f3': # button 2
        print "Pushed Elements"
      else:
        print "ARP Probe from unknown device: " + pkt[ARP].hwsrc

print sniff(prn=arp_display, filter="arp", store=0, count=10)
Run Code Online (Sandbox Code Playgroud)

当我在 Raspbian(安装了 python 和 scapy)上运行它时,出现错误

"IndexError: Layer [ARP] not found"
Run Code Online (Sandbox Code Playgroud)

我完全不熟悉 scapy,只是第一次潜水。感谢您的任何想法。

python arp scapy

12
推荐指数
2
解决办法
1万
查看次数

iptables 规则不对 scapy 数据包执行任何操作

udp我编写了这条规则,将所有目标 IP 地址更改8.8.8.8dport53:

iptables -t nat -A OUTPUT -p udp -m udp --dport 53 -j DNAT --to-destination 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

当我使用以下规则时,该规则有效:

dig +short iranled.com @4.2.2.4
Run Code Online (Sandbox Code Playgroud)

tcpdump输出是:

04:42:38.023348 IP 192.168.1.2.48984 > 8.8.8.8.53: UDP, length 29
04:42:38.242241 IP 8.8.8.8.53 > 192.168.1.2.48984: UDP, length 45
Run Code Online (Sandbox Code Playgroud)

没关系。

但是当我从 中创建这个数据包时scapyiptables规则没有结果!

sr1(IP(dst="4.2.2.4")/UDP()/DNS(rd=1,qd=DNSQR(qname="iranled.com")))
Run Code Online (Sandbox Code Playgroud)

tcpdump输出是:

04:43:00.442453 IP 192.168.1.2.53 > 4.2.2.4.53: UDP, length 29
04:43:00.855930 IP 4.2.2.4.53 > 192.168.1.2.53: UDP, length 45
Run Code Online (Sandbox Code Playgroud)

为什么数据包没有scapy被更改iptables

更新

#iptables …
Run Code Online (Sandbox Code Playgroud)

iptables scapy

5
推荐指数
0
解决办法
1388
查看次数

标签 统计

scapy ×2

arp ×1

iptables ×1

python ×1