繁体   English   中英

一本书中的Python Scapy Arp扫描子网脚本

[英]Python Scapy Arp Scanning Subnet Script From a Book

我正在阅读一本Python书,其中有一个脚本可以使用scapy(Python工具/模块)来扫描子网中是否存在任何主机,并报告其IP和MAC地址。 该脚本是对先前调用/usr/bin/arping脚本的增强。 先前的脚本一次只允许一个IP地址,并且取决于所使用的arping工具的平台。 显然,此脚本(不适用于我)与平台无关!

如果有人可以查看脚本并对其进行调试,那就太好了。 这是脚本:

#! /usr/bin/env python

from scapy.all import srp
from scapy.all import Ether, ARP, conf

import sys

def arping(iprange="10.0.1.0/24"):
    """Arping function takes IP Address or Network, returns nested mac/ip list"""

    #conf, verb = 0
    ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=iprange), timeout=2)

    collection = []
    for snd, rcv in ans:
        result = rcv.sprintf(r"%ARP.psrc% %Ether.src%").split()
        collection.append(result)
    return collection

if __name__ == "__main__":
    if len(sys.argv) > 1:
        for ip in sys.argv[1:]:
            print "arping", ip
            print arping(ip)

    else:
        print arping()

该脚本不起作用。 它只是打印它正在扫描东西,但是什么也没发现。

我浏览了这个网站,发现一个教程也不起作用。 带有相关内容的网站位于: http : //www.secdev.org/projects/scapy/doc/usage.html#arp-ping

请参阅下面的示例,以获取运行此脚本时获得的输出示例:

loser@loser:~/Desktop/pyFun2$ gedit arp_scanz.py
loser@loser:~/Desktop/pyFun2$ sudo python arp_scanz.py
WARNING: No route found for IPv6 destination :: (no default route?)
Begin emission:
Finished to send 256 packets.

Received 0 packets, got 0 answers, remaining 256 packets
[]

外面有人知道我在想什么吗?

更新-解决方案更改srp函数或方法调用以指定要扫描的确切接口,如下所示:

ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=iprange),iface="en1", timeout=2)

可以是任何数目的东西。 我似乎可以使用有效的IP起点在网络上正常运行脚本。

您是否设置了适当的IP范围?

例如,我使用:

def arping(iprange="192.168.1.*"):

这会产生正确的结果,并且结果与scapy的arping()函数内置的结果相同。

因此,我认为这可能不完全是代码,而是您尝试的范围。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM