Python Scapy Arp扫描子网脚本

2024-05-12 10:34:43 发布

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

我正在读一本Python的书,书中有一个脚本,可以使用scapython工具/模块scapy扫描子网中的任何主机,这些主机都在运行并报告它们的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)

Tags: importip脚本forsyscollectionscapysrp