我正在读一本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)
目前没有回答
相关问题 更多 >
编程相关推荐