Scapy ARP函数在运行时没有给出正确的输出

Posted

技术标签:

【中文标题】Scapy ARP函数在运行时没有给出正确的输出【英文标题】:Scapy ARP function not giving proper output when running it 【发布时间】:2020-02-04 04:17:57 【问题描述】:

我有一个简单的脚本:

import scapy.all as scapy

def scan(ip):
    arg = scapy.ARP(pdst=ip)
    print(arg.summary())
scan("192.168.11.0/24")

但是当我运行这个脚本时,我得到的输出是:

ARP who has ?? says ??

通常情况下,摘要会给我 2 个 IP 地址,其中有 2 个问号,但由于某种原因,情况并非如此。此外,我制作了一个网络扫描仪,昨天它工作正常,并将网络上的所有 ip 和 mac 地址返回给我,但今天我似乎无法通过一个范围(例如:“192.168.11.0/24”)当我我得到的唯一输出是:

IP          MAC Address
----------------------------------------------------
192.168.11.1        08:02:8e:a1:6a:d0

即使网络中有更多设备。 scapy有什么问题吗?如果是这样,我应该如何删除并重新安装它,因为我已经完成了 pip uninstall scapy 和 pip install scapy 并且没有任何效果。

【问题讨论】:

【参考方案1】:

您实际上并没有对您的脚本做任何事情。您的函数包括arg = scapy.ARP(pdst=ip),它会创建一个 ARP 数据包。要发送它,请使用sr or sr1。还有覆盖ARP pings 的ARP 示例单行代码。应用在这里,

from scapy.all import *

def arp_scan(ips):
    resp = arping(ips)
    print(resp)
arp_scan("192.168.11.0/24")

我们将得到类似于

的输出
Begin emission:
*Finished sending 256 packets.

Received 1 packets, got 1 answers, remaining 255 packets
  9c:5c:12:ca:7b:6f 192.168.11.1

【讨论】:

以上是关于Scapy ARP函数在运行时没有给出正确的输出的主要内容,如果未能解决你的问题,请参考以下文章

scapy 中的ARP

Scapy/ARP 请求不适用于多个/范围 IP。仅针对单个 IP 请求

主动信息收集之发现-二层发现arping

Python Scapy ARP

python scapy的用法之ARP主机扫描和ARP欺骗

NORMDIST 函数没有给出正确的输出