import nmap nm = nmap.PortScanner() nm.scan(hosts='192.168.2.0/24', arguments='-n -sP -PE -PA21,23,80,3389') hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()] for host, status in hosts_list: print('{0}:{1}'.format(host, status))
2
1
私はこれをグーグルで試しましたが、何も見つかりませんでした… 私はポートスキャナーを構築していますが、ネットワーク範囲、たとえば192.168.2。*をスキャンし、その範囲にあるオンラインのコンピューターの数を調べることができるようにしたいと思います。 Nmapのようにたくさん。 私はPythonでプログラミングしています。 これはPythonで可能ですか?
4 Answer
2
`python-nmap`を使用します。 基本的な使い方
import nmap nm = nmap.PortScanner() nm.scan(hosts='192.168.2.0/24', arguments='-n -sP -PE -PA21,23,80,3389') hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()] for host, status in hosts_list: print('{0}:{1}'.format(host, status))
詳細については、http://pypi.python.org/pypi/python-nmapを参照してください
1
開始できる*下書き*の例を次に示します。
import socket addr_range = "192.168.1.%d" ip_address_up = [] # Use UDP. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.settimeout(2.0) for i in range(1, 254): try: ip = addr_range % i socket.gethostbyaddr(ip) ip_address_up.append(ip) except socket.herror as ex: pass print ip_address_up
またはUDPに感謝するのではなくICMP(http://svn.pylucid.net/pylucid/CodeSnippets/ping.py[ping])を使用したこのようなもの:
import socket import ping ip_address_up = [] addr_range = "192.168.1.%d" for i in range(1, 254): try: ip = addr_range % i delay = ping.do_one(ip, timeout=2) ip_address_up.append(ip) except (socket.herror, socket.timeout) as ex: pass print ip_address_up
0
raw socketsを使用して、nmapのようなものを実装できます。 おそらく、通常のプログラミングインターフェイスと比較して、「奇妙な」ことを行う特別に細工されたパケットを使用して、最も有益なプローブを作成する必要があることがわかるでしょう。 IP / UDP / TCP RFCsで読む価値があります。
rawソケットを使用すると、通常は不可能/困難であるが、ホストを「だまして」豊富な情報を明らかにするオプション/構成を設定して、選択したプローブパケットをバイト単位で生成できます。
0
ローカルネット上のIPv4の場合、たとえばhttp://www.secdev.org/projects/scapy/[Scapy]、https://stackoverflowを使用して、http://en.wikipedia.org/wiki/Address_Resolution_Protocol [ARP]に頼ることができます。 .com / questions / 85577 / search-for-host-with-mac-address-using-python [関連する質問を参照]。