Scapy不接受此类值“10.0.2.1/24”

2024-05-18 08:35:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码应该发送数据包并返回mac地址,但我遇到了一些错误, 守则:

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.2.1/24")

错误是:

Ether / ARP who has ?? says ??

Tags: 代码ipscanrequestmac地址错误数据包
1条回答
网友
1楼 · 发布于 2024-05-18 08:35:45

传递给层ARP的值很好。 但是您的代码没有向网络发送/接收任何数据包

让我们修复您的代码:


from scapy.all import ARP, Ether, srp
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

    # send packet to the network, wait for replies for 3 secondes, then return all the answers
    result = srp(arp_request_broadcast, timeout=3, verbose=0)[0]
    
    # for each replay, 
    for sent, received in result:
        print(received.summary())

scan("192.168.1.1/24")

在我的网络中为我提供:

Ether / ARP is at 00:24:46:03:87:11 says 192.168.1.195 / Padding
Ether / ARP is at f8:75:a4:76:68:36 says 192.168.1.216 / Padding
Ether / ARP is at 78:96:84:9c:13:20 says 192.168.1.254 / Padding

请注意,您需要在sudo中运行该代码,因为它需要对网络进行读/写操作

您可以在这里看到完整的解决方案:https://www.thepythoncode.com/article/building-network-scanner-using-scapy

相关问题 更多 >