使用Python进行服务器端口扫描
要使用Python扫描服务器端口,可以使用`socket`库。首先,创建一个socket对象,然后使用`connect_ex()`方法尝试连接到目标IP和端口。如果连接成功,返回值为0,表示端口开放;否则,返回值为错误码。遍历需要扫描的端口范围(例如1-65535),对每个端口执行上述操作。为了提高效率,可以使用多线程或异步IO。最后,将开放的端口输出到屏幕上。以下是一个简单的示例代码: ```python import socket from concurrent.futures import ThreadPoolExecutor def port_scan(ip, port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(1) result = s.connect_ex((ip, port)) s.close() return result == 0 def main(): ip
主要功能:
检查远程服务器端口是否开启
轮询检查远程服务器所有端口是否开启
Python代码:
importsocketimportsyshost=sys.argv[1]mode=sys.argv[2]defcheck_port(host,port):sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.settimeout(5)result=sock.connect_ex((host,port))ifresult==0:print(f"{port}isopen")else:print(f"{port}isnotopen")sock.close()defcheck_ports(host,start_port,end_port):open_ports=[]forportinrange(start_port,end_port+1):sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.settimeout(1)result=sock.connect_ex((host,port))ifresult==0:open_ports.append(port)sock.close()returnopen_portsifmode=="all":open_ports=check_ports(host,1,65535)print("Openportson{}:{}".format(host,open_ports))else:port=int(mode)check_port(host,port)
使用示例:
pythonxx.py[host][port]//指定端口pythonxx.py[host]'all'//轮询所有端口