# NetworkScanner **Repository Path**: lsandy-lam/network-scanner ## Basic Information - **Project Name**: NetworkScanner - **Description**: 一个可以实现6种网络协议扫描类型的扫描器,由蔡丹真、江俊苇、莫呓荷开发。 蔡丹真 - 制定系统架构(策略模式)、设计QT-UI界面、日志管理 - ARP探测、ICMP探测 - TCPSYN探测测试 江俊苇 - TCP Connect扫描检测 - UDP扫描检测 莫呓荷 - TCP SYN扫描检测 - TCP FIN扫描 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-06 - **Last Updated**: 2025-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #NetworkScanner ![输入图片说明](NetworkScanner2.0-%E9%9B%86%E6%88%90/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-07-06%20233117.png) ![输入图片说明](NetworkScanner2.0-%E9%9B%86%E6%88%90/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-07-06%20233244.png) 项目概述 一个综合网络扫描器,支持ARP探测、ICMP探测、TCP Connect扫描、TCP SYN扫描、TCP FIN扫描以及UDP端口扫描。 功能特点 - 多种扫描方式支持 - 灵活的目标设定 - 实时扫描结果展示 - 多线程扫描架构 使用说明 详细使用指南请参考[用户手册](使用指南.md) 介绍 一个可以实现6种网络协议扫描类型的扫描器 软件架构 软件架构说明 采用模块化、面向对象设计,核心思想是"扫描器基类 + 多种具体扫描器 + 统一调度 + 结果模型 + 友好UI"。 主要模块说明 主模块名 主要职责 mainwindow UI主窗口,负责用户交互、参数输入、结果展示 ScannerManager 统一调度各类扫描任务,管理扫描进度、结果收集 TargetGenerator 生成目标IP/端口队列,支持范围与分发 ScanResultModel 扫描结果的数据模型,便于UI绑定与展示 AbstractScanner 扫描器基类,定义统一接口 ARPScanner/ICMPScanner/... 具体扫描器实现,继承自AbstractScanner,封装协议细节 Utils 工具函数,IP/端口处理、校验和、日志等 NetworkInterface 获取本机网卡信息,供用户选择 2.3 设计亮点 高内聚低耦合:各扫描器独立实现,便于维护和扩展 异步/多线程:扫描任务异步执行,UI不卡死 数据与UI分离:ScanResultModel作为中间层,便于数据管理和UI展示解耦 可扩展性:后续如需增加新扫描方式,只需继承AbstractScanner并注册即可 # 网络扫描器使用指南 ## 🎯 **系统概述** 这个网络扫描器集成了智能网络环境检测和测试用例生成功能,帮助您安全、有效地测试网络扫描功能。 ## 🚀 **快速开始** ### **第一步:启动程序** 1. 编译并运行 `NetworkScanner.exe` 2. 程序启动后,您会看到主界面和新增的"网络环境检测"区域 ### **第二步:检测网络环境** 1. 点击 **"检测网络环境"** 按钮 2. 系统会自动检测您的网络配置 3. 查看检测结果,了解您的网络环境 ### **第三步:查看详细信息** 1. 点击 **"显示网络信息"** 按钮 2. 查看本机所有网络接口的详细信息 3. 了解IP地址、子网掩码、MAC地址等 ### **第四步:生成测试用例** 1. 点击 **"生成测试用例"** 按钮 2. 系统会根据您的网络环境生成适合的测试用例 3. 查看生成的测试用例详情 ### **第五步:应用测试用例** 1. 点击 **"应用测试用例"** 按钮 2. 从列表中选择一个测试用例 3. 系统会自动填充扫描参数 4. 点击 **"开始扫描"** 执行测试 ## 📋 **测试用例类型** ### **1. 本地测试用例** - **目的**: 测试本机网络功能 - **目标**: 127.0.0.1 (本地回环) - **安全等级**: 非常安全 - **适用场景**: 验证程序基本功能 ### **2. ICMP测试用例** - **目的**: 测试ICMP ping功能 - **目标**: 本机所在网段的其他设备 - **安全等级**: 安全 - **适用场景**: 发现网络中的活跃主机 ### **3. ARP测试用例** - **目的**: 测试ARP探测功能 - **目标**: 本机所在局域网 - **安全等级**: 安全 - **适用场景**: 发现局域网中的设备 ### **4. 端口扫描测试用例** - **目的**: 测试各种端口扫描功能 - **目标**: 本机或安全的测试设备 - **安全等级**: 安全 - **适用场景**: 测试端口扫描功能 ### **5. 输入验证测试用例** - **目的**: 测试输入验证功能 - **目标**: 各种边界值和错误输入 - **安全等级**: 安全 - **适用场景**: 验证程序的健壮性 ## 🔧 **手动配置扫描** 如果您不想使用自动生成的测试用例,也可以手动配置: ### **扫描类型选择** - **ICMP**: 使用ICMP echo请求探测主机 - **ARP**: 使用ARP请求探测局域网主机 - **TCP Connect**: TCP连接扫描 - **TCP SYN**: TCP SYN扫描(需要管理员权限) - **TCP FIN**: TCP FIN扫描 - **UDP**: UDP端口扫描 ### **目标输入格式** - **单个IP**: `192.168.1.100` - **IP范围**: `192.168.1.1-192.168.1.254` - **网段**: `192.168.1.0/24` - **多个IP**: `192.168.1.1,192.168.1.2,192.168.1.3` ### **端口范围格式** - **单个端口**: `80` - **端口范围**: `80-100` - **多个端口**: `80,443,8080` - **常用端口**: `21-25,80,110,143,443,993,995` ## ⚠️ **安全注意事项** ### **测试环境要求** 1. **仅在自己的网络环境中测试** 2. **不要扫描公网IP地址** 3. **不要扫描他人的设备** 4. **遵守当地法律法规** ### **推荐测试顺序** 1. 先测试本地回环地址 (127.0.0.1) 2. 再测试本机IP地址 3. 最后测试局域网中的其他设备 ### **权限要求** - **普通扫描**: 不需要特殊权限 - **SYN扫描**: 需要管理员权限 - **某些高级功能**: 可能需要管理员权限 ## 🐛 **故障排除** ### **常见问题** #### **1. 检测不到网络环境** - 检查网络连接是否正常 - 确认防火墙设置 - 尝试以管理员身份运行 #### **2. 扫描没有结果** - 检查目标IP是否正确 - 确认目标设备是否在线 - 检查防火墙设置 #### **3. 程序崩溃** - 检查输入格式是否正确 - 确认目标范围不要太大 - 查看错误日志 ### **调试技巧** 1. 使用小范围的测试 2. 从简单的ICMP扫描开始 3. 逐步增加扫描复杂度 4. 观察扫描结果和日志 ## 📊 **结果解读** ### **扫描状态** - **开放**: 端口开放,服务正在运行 - **关闭**: 端口关闭,没有服务 - **过滤**: 端口被防火墙过滤 - **无响应**: 主机无响应 ### **统计信息** - **总目标数**: 扫描的目标总数 - **活跃主机**: 响应的主机数量 - **开放端口**: 发现的开放端口数量 - **扫描时间**: 总扫描耗时 ## 🔄 **高级功能** ### **批量测试** 1. 生成多个测试用例 2. 依次应用不同的测试用例 3. 比较不同扫描方法的结果 ### **结果导出** - 支持导出扫描结果 - 多种格式支持 - 便于后续分析 ### **自定义配置** - 可以修改测试用例参数 - 支持自定义扫描策略 - 灵活配置扫描选项 ## 📞 **技术支持** 如果您在使用过程中遇到问题: 1. **查看日志**: 程序会记录详细的运行日志 2. **检查配置**: 确认网络和程序配置正确 3. **参考文档**: 查看相关的技术文档 4. **联系支持**: 如有需要可以寻求技术支持 --- **记住**: 网络扫描工具应该负责任地使用,仅用于合法的网络管理和安全测试目的。 2.4原理概述 1.ARP扫描原理 向目标IP地址发送ARP请求数据包,通过判断是否收到该主机返回的ARP响应数据包,来确定该主机是否存在。由于ARP协议是局域网通信的基础协议,ARP扫描具有极高的可靠性和响应速度。其缺点是无法跨网段使用,仅适用于本地局域网环境。 2.ICMP扫描原理 向目标IP地址发送一个ICMP回显请求(Type=8)数据包,如果目标主机存在且未被防火墙屏蔽ICMP,则会返回一个ICMP回显应答(Type=0)数据包。扫描端只需判断是否收到应答,即可确定目标主机是否在线。常用的Ping命令就是基于ICMP扫描原理实现的。需要注意的是,现代许多主机或防火墙会屏蔽ICMP回显请求,从而影响ICMP扫描的有效性。 3.TCPConnect扫描原理 与目标主机指定端口建立完整的三次握手连接,若连接成功建立,则判定端口开放;如果收到RST(复位)响应,则判定端口关闭;如果没有任何响应(超时),则判定端口可能被防火墙过滤。 4.UDP扫描原理 创建UDP套接字并设置接收超时。扫描过程会尝试最多3次,如果收到UDP响应则判定端口为开放状态;如果收到ICMP错误消息则判定为关闭;如果多次尝试后仍无响应,则端口状态被标记为未知。 5.TCP SYN扫描原理 向目标端口发送SYN包发起连接请求,通过响应判断端口状态。若收到SYN-ACK​​ ,则端口开放(回RST终止连接,避免建立完整会话)。如果收到RST响应,则判定端口关闭。如果没有任何响应(超时),则判定端口可能被防火墙过滤。 6.TCP FIN扫描原理 向目标端口发送FIN包(模拟连接终止请求),通过响应判断端口状态。如果收到RST响应,则判定端口关闭。​若无响应​​ ,端口可能开放或被过滤。TCPFIN扫描无法直接确认开放端口(需结合无响应推断)。