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