Python程序,输入IP,扫描该IP哪些端口对外是开放的,输出端口列表
#!/usr/bin/env python
# -*- coding: utf-8 -*-"""
IP端口扫描程序
输入IP地址,扫描该IP哪些端口对外是开放的,输出端口列表
"""import socket
import sys
import concurrent.futures
import ipaddress
from tabulate import tabulate
import timedef is_valid_ip(ip):"""验证IP地址是否有效"""try:ipaddress.ip_address(ip)return Trueexcept ValueError:return Falsedef scan_port(ip, port, timeout=1):"""扫描单个端口是否开放参数:ip (str): 目标IP地址port (int): 要扫描的端口timeout (float): 连接超时时间(秒)返回:bool: 如果端口开放返回True,否则返回False"""try:# 创建TCP套接字sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.settimeout(timeout)# 尝试连接result = sock.connect_ex((ip, port))# 关闭套接字sock.close()# 如果连接成功,端口是开放的return result == 0except (socket.error, socket.timeout, OSError):return Falsedef scan_ports(ip, port_range=None, max_workers=100):"""扫描IP地址的多个端口参数:ip (str): 目标IP地址port_range (tuple): 端口范围,格式为(起始端口, 结束端口)max_workers (int): 最大并发线程数返回:list: 开放端口列表"""if port_range is None:# 默认扫描常见端口port_range = (1, 1024)start_port, end_port = port_rangeopen_ports = []total_ports = end_port - start_port + 1print(f"开始扫描 {ip} 的端口 {start_port}-{end_port}...")start_time = time.time()# 使用线程池进行并发扫描with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor:# 创建扫描任务future_to_port = {executor.submit(scan_port, ip, port): port for port in range(start_port, end_port + 1)}# 处理完成的任务completed = 0for future in concurrent.futures.as_completed(future_to_port):port = future_to_port[future]completed += 1# 显示进度if completed % 100 == 0 or completed == total_ports:progress = (completed / total_ports) * 100elapsed = time.time() - start_timeprint(f"进度: {completed}/{total_ports} ({progress:.1f}%) - 已用时间: {elapsed:.1f}秒", end="\r")try:if future.result():open_ports.append(port)print(f"\n发现开放端口: {port}")except Exception as e:print(f"\n扫描端口 {port} 时出错: {e}")print(f"\n扫描完成! 总用时: {time.time() - start_time:.1f}秒")return open_portsdef display_open_ports(ip, open_ports):"""显示开放端口列表"""if not open_ports:print(f"\n{ip} 没有发现开放的端口")return# 尝试获取常见端口的服务名称port_info = []for port in sorted(open_ports):try:service = socket.getservbyport(port)except (socket.error, OSError):service = "未知"port_info.append([port, service])# 显示表格print(f"\n{ip} 的开放端口:")headers = ["端口", "可能的服务"]print(tabulate(port_info, headers=headers, tablefmt="grid"))def main():"""主函数"""# 获取用户输入if len(sys.argv) > 1:target_ip = sys.argv[1]else:target_ip = input("请输入要扫描的IP地址: ")# 验证IP地址if not is_valid_ip(target_ip):print(f"错误: '{target_ip}' 不是有效的IP地址")sys.exit(1)# 获取端口范围try:custom_range = input("请输入要扫描的端口范围 (格式: 起始端口-结束端口) [默认: 1-1024]: ")if custom_range:start, end = map(int, custom_range.split('-'))if start < 1 or end > 65535 or start > end:raise ValueErrorport_range = (start, end)else:port_range = (1, 1024)except ValueError:print("错误: 无效的端口范围,使用默认范围 1-1024")port_range = (1, 1024)# 扫描端口open_ports = scan_ports(target_ip, port_range)# 显示结果display_open_ports(target_ip, open_ports)if __name__ == "__main__":try:main()except KeyboardInterrupt:print("\n\n扫描被用户中断")sys.exit(0)except Exception as e:print(f"\n程序执行出错: {e}")sys.exit(1)
相关文章:
Python程序,输入IP,扫描该IP哪些端口对外是开放的,输出端口列表
#!/usr/bin/env python # -*- coding: utf-8 -*-""" IP端口扫描程序 输入IP地址,扫描该IP哪些端口对外是开放的,输出端口列表 """import socket import sys import concurrent.futures import ipaddress from tabulate im…...
极狐GitLab 容器镜像仓库功能介绍
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 极狐GitLab 容器镜像库 (BASIC ALL) 您可以使用集成的容器镜像库,来存储每个极狐GitLab 项目的容器镜像。 要为您…...
【嵌入式开发-IIC】
嵌入式开发-IIC ■ IIC简介■ IIC ■ IIC简介 ■ IIC...
能见度测量仪:能适应各种恶劣天气状况
云境天合TH-BN10能见度测量仪是一种用于测量大气能见度的专业仪器,在气象观测、交通运输、航空航海等领域发挥着关键作用。 能见度即目标物的能见距离,指观测目标物时,能从背景上分辨出目标物轮廓的最大距离,是重要的气象观测要素…...
运维打铁:服务器分类及PHP入门
文章目录 C/S架构和B/S架构C/S架构B/S架构 服务器分类服务器类型服务器软件 使用 WampServer 搭建 HTTP服务集成环境的分类WampServer 的安装测试访问配置网站根目录 静态网站和动态网站PHP的常见语法第一段 php 代码注释变量数据类型运算符函数的定义类和对象内容输出循环语句…...
SpringBoot应急知识学习系统开发实现
概述 一个基于SpringBoot开发的应急知识学习系统,该系统提供了完整的用户注册、登录、知识学习与测评功能。对于开发者而言,这是一个值得参考的免费Java源码项目,可以帮助您快速构建类似的教育平台。 主要内容 5.2 注册模块的实现 系统采…...
系统思考助力富维东阳
刚刚完成了长春一家汽车零配件公司关于系统思考的项目! 在开班仪式上,公司总经理深刻阐述了项目的背后意义,强调了系统思考与公司战略的紧密联系。这不仅是一次培训,更是一次关于“如何全方位看待问题”的深度对话。 在这个过程中…...
《供应链网络攻击的风险与防范》
中国古语有云:“千里之堤,溃于蚁穴。”供应链攻击正是利用这种系统性弱点发起攻势。近年来,随着国内数字化转型加速,供应链安全问题频发。从某盟删库事件到某头部物流企业数据泄露,从某国产工业软件遭恶意代码植入到某…...
【MySQL】进阶知识详解
目录 引言一、约束:数据完整性的守护者1.1 约束的作用与分类1.2 约束的语法详解非空约束唯一约束主键约束外键约束1.3 约束实战案例二、数据库设计:表关系的艺术2.1 三种核心表关系一对多(部门-员工)多对多(学生-课程)一对一(用户-详情)三、多表查询:数据关联的桥梁3.…...
SpringBoot中使用MCP和通义千问来处理和分析数据-连接本地数据库并生成实体类
文章目录 前言一、正文1.1 项目结构1.2 项目环境1.3 完整代码1.3.1 spring-mcp-demo的pom文件1.3.2 generate-code-server的pom文件1.3.3 ChatClientConfig1.3.4 FileTemplateConfig1.3.5 ServiceProviderConfig1.3.6 GenerateCodeController1.3.7 Columns1.3.8 Tables1.3.9 Fi…...
算法每日一题 | 入门-分支结构-Apples Prologue/苹果和虫子
Apples Prologue/苹果和虫子 题目描述 小 B 喜欢吃苹果。她现在有 m m m(1 ≤ m ≤100)个苹果,吃完一个苹果需要花费 t t t(0 ≤ t≤ 100)分钟,吃完一个后立刻开始吃下一个。 现在时间过去了 s s s&a…...
浙大与哈佛联合开源图像编辑模型IC-Edit,实现高效、精准、快速的指令编辑~
项目背景 研究动机与目标 ICEdit(In-Context Edit)由浙江大学团队开发,旨在通过自然语言指令实现高效、精准的图像编辑,降低对大规模训练数据和计算资源的需求。传统图像编辑方法(如基于微调的扩散模型或无训练技术&…...
查看jdk是否安装并且配置成功?(Android studio安装前的准备)
WinR输入cmd打开命令提示窗口 输入命令 java -version 回车显示如下:...
Off-Policy策略演员评论家算法SAC详解:python从零实现
引言 软演员评论家(SAC)是一种最先进的Off-Policy策略演员评论家算法,专为连续动作空间设计。它在 DDPG、TD3 的基础上进行了显著改进,并引入了最大熵强化学习的原则。其目标是学习一种策略,不仅最大化预期累积奖励&a…...
基于大模型的计划性剖宫产全流程预测与方案优化研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型在计划性剖宫产中的应用原理 2.1 大模型介绍 2.2 数据收集与处理 2.3 模型训练与优化 三、术前预测与准备 3.1 风险因素评估 3.2 大模型术前预测 3.3 术前准备方案 四、术中预测与应对 4.1 术中…...
在Lua中使用轻量级userdata在C/C++之间传递数据和调用函数
在Lua中使用轻量级userdata在C/C之间传递数据和调用函数 轻量级userdata是Lua中一种高效的数据传递机制,它允许你在C/C和Lua之间传递指针而不创建完整的userdata对象。下面是如何使用轻量级userdata的详细说明: 基本概念 轻量级userdata:只…...
总线通信篇:I2C、SPI、CAN 的底层结构与多机通信设计
本文为嵌入式通信协议系列第三章,深入剖析 MCU 世界中的三大总线协议 —— I2C、SPI 和 CAN。 这些总线协议广泛应用于传感器数据采集、Flash 存储、外设扩展、汽车电子、工业设备控制等领域,是嵌入式开发不可或缺的通信骨架。 📜 一、总线通信的基本概念 1.1 什么是总线?…...
心跳策略(Heartbeat) 和 Ping/Echo 策略
一、心跳策略(Heartbeat) 原理:客户端定期向服务端发送心跳包,服务端监控客户端存活状态,超时未收到心跳则判定客户端离线 服务端代码 using System; using System.Net; using System.Net.Sockets; using System.Coll…...
探索网络设备安全:Shodan 的原理与合法应用
在数字化时代,网络摄像头因其便捷性和高效性被广泛应用于家庭、商业和工业领域。然而,这些设备的安全性问题也日益受到关注。Shodan,这个被称为“设备搜索引擎”的工具,能够帮助我们发现和分析网络摄像头的分布和安全性。本文将深…...
Java JWT 配置类 (JwtProperties) 学习笔记
1. 核心作用: 此类 (JwtProperties) 作为一个集中的“配置信息持有者”,专门用来存储项目中与 JWT(JSON Web Token,一种用于身份验证的令牌)相关的配置参数。 2. 关键注解说明: Component: 含义ÿ…...
沃伦森电容器支路阻抗特性监控系统 电容器组智能健康管理专家
行业现状与挑战 在现代电力系统中,电容器组作为无功补偿的核心设备,对保障电网稳定运行和提升电能质量至关重要。然而,长期运行中面临的谐波干扰、过电压/过电流冲击等问题,极易导致电容值衰减、介质老化甚至爆炸等严重故障&#…...
macOS Arduino IDE离线安装ESP8266支持包
其实吧,本来用platformio也是可以的,不过有时候用Arduino IDE可能更快一些,因为以前一直是Arduino.app和Arduino IDE.app共存了一段时间,后来下决心删掉Arduino.app并升级到最新的Arduino IDE.app。删除了旧的支持板级支持包之后就…...
在Fiddler中添加自定义HTTP方法列并高亮显示
在Fiddler中添加自定义HTTP方法列并高亮显示 Fiddler 是一款强大的 Web 调试代理工具,允许开发者检查和操作 HTTP 流量。一个常见需求是自定义 Web Sessions 列表,添加显示 HTTP 方法(GET、POST 等)的列,并通过颜色区…...
HTTP学习
HTTP知识 01. 经典五层模型 应用层 为应用软件提供了很多服务,构建于协议之上。 传输层 数据的传输都是在这层定义的,数据过大分包,分片。 网络层 为数据在节点之间传输创建逻辑链路 数据链路层 通讯实体间建立数据链路连接 物理层 主要作用…...
正态分布和幂律分布
1. 背景与引入 正态分布 历史来源:18世纪由高斯(Gauss)在研究测量误差时提出,后被广泛应用于自然现象和社会科学的数据建模。重要性:被称为“钟形曲线”,是统计学中最核心的分布之一,支撑中心极…...
网络安全赛题解析
扫描之后发现目标靶机 上开启了 ftp ssh http mysql等服务 第一题 第一题需要获取文件 首先尝试 ftp 匿名用户 从这里可以发现 hint.txt 文件的大小为 127b 或 127bytes 提交127b 第二题 通过hint.txt 文件可以发现目标主机 上有用户 Jay 密码为五位字符串 其中三位不知道 利…...
Android单例模式知识总结
六种核心实现方式对比 1. 饿汉式单例(Eager Initialization) 原理:利用类加载时静态变量初始化的特性,天然线程安全。 代码: public class EagerSingleton {private static final EagerSingleton INSTANCE new Eag…...
何不乘东风?利用mcp实现小红书自动发布
1.准备环境 conda create -n mcpo python3.11 conda activate mcpo pip install mcpo pip install uvnpx puppeteer/browsers install chromedriver134.0.6998.166pip install xhs-mcp-server 2.进行登陆 env phoneYOUR_PHONE_NUMBER json_pathPATH_TO_STORE_YOUR_COOKIES u…...
DeepSeek多尺度数据:无监督与原则性诊断方案全解析
DeepSeek 多尺度数据诊断方案的重要性 在当今的 IT 领域,数据如同石油,是驱动各类智能应用发展的核心资源。随着技术的飞速发展,数据的规模和复杂性呈爆炸式增长,多尺度数据处理成为了众多领域面临的关键挑战。以计算机视觉为例,在目标检测任务中,小目标可能只有几个像素…...
【开源】Python打造高效剪贴板历史管理器:实现跨平台生产力工具
📋【开源】Python打造高效剪贴板历史管理器:实现跨平台生产力工具 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情源自…...
Day 14 训练
Day 14 训练 SHAP(SHapley Additive exPlanations)1.创建解释器2.将特征贡献可视化第一部分:绘制SHAP特征重要性条形图第二部分:绘制SHAP特征重要性蜂巢图 SHAP(SHapley Additive exPlanations) 旨在解释复…...
V型球阀材质性能深度解析:专攻颗粒、料浆与高腐蚀介质的工业利器-耀圣
V型球阀材质性能深度解析:专攻颗粒、料浆与高腐蚀介质的工业利器 在工业流体控制领域,V型球阀凭借其独特的V型切口设计与多元化材质适配能力,成为含颗粒、纤维、料浆及强腐蚀性介质的“终极克星”。本文从材质性能与驱动适配性两大维度切入&…...
缓存套餐-01.Spring Cache入门案例
一.导入案例代码 application.yml server:port: 8888 spring:datasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/spring_cache_demo?serverTimezoneAsia/Shanghai&useUnicodetrue&characterEncodingutf-8&zeroDat…...
2025年APP安全攻防指南:抵御DDoS与CC攻击的实战策略
2025年,随着AI技术与物联网设备的深度渗透,DDoS与CC攻击的复杂性和破坏性显著升级。攻击者通过伪造用户行为、劫持智能设备、利用协议漏洞等手段,对APP发起精准打击,导致服务瘫痪、用户流失甚至数据泄露。面对这一挑战,…...
力扣:多数元素
题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 示例 1: 输入:nums [3,2,3] 输出ÿ…...
2025年小程序DDoS与CC攻击防御全指南:构建智能安全生态
2025年,小程序已成为企业数字化转型的核心载体,但随之而来的DDoS与CC攻击也愈发复杂化、智能化。攻击者利用AI伪造用户行为、劫持物联网设备发起T级流量冲击,甚至通过漏洞窃取敏感数据。如何在高并发业务场景下保障小程序的稳定与安全&#x…...
【Python】PDF文件处理(PyPDF2、borb、fitz)
Python提供了多种方法和库用于处理PDF文件,这些工具可以帮助开发者实现诸如读取、写入、合并、拆分以及压缩等功能。以下是几个常用的Python PDF操作库及其基本用法(PyPDF2、borb、fitz)。 1. PyPDF2 PyPDF2 是一个功能强大的库࿰…...
Web 架构之前后端分离
文章目录 思维导图一、引言二、前后端分离的概念代码示例(简单的前后端分离交互)后端(使用 Python Flask 框架)前端(使用 JavaScript 和 jQuery) 三、前后端分离的优势3.1 提高开发效率3.2 代码可维护性增强…...
Pycharm安装后打开提示:此应用无法在你的电脑上运行,若要找到合适于你的电脑的版本,请咨询发布者
问题描述 今天下载安装好社区版的pycharm之后双击运行出现提示:此应用无法在你的电脑上运行,若要找到合适于你的电脑的版本,请咨询发布者。 首先我们需要查看Windows如何查看系统是ARM64还是X64架构 在 cmd 命令窗中输入 systeminfo 即可&a…...
正则表达式实战指南:原理、口诀与高频场景案例
正则表达式实战指南:原理、口诀与高频场景案例 正则表达式(Regular Expression)是程序员处理文本的瑞士军刀,被广泛应用于数据验证、日志分析、爬虫开发等领域。本文将从原理讲解、口诀速查到高频实战案例,带你系统掌…...
Spark缓存--persist方法
1. 功能本质 persist:这是一个通用的持久化方法,能够指定多种不同的存储级别。存储级别决定了数据的存储位置(如内存、磁盘)以及存储形式(如是否序列化)。 2. 存储级别指定 persist:可以通过传入…...
【LeetCode 热题 100】二叉树 系列
📁 104. 二叉树的最大深度 深度就是树的高度,即只要左右子树其中有一个不为空,就继续往下递归,知道节点为空,向上返回。 int maxDepth(TreeNode* root) {if(root nullptr)return 0;return max(maxDepth(root->lef…...
CTF之常见的文件头和文件尾
1、图片 JPEG 文件头:FF D8 FF 文件尾:FF D9TGA 未压缩的前4字节 00 00 02 00 RLE压缩的前5字节 00 00 10 00 00PNG 文件头:89 50 4E 47 0D 0A 1A 0A 文件尾:AE 42 60 82GIF 文件头:47 49 46 38 39(37) 61 文件尾&…...
软件设计师教程——第一章 计算机系统知识(上)
前言 在竞争激烈的就业市场中,证书是大学生求职的重要加分项。中级软件设计师证书专业性强、认可度高,是计算机相关专业学生考证的热门选择,既能检验专业知识,又有助于职业发展。本教程将聚焦核心重点,以点带面构建知…...
KRaft (Kafka 4.0) 集群配置指南(超简单,脱离 ZooKeeper 集群)还包含了简化测试指令的脚本!!!
docker-compose方式部署kafka集群 Kafka 4.0 引入了 KRaft 模式(Kafka Raft Metadata Mode),它使 Kafka 集群不再依赖 ZooKeeper 进行元数据管理。KRaft 模式简化了 Kafka 部署和管理,不需要额外配置 ZooKeeper 服务,…...
安全月演讲比赛活动讲话稿
同志们:在公司上下万众一心创建“无违章企业”的大形势下,由公司工会、团委举办的“安全与我”演讲比赛,经过紧张激烈的预赛,今天进行正式决赛。 从预赛的38名选手中脱颖而出的10名选手,今天将再次登台献技,…...
实时操作系统:航空电子系统的安全基石还是创新枷锁?
引言:航空电子系统的进化论 在航空电子技术的漫长发展历程中,飞行器控制系统实现从机械仪表到数字计算机的跨越,这一进步具有深远意义。现代战机以超过 2 马赫的速度突破音障,无人机群在复杂电磁环境下完成自主编队,这…...
windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper
1.下载 https://archive.apache.org/dist/kafka/3.9.0/kafka_2.12-3.9.0.tgz2.配置使用 KRaft 模式 2.1 修改 Kafka 的配置文件 cd D:\data\bigdata\kafka_2.12-3.9.0\config\kraft 修改 server.properties # 设置 Kafka 数据日志存储目录 log.dirsD:\\data\\bigdata\\kaf…...
SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(一)
1 目的 物料(例如晶圆)加工在设备中的自动化管理与控制是实现工厂自动化的关键要素。本标准针对半导体制造环境中与设备内部物料处理相关的通信需求进行了规范。本标准规定了在加工单元接收到的指定材料所应适用的加工方法(例如Etch腔室需要Run哪支Recipe)。它阐述了物料加工的…...
Web 架构之高可用基础
文章目录 引言一、无状态服务设计(Session 托管至 Redis 集群)1. 概念与原理2. 代码示例(Python Flask 应用)3. 常见问题及解决办法 二、数据库读写分离(MySQL 主从 ProxySQL 流量分发)1. 概念与原理2. 配…...