如何使用nmap使用Python列出子网中的地址是否处于活动状态

时间:2013-03-26 16:02:22

标签: python nmap cidr

我知道nmap能够ping扫描并输出只有活动IP的列表,但我正在搜索网络,以确定如何使用CIDR表示法列出IP是否处于活动状态。 (即,如果地址处于活动或非活动状态,则为1.1.1.1/32列表)。我也一直在研究netaddr和scapy,但我看不出我将如何做到这一点。我试图使用python脚本执行此操作。

由于

2 个答案:

答案 0 :(得分:1)

看起来有一个名为python-iptools的开源库,它能够将CIDR表示法转换为IP范围。

答案 1 :(得分:0)

在Python中执行此操作的最佳选择是使用Scapy。您可以轻松创建ping(ICMP Echo Request)数据包,将其目标设置为CIDR范围,然后“发送”它,它将按顺序发送到该范围内的每个地址:

>>> p = IP(dst="10.0.0.0/30") / ICMP()
>>> sr(p,timeout=5)
Begin emission:
Finished to send 4 packets.
**..................
Received 20 packets, got 2 answers, remaining 2 packets
(<Results: TCP:0 UDP:0 ICMP:2 Other:0>, <Unanswered: TCP:0 UDP:0 ICMP:2 Other:0>)

获取sr函数的输出(或您选择用于发送数据包的任何方法)留给您。获取地址(将数据包生成留给您)的另一种方法是使用ipaddr库,该库具有可以在CIDR网络上迭代的IPv4Network对象。

最后,我不得不指出Nmap可以接受CIDR格式的目标规范(例如192.168.1.0/24example.com/2610.0.0.0/8等。)