维基百科: 端口扫描工具(Port Scanner)指用于探测服务器或主机开放端口情况的工具。常被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务。端口扫描定义是客户端向一定范围的服务器端口发送对应请求,以此确认可使用的端口。虽然其本身并不是恶意的网络活动,但也是网络攻击者探测目标主机服务,以利用该服务的已知漏洞的重要手段。端口扫描的主要用途仍然只是确认远程机器某个服务的可用性。
TCP连接测试
在实现TCP通讯的时候,我们知道可以在客户端socket中输入主机名和端口号码来连接服务器。同样的,我们也可以使用这种方法来尝试连接一定范围的服务器端口:
from socket import socket, AF_INET, SOCK_STREAM
ports = range(10, 10000)
for port in ports:
s = socket(AF_INET, SOCK_STREAM)
s.settimeout(10)
if not s.connect_ex(('localhost', port)):
print(f'Opened Port: {port}')
我们扫描10到10000「不包含10000」的端口,使用s.connect_ex
进行连接,如果连接成功则返回0。通过if not
进行判别并输出主机localhost
开放的端口,其中主机名称localhost
可以替换成其他主机的名称或者IP地址。