[英]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.