跳到主内容

内网端口存活速查 - 免费填一段网段和几个端口,几十秒看清哪些机器(其它工具)

免费下载内网端口存活速查 v1.0.0
平台:Windows 10/11 (64位)大小:11.7 MB版本:v1.0.0更新:2026-10-06
提取码:cy2p(如提示需要,请输入)
下载地址 ▾
解压后双击即可运行,无需安装任何运行环境;只在执行任务时访问你自己填写的地址,其余处理都在本机完成。
内网资产清点或排障时要确认哪些 IP 的常用端口开着,一个个 telnet 太慢

内网端口存活速查 运行界面

软件名称内网端口存活速查
版本v1.0.0
授权免费(可自由使用与转发)
运行方式本地运行,仅执行任务时访问你自己填写的地址
所属分类其它工具

这个工具解决什么问题

设备台账要更新、新装的一台服务器要确认服务起没起、某个网段里到底有几台机器还活着——这类活儿的共同点是:不复杂,但量在那里。命令行下确认一个端口要么 telnet,要么 Test-NetConnection,一次只能一个端口,几十台机器乘十几个端口就是几百次重复劳动。更烦的是 telnet 的反馈极差:端口没开的时候它不是立刻告诉你,而是转圈转到你怀疑人生;有些机器干脆没有任何回应,你也不知道是端口关了、机器关了,还是防火墙把它拦下了。最后往往是「大概看了一下,应该没问题」——而问题恰恰藏在没看的那几条里。想把这件事做完,靠的不是技术,是耐心,而耐心在第八十次重复时就用完了。

  • 原来的做法:对每台机器一个个端口 telnet 或敲 Test-NetConnection;连接超时的要干等;把结果凭记忆记在便签上;过两天回头看已经忘了哪个是哪个
  • 用这个工具:把起始/结束 IP 和端口填进去点一次「开始扫描」,程序并发探测每个 IP 的每个端口,几十秒后一张表列清每一行的真实状态:绿色=开启、灰色=关闭(对方明确回应「没开」)、黄色=超时或被防火墙拦下、红色=地址不可达。可以只看存活的,也可以一键导出 CSV 存档
  • 省下来的:把几百次重复敲命令压缩成一次点击;而且比人做得更细——「明确关闭」和「超时被拦」被分成两档,前者能断定端口没开,后者只能说没问到,人工检查时这两种情况基本是混在一起的

技术实现

整个工具只用 Python 标准库(socket + ipaddress + threading + concurrent.futures + csv + tkinter),运行期不需要安装任何依赖,打包后是单个 exe,双击即用。技术上有五个刻意的取舍:第一,只做最普通的 TCP 连接尝试(三次握手),不做 SYN 半开扫描、不发畸形包、不做服务指纹爆破——它是个资产清点工具,不是扫描框架,能力刻意收窄;第二,把「连不上」拆成「明确关闭」与「超时被拦」两档,因为这两者的结论完全不同,混在一起会直接误导判断;第三,界面与核心逻辑彻底分离,核心层一行 GUI 代码都没有,因此可以脱离窗口跑全自动回归(144 项断言);第四,并发用线程池而不是 asyncio——时间全花在等内核返回连接结果上,线程池实现最简单、依赖最少;第五,连上之后除了可选地被动听一段服务问候语,**不发任何数据**,也不做重试。

  • 把「连不上」拆成两档:明确关闭 vs 超时被拦:这是本工具最核心的一处设计。探到一个端口没反应,有两种完全不同的情况:对方回了 RST(ConnectionRefusedError),说明主机在线、端口确实没开,这是**确定**的结论;对方一直没回应(socket.timeout),只能说明「没问到」,端口可能被防火墙静默丢包了。很多扫描器把两者都归成「不可用」,会让人误判成「这台机器没这个服务」。实现上靠 Python 异常类型区分:ConnectionRefusedError → closed,socket.timeout/TimeoutError → filtered,socket.gaierror → error,ConnectionResetError → closed,PermissionError → error。另外还按 errno 翻译了 WSAEHOSTUNREACH(10065)/WSAENETUNREACH(10051) 这类 Windows 专有错误码。
  • 异常判定顺序必须从具体到宽泛(最容易改错的一处):ConnectionRefusedError、socket.gaierror、TimeoutError 全都是 OSError 的子类。如果把 isinstance(exc, OSError) 写在前面,那么「端口没开」会被归到「无法连接」,结论就完全反了。所以 _describe_os_error() 里的判定顺序是硬约束:先判 ConnectionRefusedError、再判 TimeoutError、再判 gaierror、再判 ConnectionResetError / PermissionError,最后才落到 errno 与兜底的 OSError。这条顺序在开发文档里单独标了「别改」。
  • probe_port() 永不抛异常:否则汇总统计会凭空少行:它是几万个并发任务里最基础的单元。任何一个漏网的异常都会让 future 变成异常对象,最后在汇总里凭空少一行——用户看到的表就是「缺了几行」而且不知道为什么。所以所有异常都在这个函数内部就地翻译成结果行。连 banner 抓取的异常也被单独兜住:服务标识只是附加信息,绝不能影响「这个端口开没开」这个主结论。配套地,scan() 用 [None] * total 预分配、按下标写入,保证结果顺序与任务顺序严格一致。
  • IP 与端口的解析:容错要宽,报错要硬:一个输入框认四种写法:单 IP、起-止 区间、CIDR 网段、主机名(内网 DNS 解析)。CIDR 上 /31 与 /32 按点名全部地址处理,其它前缀长度一律剔掉网络地址与广播地址(192.168.1.0 和 .255 本来就不是主机),前缀写错(192.168.1.7/24)用 strict=False 容错。端口串分隔符先归一化,英文/中文逗号、分号、顿号、空格、换行全都当分隔符,支持 1-1024 区间与 80,8000-8100 混写。但**非法输入一律抛中文错误,绝不静默跳过**——静默跳过会让用户以为「扫过了」,其实一个都没扫,这是最坏的一种失败模式。区间起止填反了也直接报错,不静默对调。
  • 规模保护:宁可拦下,也不让你干等四十小时:MAX_HOSTS = 16384、MAX_TASKS = 131072,超过就在点「开始」时弹中文错误。一个 /8 网段乘 14 个端口是 1.1 亿次连接,按 1 秒超时算要跑几十小时——拦下它比让它慢慢跑负责得多。另外探测数 ≥1000 时会先弹一个确认框,把「最坏情况大约需要多少秒」算给你看,让等待有预期,而不是怀疑程序卡死。展开时用 ipaddress 做整数运算,跨第三段进位(192.168.1.254 → 192.168.2.1)这类边界有专门断言覆盖。
  • 并发与停止语义:停止要立刻生效,结果不许缺行:ThreadPoolExecutor 默认 128 线程——这里的时间全花在等内核返回连接结果(IO 等待),线程池最直接,不需要引 asyncio 那套事件循环;再高的线程数在多数 Windows 机器上收益递减,还容易被本地防火墙的并发连接池拖慢。停止语义是三段式的:stop_event 置位后,尚未开始的任务直接跳过、不写结果;已经在 connect 里的任务让它自然返回(结果是真实数据,保留);所以结果长度**可能小于**总任务数,界面汇总会单列「已停止,剩余 N 个未检测」,而不是假装跑完了。
  • tkinter 的三条铁律:工作线程一个控件都不许碰:tkinter 不是线程安全的,工作线程直接操作控件轻则花屏、重则整个进程崩掉。所以扫描线程只往 queue.Queue 里塞消息,界面线程用 after(80, ...) 定时搬运。进度另做了节流:几万个任务时每完成一个就发一条消息会把界面刷爆,改成「每 1% 或每 50 个或每 0.3 秒」发一次。所有可能填错的地方(IP 写法、端口写法、超时数值)在点「开始」时**一次性校验完再报**,而不是改一个报一个;错误一律用 messagebox 弹中文人话——GUI 程序没有控制台,用户永远看不到 Traceback。
  • 导出 CSV 的两个细节:BOM 与 RFC 4180 转义:开头写 UTF-8 BOM,Excel 双击打开中文才不乱码;换行用 \r\n(CSV 规范,Windows 记事本与 Excel 兼容性最好),并用 newline="" 打开文件交给 csv 模块管换行(否则 Windows 上会出现空行)。单元格转义按 RFC 4180:含逗号/引号/换行时整体加引号、内部引号翻倍——这步单独抽成函数并被断言覆盖,因为 banner 里带个逗号就会把整张表冲散,属于「写错了平时看不出来、真出问题时数据已经错了」的典型地方。

技术栈:Python 3.8+、零第三方依赖(纯标准库)、tkinter 图形界面、socket.create_connection 做 TCP 连接探测、ThreadPoolExecutor 并发调度 + 可中断停止、ipaddress 处理区间与 CIDR 网段、PyInstaller 单文件打包(--onefile --noconsole)

已知局限:只支持 IPv4(IPv6 网段会被明确拒绝,而不是静默按别的解析)。只扫 TCP,不扫 UDP——UDP 无连接,「开没开」不做握手就无法可靠得出。结果表里的「常见服务」列是**按端口号做的静态映射**,不是协议探测:连上之后程序不改协议、不发探测包,所以自定义端口会显示「未知服务」,这是正常的,不代表端口有问题。不做重试,超时的端口只等一个 timeout。因为没有 SYN 半开扫描,在有状态防火墙后面被丢包的端口只能报「超时/被拦」,无法 100% 断定是否开放。总耗时受超时值与网段规模线性影响,视机器与网络而定。

操作教程

  1. 双击打开程序
    解压后双击「内网端口存活速查.exe」,不需要安装 Python 或任何依赖。
    预期结果:出现主窗口,自上而下是 ①扫描目标、②扫描选项与操作、进度条、④扫描结果,底部是导出按钮与汇总
  2. 填要查哪一段 IP
    在 ① 的「起始 IP」「结束 IP」两个框里填地址。只查一台机器时两个框填同一个 IP;要查一整段就填首尾(如 192.168.1.1 到 192.168.1.254)。
    预期结果:两个框都填好,底部提示行显示就绪
  3. 填端口(或从下拉里选一组)
    在「端口」框里填,例如 22,80,443 或 1-1024 或 80,8000-8100;懒得分就点右边的「常用端口」下拉,选「Windows 资产清点」「Web 服务」「数据库」等预设,会自动帮你填好。
    预期结果:端口框里出现端口清单,点下拉选择时内容即时被覆盖
  4. 按需调选项(默认值可直接用)
    「单个端口超时」默认 1.0 秒——内网通常毫秒级响应就够;跨网段可放宽到 2~3 秒。「并发数」默认 128。「读服务标识(banner)」勾上后,连上的端口会顺便被动听一小段服务问候语(不会主动对目标发任何数据)。
    预期结果:改动即时生效;数值框可以直接用键盘改,也可以点上下箭头
  5. 点「开始扫描」
    程序在后台并发探测,进度条前进、状态栏显示「已检测 N / M」。中途想停下就点「停止」,已经发出的连接会等它自然返回,剩下的直接跳过。
    预期结果:进度条按 N/M 推进,窗口全程不卡死(按钮仍可点)
  6. 看结果,先看绿色的
    结果表格六列:IP 地址 / 端口 / 状态 / 耗时(毫秒) / 常见服务 / 说明。绿色=开启、灰色=关闭、黄色=超时或被拦、红色=异常。鼠标悬在「说明」列能看到具体原因(如「对方明确拒绝连接(主机在线,端口没开)」)。勾选「只显示存活的」,表格立刻只剩有结果的那些行。
    预期结果:红色/黄色行基本可以忽略(多半是防火墙),绿色行就是你要找的开放端口
  7. 复制或导出
    选中若干行点「复制选中」,或右键选「复制选中的 IP」「复制选中的 IP:端口」;点「导出 CSV」把当前显示的这些行存成表格(带 UTF-8 BOM,Excel 双击打开不乱码)。双击任意一行还会用浏览器打开 IP:端口。
    预期结果:剪贴板拿到你要的清单格式;CSV 生成后可正常打开且中文不乱码

常见问题

Q:扫完了结果里一半是黄色的「超时/被拦」,这算扫失败了吗?A:不算,这是正常结果,而且正是本工具刻意区分出来的信息。黄色表示这些端口没有给出任何回应——通常是被防火墙静默丢包了(很多机器默认策略就是丢弃而不是拒绝)。它的结论是「没问到」,不是「没开」:端口可能开着,只是探测包被拦住了。真正能下结论的两种是绿色(开启)和灰色(对方明确回了「没开」)。
Q:为什么同一台机器,有的端口显示「关闭」,有的显示「超时/被拦」?A:因为对方的回应方式不同。「关闭」意味着对方回了 RST——主机在线、端口确实没开,这是确定的。如果对方装了会静默丢包的防火墙(或安全软件),那连**没开的端口**也会表现为「超时/被拦」,这时你看到的就是一片黄色。两种情况都是真实探测结果,只是一个能下结论、一个不能。
Q:「常见服务」列写的 MySQL / HTTPS 准吗?A:这一列是**按端口号做的静态映射**,不是协议探测:程序连上以后不改协议、不发任何探测包,所以它只是告诉你「3306 这个号一般是 MySQL」。好处是绝不对目标造成任何额外影响,代价是自定义端口会显示「未知服务」——这很正常,不代表端口有问题。想进一步确认那是什么服务,可以勾上「读服务标识(banner)」,或者双击那一行用浏览器打开看看。
Q:扫 254 个地址、十几个端口,要等多久?A:默认并发 128、超时 1 秒的情况下,全部端口都有响应的网段通常几十秒内出结果。最坏情况是大量端口被防火墙丢包——那每个都要等满超时,总耗时接近「探测数 × 超时 ÷ 并发数」的上限,可能十几分钟。程序在探测数 ≥1000 时会先弹一个框,把最坏耗时的估算告诉你。想更快可以调低超时(内网 0.3~0.5 秒通常也够)或调高并发数。
Q:会不会把对方服务器弄挂,或者被安全设备当成攻击?A:本工具只做最普通的 TCP 连接尝试,不做 SYN 半开扫描、不发畸形包、不爆破、不重试;并发数由你自己控制,默认 128。对正常的内网设备来说,这个流量密度和几十个人同时访问网页没有本质区别。不过请注意:**未经授权扫描他人网络可能违法**,请只扫描你拥有或已获授权的网段。有些 IDS/IPS 会把端口扫描记录为可疑行为,扫描前最好确认一下自己有权这么做。
Q:为什么单个端口探测要等 1 秒?不能更快吗?A:1 秒是针对跨网段的保守默认值。纯内网里 0.3~0.5 秒通常足够——内网 RTT 一般小于 1 毫秒,等 1 秒其实是给「被防火墙丢包」这种情况留的余量。但要注意:超时设得越小,被防火墙丢包的端口越容易被误判成关闭(实际上你只是没等够),所以不建议低于 0.3 秒,跨网段扫描反而应该调大。
Q:导出的 CSV 在 Excel 里会乱码吗?数据会上传到你们服务器吗?A:不会乱码:CSV 开头写了 UTF-8 BOM,Excel 双击打开中文正常(单元格里的逗号、引号、换行也按 RFC 4180 规范转义过,不会把列冲散)。数据也不会外传:程序只在点击「开始扫描」时向你**自己填写的那些 IP** 发起 TCP 连接,除此之外不访问任何服务器、不上传任何数据,结果只留在导出的 CSV 里。

技术实现与后续维护

本工具由我们自行开发并持续维护,每次迭代都在本地跑过完整自测(144 项断言,含本机 127.0.0.1 与真实网卡地址的端到端探测)。核心逻辑与界面彻底分离:网段解析、端口解析、单端口探测、状态翻译、并发调度、CSV 导出都是可独立调用的纯函数,因此后续无论换界面、加导出格式还是加新的判定规则,改动都不会牵一发动全身。「探测结果的四种状态」与「异常判定顺序」是这个工具的两处关键约定,在开发文档里被单独标出并配有断言,避免后续维护时被无意改坏。合规相关的措辞(界面提示条、免责声明)是这个工具的边界,不是装饰,请不要删。

技术构成:

  • src/port_core.py —— 核心逻辑(不含任何界面代码):IP/端口/网段解析、规模保护、单端口探测与异常翻译、并发调度与停止语义、汇总统计、CSV 生成
  • src/port_scanner_gui.py —— 程序入口:tkinter 窗口布局、事件绑定、后台线程与消息队列调度、筛选、复制与导出、可选的启动预设解析
  • src/selftest.py —— 自测脚本:144 项断言,覆盖解析、状态判定(注入假连接)、本地真实端到端、真实网卡地址、banner、并发调度、CSV、界面纯逻辑、工程纪律

运行环境:

Windows 10/11 64 位。运行版是单个 exe,不需要安装 Python、不需要装任何依赖,解压双击即用。程序不需要连接互联网:它只向你填写的那些 IP 发起 TCP 连接尝试,不会访问任何第三方服务器。界面基于 Python 标准库自带的 tkinter 构建,运行时零第三方包。

可扩展方向:

  • 增量对比:把上次扫描结果存成基线,下次只报「新开的端口」和「新关的端口」,便于定期巡检
  • 定时巡检:配合 Windows 任务计划程序每天自动跑一轮,发现变化发邮件或群机器人提醒
  • 结果落地:直接把结果写进你们内部的 CMDB / 资产管理系统 / 数据库,省掉导出 CSV 再导入
  • UDP 端口:对 Syslog / SNMP 这类会用「发一个包等一个回包」的协议做可选探测
  • 巡检报告:生成带统计图与趋势的 HTML / Markdown 报告,可直接发给客户或归档
  • 网段清单管理:按机房/部门把常用网段存成清单,下拉直接选,不用每次手填

本工具免费提供使用,但不对外分发源码。如果你需要在本工具基础上做功能调整、对接内部系统或长期维护,可以联系我们做二次开发,源码与工程文档可在定制合作中一并交付。

需要其它功能?可以定制

这个工具只做一件事:内网资产清点或排障时要确认哪些 IP 的常用端口开着,一个个 telnet 太慢。如果你的场景还需要别的处理,可以联系我们做二次开发,按你的实际数据格式和流程定制。

常见的定制需求:

  • 对接你们内部的 CMDB 或资产管理库:扫描完直接更新端口台账,而不是导出 CSV 手动导入
  • 增量巡检:每天定时跑一次,只把「本次新出现的开放端口」推送到企业微信/钉钉群
  • 按部门/机房的网段清单管理 + 一键跑全套,产出一份可归档的巡检报告
  • 把结果写进监控系统(如 Zabbix / Prometheus 的自定义采集项),让端口存活变成常规指标
  • 给扫描加白名单/黑名单与例外规则,并加上审批留痕,符合内部安全流程
  • 联系方式:邮箱/微信见站内「联系我们」页面,或在本文下方留言
  • 定制说明:请附上你的数据样例(脱敏即可)和期望结果,方便快速评估工作量
  • 交付形式:定制项目可交付可执行程序,按需一并交付源码与工程文档,支持长期维护

使用说明与免责声明

  • 本程序只在执行任务时访问你自己填写的地址,不向任何第三方服务器上传数据,结果只保存在本机。
  • 涉及文件改写的功能,请在使用前备份原始文件。
  • 软件完全免费,可自由使用与转发,请勿用于倒卖。
  • 因误操作造成的数据问题请自行承担。

本工具是内网资产清点与排障用的端口存活速查工具,**只做普通的 TCP 连接尝试**,不提供任何绕过授权、隐藏来源或规避检测的能力。请只扫描你本人拥有、或已获得书面授权的网段与设备。未经授权扫描他人网络、探测他人主机的开放端口,可能违反《中华人民共和国网络安全法》等法律法规,使用者应自行承担全部法律责任。部分安全设备会把端口扫描记录为可疑行为,扫描前请确认自己有权这么做。

免费下载内网端口存活速查 v1.0.0
平台:Windows 10/11 (64位)大小:11.7 MB版本:v1.0.0更新:2026-10-06
提取码:cy2p(如提示需要,请输入)
下载地址 ▾
解压后双击即可运行,无需安装任何运行环境;只在执行任务时访问你自己填写的地址,其余处理都在本机完成。
分享到:

本文链接:https://www.biyeyuanma.cn/post/287.html

服务热线

加我微信

加我微信