0

我知道 nmap 能够 ping 扫描并输出仅活动 IP 的列表,但我正在网上搜索以了解如何使用 CIDR 表示法列出 IP 是否处于活动状态。(即对于 1.1.1.1/32 列表,如果地址是活动的或非活动的)。我也一直在研究 netaddr 和 scapy,但我不知道我将如何使其工作。我正在尝试使用 python 脚本来做到这一点。

谢谢

4

2 回答 2

1

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

于 2013-03-26T16:07:33.310 回答
0

在 Python 中执行此操作的最佳选择是使用 Scapy。您可以轻松地创建一个 ping(ICMP 回显请求)数据包,将其目标设置为 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库,它有一个IPv4Network可以在 CIDR 网络上迭代的对象。

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

于 2013-03-26T20:18:47.570 回答