欢迎光临
我们一直在努力

使用Python写了个端口扫描程序

这段Python代码的功能是并发扫描指定IP地址的端口范围,测试每个端口是否可连接。具体来说:
coon_testing 函数用于测试指定IP和端口是否可连接。它通过创建socket对象并尝试连接来判断连接是否成功,并打印出成功连接的信息或不进行打印。
scan_worker 函数用于并发扫描指定IP的端口范围。它通过遍历指定的端口范围,调用 coon_testing 函数来测试每个端口是否可连接。
主程序部分从用户输入获取要扫描的IP地址、起始端口和结束端口,然后定义每次扫描的端口数量。接下来,通过创建扫描线程并启动来并发扫描端口。每次扫描结束后,更新下次扫描的起始端口。

代码和注释奉上:

import socket
import time
from threading import Thread


def coon_testing(ip, port):
"""
测试指定IP和端口是否可连接

参数:
- ip: 要测试连接的IP地址
- port: 要测试连接的端口号

返回值:
无返回值,但会打印出成功连接的信息或不进行打印
"""
socket.setdefaulttimeout(1) # 设置默认超时时间为1秒
s = socket.socket() # 创建socket对象
try:
t_start = time.time() # 记录开始尝试连接的时间
s.connect((ip, port)) # 尝试连接
t_end = time.time() # 记录成功连接的时间
flag = True
except:
flag = False
s.close() # 关闭socket连接
if flag:
connect_time = t_end - t_start # 计算连接耗时
info = f'找到 --> [IP]:{ip}, [端口]:{port}, [耗时]:{connect_time}'
print(info) # 打印连接成功的信息


def scan_worker(ip, port_start, port_end):
"""
并发扫描指定IP的端口范围,测试每个端口是否可连接

参数:
- ip: 要扫描的IP地址
- port_start: 扫描的起始端口号
- port_end: 扫描的结束端口号

返回值:
无返回值,直接调用coon_testing函数进行连接测试
"""
for port in range(port_start, port_end): # 遍历指定端口范围
coon_testing(ip, port) # 调用coon_testing函数测试连接


ip = input('请输入侦测的IP:') # 从用户输入获取要扫描的IP地址
port_start = int(input('请输入开始端口:')) # 从用户输入获取扫描的起始端口
port_end = int(input('请输入结束端口:')) # 从用户输入获取扫描的结束端口
ports_per_scan = 10 # 定义每次扫描的端口数量

# 并发扫描端口
while port_start < port_end:
port_max = port_start + ports_per_scan # 计算本次扫描的结束端口
port_max = min(port_max, port_end) # 确保不超过总结束端口
t = Thread(target=scan_worker, args=(ip, port_start, port_max)) # 创建扫描线程
t.start() # 启动线程
port_start = port_max + 1 # 更新下次扫描的起始端口
赞(0) 打赏
未经允许不得转载:创想未来 » 使用Python写了个端口扫描程序

评论 抢沙发

评论前必须登录!

 

更好的Python学习

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册