我正在运行一个python脚本,作为我所报名的在线课程的写信,但我的脚本会抛出一些错误,我怀疑这些错误可能是我的设置问题,而不是代码问题。我已经附加了脚本和输出以供参考。
我不确定在这种情况下什么是好的故障排除步骤
#!/usr/bin/env python
import scapy.all as scapy
def scan(ip):
arp_request = scapy.ARP(pdst=ip)
broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
arp_request_broadcast = broadcast/arp_request
print(arp_request_broadcast.summary())
scan("10.0.0.1/24")
advenk@advenk:/media/root/Seagate/Tension/Github/Projects# python network_scanner.py
Ether / ARP who has ?? says ??
advenk@advenk:/media/root/Seagate/Tension/Github/Projects# python network_scanner.py
Ether / ARP who has ?? says ??
为什么我的ARP请求返回问号而不是IP?
您的ARP请求正在返回问号而不是IP,因为您尚未发送它们。在给出的代码中,您正在创建数据包,然后打印它们的摘要。如果要发送它们,请像srp一样使用send functions之一。要查看您可以访问的所有高级功能(包括发送的功能),请在Scapy的提示符下使用lsc()
。
arping
要进行ARP扫描(这是您要尝试的操作),请改用Scapy内置的arping。我当前的本地网络是192.168.1.0/24
,因此我将使用它来演示:
>>> arping("192.168.1.0/24")
Begin emission:
**********Finished sending 256 packets.
*
Received 11 packets, got 11 answers, remaining 245 packets
00:2c:78:20:ee:40 192.168.1.48
6c:34:ab:42:6b:18 192.168.1.67
8c:f1:fe:81:36:90 192.168.1.162
...
(<ARPing: TCP:0 UDP:0 ICMP:0 Other:11>,
<Unanswered: TCP:0 UDP:0 ICMP:0 Other:245>)
可能是您正在使用Python3解释器运行代码。如果您使用Python2解释器运行它,它应该可以工作。