利用socket编写简单的端口扫描器
在程序通信时必须要创建 通信所使用的的套接字 使用TCP套接字类型可向目标主机 端口发起新的TCP链接 根据链接的状态判断 所访问目标主机的端口是否为打开 可连接状态
关于socket的理解可查阅此链接 https://blog.csdn.net/u010624263/article/details/84194470
import socket,time
net_scan_port = []
IP = input("请输入IP: ")
time_start = time.time()#开始计时
for port in range(1,65535):
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)#新建socket对象
s.settimeout(3)#设置超时时间单个IP单个端口3S超时
try:
res=s.connect_ex((IP,int(port)))
if res==0:
net_scan_port.append(port)#存储扫描成功的端口
print(port)
s.close
except Exception:
print()
if net_scan_port: #判断数列是否为空
for port in net_scan_port:
print(port)
print("上述端口已经打开")
else:
print("端口均未打开")
time_end = time.time() #结束计时
time_c= time_end - time_start #运行所花时间
print("扫描共用时:" + str(round(time_c,7)))
此版本在端口扫描时经常出现 较大的未开放的端口 各位大佬 如果知道为什么可以告诉我!!!