2

これについてグーグルで調べてみましたが、何も見つかりませんでした...ポートスキャナーを構築しています。ネットワーク範囲(192.168.2.*など)をスキャンして、その上にあるコンピューターの数を確認できるようにしたいと思いますオンラインの範囲。Nmapによく似ています。私はPythonでプログラミングしています。これはPythonで可能ですか?

4

4 に答える 4

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を参照してください。

于 2010-11-15T16:19:00.877 に答える
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(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
于 2010-11-15T16:42:08.057 に答える
0

raw ソケットを使用すると、nmap のようなものを実装できます。通常のプログラミング インターフェイスと比較して、「奇妙な」ことを行う特別に細工されたパケットを使用して、最も有益なプローブを作成する必要があることに気付くでしょう。IP/UDP/TCP RFCを読む価値があります。

raw ソケットを使用すると、選択した任意のプロービング パケットをバイトごとに生成できます。オプション/構成を設定すると、通常は不可能/通常の状況では実行が困難ですが、ホストを「だまして」豊富な情報を明らかにすることができます。

于 2010-11-15T16:22:37.210 に答える
0

ローカル ネット上の IPv4 の場合、たとえばScapyを使用してARPに頼ることができます。関連する質問を参照してください。

于 2010-11-15T16:29:33.713 に答える