先放完整代码
import socket IP = input("请输入目标IP") start = int(input("请输入起始端口")) end = int(input("请输入结束端口")) + 1 for port in range(start, end): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(2) try: result = sock.connect_ex((IP, port)) if result == 0: print(IP,":{}已放开".format(port)) sock.close() except Exception as e: pass
思路
导入socket模块
import socket
获取使用者输入的IP,起始端口,终止端口信息,超时时限并用四个变量分别接收,终止端口后面加一方便使用后面的range循环
IP = input("请输入目标IP") start = int(input("请输入起始端口")) end = int(input("请输入结束端口")) + 1 s = int(input("请输入超时时限(秒)"))
开始循环端口号
for port in range(start, end):
创建套接字对象
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
设置超时时限并导入使用者的输入值
sock.settimeout(s)
因为我们不一定能成功扫到对方的某个端口,故用try语句并尝试与目标端口进行连接
try: result = sock.connect_ex((IP, port))
加入if语句,如果连接成功,打印ip+端口号,然后关闭套接字对象
if result == 0: print(IP,":{}已放开".format(port)) sock.close()
如果连接失败,则直接开始下一次循环
except Exception as e: pass