nmap にはアクティブな IP のみのリストを ping スイープして出力する機能があることは知っていますが、ネットを精査して、CIDR 表記を使用して IP がアクティブかどうかをリストする方法を見つけています。(つまり、アドレスがアクティブまたは非アクティブの場合、1.1.1.1/32 リストの場合)。netaddr と scapy も調べていますが、どのように機能させるかわかりません。Pythonスクリプトを使用してこれを実行しようとしています。
ありがとう
CIDR 表記から IP 範囲に変換できるpython-iptoolsというオープンソース ライブラリがあるようです。
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
ライブラリにはIPv4Network
、CIDR ネットワークを介して反復できるオブジェクトがあります。
192.168.1.0/24
最後に、Nmap は CIDR 形式 (例: 、example.com/26
、10.0.0.0/8
など)のターゲット仕様を受け入れることができることを指摘しなければなりません。