我为此进行了谷歌搜索,但是我什么都没找到……我正在构建端口扫描器,我想这样做,以便可以扫描网络范围,例如192.168.2。*,并找出其中有多少台计算机。在线范围。很多像Nmap。我正在用python编程。这在Python中可行吗?

最佳答案

这是草稿示例,您可以从以下示例开始:

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


或类似这样的使用ICMP(ping)而不是UDP:

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

07-24 09:46
查看更多