- 专业设计: 现代化的桌面应用界面,操作直观
- 实时反馈: 扫描进度实时显示,结果即时更新
- 数据可视化: 表格展示扫描结果,支持排序和筛选
- 多格式导出: 支持 JSON、CSV 格式导出
- 详情查看: 双击查看端口详细信息
- 异步并发: 基于 Python asyncio 实现高速并发扫描
- 智能限流: 可配置的并发连接数,避免网络拥塞
- 快速响应: 支持自定义超时时间,优化扫描速度
- 随机化扫描: 随机化主机和端口扫描顺序,避免被检测
- 动态延迟: 可配置的随机延迟范围,模拟正常流量
- 轻量连接: 使用 TCP 连接测试,快速断开,减少日志记录
- Banner 抓取: 自动获取服务 banner 信息
- 服务指纹: 内置常见服务特征库,智能识别服务类型
- 版本检测: 尝试识别服务版本信息
- 图形界面 (GUI): 现代化的桌面应用,操作简单直观
- 命令行 (CLI): 强大的命令行工具,支持脚本化
- Python 模块: 可作为 Python 库导入使用
Windows 用户:
- 访问 Releases 页面
- 下载最新版本的
LAN-Port-Scanner.exe - 双击运行,无需安装 Python
Linux 用户:
- 访问 Releases 页面
- 下载最新版本的
lan-port-scanner - 添加执行权限:
chmod +x lan-port-scanner - 运行:
./lan-port-scanner
优势:
- ✅ 无需安装 Python
- ✅ 无需安装依赖
- ✅ 开箱即用
- ✅ 单文件,便于分发
- Python 3.7 或更高版本
- pip 包管理器
从源码运行:
Windows 用户:
# 方式 1: 双击运行(推荐)
start.bat
# 方式 2: 在 PowerShell 中运行
.\start.bat
# 方式 3: 在 CMD 中运行
start.batLinux/macOS 用户:
# 添加执行权限
chmod +x 运行.sh
# 运行脚本
./运行.sh自动化功能:
- ✅ 自动检测 Python 环境
- ✅ 自动创建虚拟环境
- ✅ 自动安装依赖包
- ✅ 自动启动图形界面
- 克隆仓库
git clone https://github.com/mason369/lan-port-scanner.git
cd lan-port-scanner- 创建虚拟环境(可选但推荐)
# Windows
python -m venv venv
venv\Scripts\activate
# Linux/macOS
python3 -m venv venv
source venv/bin/activate- 安装依赖
pip install -r requirements.txt- 启动应用
python app.py启动现代化 GUI 应用:
python app.py界面特性:
- 🎨 现代化设计,操作直观
- 📡 自动检测本地网络
- 🔌 多种端口扫描模式(常用/Top 100/自定义)
- ⚙️ 灵活的扫描参数配置
- 🕵️ 一键启用隐蔽模式
- 📊 实时统计信息展示
- 💾 支持 JSON/CSV 格式导出
- 📋 一键复制结果到剪贴板
- 🔍 双击查看端口详细信息
使用步骤:
- 启动应用后自动检测本地网络
- 选择扫描模式和配置参数
- 点击"开始扫描"按钮
- 实时查看扫描结果
- 导出或复制结果
扫描本地网络的常用端口:
python cli.py --auto --common扫描指定网络段:
python cli.py -n 192.168.1 -r 1-254 --common扫描自定义端口:
python cli.py -n 192.168.1 -r 1-100 -p 80,443,8080,3306扫描端口范围:
python cli.py -n 192.168.1 -r 1-50 -p 1-1000高速扫描(增加并发数):
python cli.py --auto --top100 -c 200 -t 0.5导出结果:
python cli.py --auto --common -o results.json网络配置:
-n, --network NETWORK 网络前缀 (如: 192.168.1)
-r, --range RANGE 主机范围 (如: 1-254), 默认: 1-254
--auto 自动检测本地网络
端口配置:
-p, --ports PORTS 自定义端口 (如: 80,443 或 1-1000)
--common 扫描常用端口 (18个)
--top100 扫描 Top 100 端口
--all 扫描所有端口 (1-65535)
扫描参数:
-c, --concurrent N 最大并发连接数, 默认: 100
-t, --timeout SECONDS 连接超时时间, 默认: 1.0
--no-stealth 禁用隐蔽模式
--delay RANGE 随机延迟范围, 默认: 0.01-0.1
输出选项:
-o, --output FILE 输出文件 (JSON 格式)
-v, --verbose 详细输出
--no-banner 不显示 banner 信息
import asyncio
from scanner import StealthScanner, COMMON_PORTS
async def scan_network():
# 创建扫描器
scanner = StealthScanner(
max_concurrent=100,
timeout=1.0,
delay_range=(0.01, 0.1),
randomize=True
)
# 扫描网络
results = await scanner.scan_network(
network_prefix="192.168.1",
ports=COMMON_PORTS,
host_range=(1, 254)
)
# 处理结果
for ip, ports in results.items():
print(f"主机: {ip}")
for result in ports:
print(f" 端口 {result.port}: {result.service}")
# 运行扫描
asyncio.run(scan_network())本工具实现了多种反检测技术,降低被入侵检测系统(IDS)和防火墙发现的概率:
-
随机化扫描顺序
- 随机化主机扫描顺序
- 随机化端口扫描顺序
- 避免顺序扫描的特征模式
-
动态延迟
- 在每次连接之间添加随机延迟
- 模拟正常用户行为
- 可配置延迟范围
-
轻量级连接
- 使用 TCP 连接测试而非 SYN 扫描
- 快速建立和断开连接
- 减少日志记录
-
并发控制
- 使用信号量限制并发连接数
- 避免网络拥塞和异常流量
- 可根据网络环境调整
服务识别通过以下方式实现:
- 端口映射: 基于 IANA 端口分配表的常见端口服务映射
- Banner 抓取: 连接到开放端口并读取服务 banner
- 特征匹配: 使用服务特征指纹库进行模式匹配
- 协议探测: 针对特定协议发送探测包
- 异步 I/O: 使用 asyncio 实现非阻塞 I/O 操作
- 并发扫描: 同时扫描多个主机和端口
- 连接池: 复用连接资源,减少开销
- 超时控制: 快速跳过无响应的端口
- 网络管理和维护
- 安全审计和渗透测试(授权)
- 网络资产发现
- 服务可用性监控
- 学习网络安全知识
重要: 本工具仅供合法的网络管理、安全研究和教育目的使用。
- ✅ 仅扫描您拥有或获得授权的网络
- ✅ 在进行安全测试前获得书面授权
- ❌ 禁止未经授权扫描他人网络
- ❌ 禁止用于任何非法目的
未经授权的端口扫描可能违反计算机欺诈和滥用法(CFAA)或其他相关法律。使用本工具即表示您同意遵守所有适用的法律法规,并对您的行为负全部责任。
本项目参考了以下技术文献和开源项目:
- Asyncio Port Scanner in Python
- Nmap Stealth Scanning Techniques
- Building a Custom Security Tool: Python Port Scanner
- FingerprintX: Fast Port Fingerprint Scanner
- Identifying Services with TCP Stateless Scanning
lan-port-scanner/
├── app.py # 现代化图形界面(推荐)
├── scanner.py # 核心扫描引擎
├── gui.py # 基础图形界面
├── cli.py # 命令行界面
├── examples.py # 使用示例
├── 运行.bat # Windows 一键启动脚本
├── 运行.sh # Linux/macOS 一键启动脚本
├── 启动.bat # Windows 简易启动脚本
├── 启动.sh # Linux/macOS 简易启动脚本
├── requirements.txt # 依赖包列表
├── 快速入门.md # 快速入门指南
├── README.md # 项目文档
├── LICENSE # Apache 2.0 许可证
└── .gitignore # Git 忽略文件
A: 可以尝试以下方法:
- 增加并发数 (
-c 200) - 减少超时时间 (
-t 0.5) - 禁用隐蔽模式 (
--no-stealth) - 减少扫描的端口数量
A: 可能的原因:
- 防火墙阻止了连接
- 主机不在线
- 超时时间设置过短
- 网络延迟较高
A: 建议:
- 启用隐蔽模式
- 降低并发数
- 增加延迟范围
- 分批次扫描
欢迎贡献代码、报告问题或提出建议!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'feat: add some amazing feature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 Apache License 2.0 许可证。详见 LICENSE 文件。
Copyright 2026 mason369
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
⭐ 如果这个项目对您有帮助,请给个 Star!⭐
Made with ❤️ by mason369