Python端口扫描:检测开放端口的实用指南
Python端口扫描:检测开放端口的实用指南
你想知道如何使用Python检查某个主机上的哪些端口是开放的吗?这篇文章将为你提供一个简单易懂的指南,教你利用Python的socket模块进行端口扫描。
代码示例
以下Python代码演示了如何扫描指定主机和端口范围内的开放端口:pythonimport socket
定义要扫描的主机和端口范围host = '127.0.0.1'start_port = 1end_port = 65535
循环扫描端口for port in range(start_port, end_port + 1): # 创建 socket 对象 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置连接超时时间 sock.settimeout(1) try: # 尝试连接主机的指定端口 result = sock.connect_ex((host, port)) if result == 0: print(f'Port {port} is open') except: pass finally: # 关闭 socket 连接 sock.close()
代码解读
- 导入
socket模块: 首先,我们需要导入Python内置的socket模块,它提供了网络编程所需的函数。2. 定义目标主机和端口范围: 你需要指定要扫描的主机IP地址或域名,以及要扫描的端口范围。3. 创建socket对象: 在循环的每次迭代中,我们创建一个新的socket对象,用于尝试连接到目标端口。4. 设置连接超时:sock.settimeout(1)设置了1秒的连接超时,防止程序在连接无响应的端口时卡住。5. 尝试连接:sock.connect_ex((host, port))尝试连接到指定主机和端口。如果连接成功,返回值为0;否则,返回一个错误代码。6. 输出结果: 如果连接成功,打印出开放的端口号。7. 关闭连接: 最后,无论连接是否成功,都需要关闭socket连接,释放资源。
总结
通过以上步骤,你可以使用Python轻松实现简单的端口扫描功能。请注意,在进行端口扫描时,请务必遵守相关法律法规,并获得目标主机的授权。
原文地址: https://www.cveoy.top/t/topic/f0Ad 著作权归作者所有。请勿转载和采集!