带有 scapy 的 ARP 数据包未得到答复
ARP packets with scapy are unanswered
我正在使用 Scapy Python 构建网络扫描仪。我一直在尝试发送 ARP 数据包,但由于某些原因它们没有得到响应。
#!/usr/bin/env python3
from scapy.all import *
def scan(ip):
arp_request = ARP(pdst=ip)
broadcast = Ether(dst="ff:ff:ff:ff:ff:ff")
arp_request_broadcast = arp_request/broadcast
answered_list = srp(arp_request_broadcast, timeout=2)[0]
for element in answered_list:
print(element[1].show())
scan("192.168.1.0/24")
运行 结果如下:
[void@Void Network Scanner]$ sudo python3 tutorial_netscanner.py
[sudo] password for void:
Begin emission:
Finished sending 256 packets.
............................................................
Received 60 packets, got 0 answers, remaining 256 packets
奇怪的是,如果我 运行 来自 scapy interactive shell 的这个,它就可以工作并且 arp 数据包确实得到了答复。
arping("192.168.1.0/24")
超级困惑为什么这不起作用,代码对我来说似乎非常好,如果有人能帮助我,那就太好了。谢谢。
arp_request/broadcast
不正确。最外层的协议在左边。如果您使用 Wireshark 查看发生了什么(发生这种情况时您应该做的第一件事),您会发现它不是您期望的那样:
它本质上是一个格式错误的数据包。你需要broadcast / arp_request
;尽管指定 Ether
层是可选的。您可以简单地使用 ARP
(和 sr
)。
使用 Wireshark。这是一个非常宝贵的工具。你应该只 运行 它在你控制 over/permission 的网络上窥探,但它确实是不可或缺的。
我正在使用 Scapy Python 构建网络扫描仪。我一直在尝试发送 ARP 数据包,但由于某些原因它们没有得到响应。
#!/usr/bin/env python3
from scapy.all import *
def scan(ip):
arp_request = ARP(pdst=ip)
broadcast = Ether(dst="ff:ff:ff:ff:ff:ff")
arp_request_broadcast = arp_request/broadcast
answered_list = srp(arp_request_broadcast, timeout=2)[0]
for element in answered_list:
print(element[1].show())
scan("192.168.1.0/24")
运行 结果如下:
[void@Void Network Scanner]$ sudo python3 tutorial_netscanner.py
[sudo] password for void:
Begin emission:
Finished sending 256 packets.
............................................................
Received 60 packets, got 0 answers, remaining 256 packets
奇怪的是,如果我 运行 来自 scapy interactive shell 的这个,它就可以工作并且 arp 数据包确实得到了答复。
arping("192.168.1.0/24")
超级困惑为什么这不起作用,代码对我来说似乎非常好,如果有人能帮助我,那就太好了。谢谢。
arp_request/broadcast
不正确。最外层的协议在左边。如果您使用 Wireshark 查看发生了什么(发生这种情况时您应该做的第一件事),您会发现它不是您期望的那样:
它本质上是一个格式错误的数据包。你需要broadcast / arp_request
;尽管指定 Ether
层是可选的。您可以简单地使用 ARP
(和 sr
)。
使用 Wireshark。这是一个非常宝贵的工具。你应该只 运行 它在你控制 over/permission 的网络上窥探,但它确实是不可或缺的。