yasinndaba/NetScan

GitHub: yasinndaba/NetScan

NetScan 是一款 Linux 原生 WiFi 扫描工具,通过调用系统网络工具获取周边热点信息,并以实时雷达式可视化界面呈现网络分布。

Stars: 0 | Forks: 0

## NetScan # Linux WiFi 扫描工具与雷达可视化 (PyQt6) NetScan 是一个原生的 Linux WiFi 扫描工具,它使用实时雷达式界面将附近的网络可视化。它利用 `nmcli`、`iw` 和 `iwlist` 等系统工具来扫描网络,并将它们呈现在具有电影感的雷达显示屏上。 # 功能 * 实时 WiFi 扫描 * 雷达式可视化(类似舰载雷达) * 信号强度映射(基于距离) * 多种扫描后端: * nmcli(首选) * iw * iwlist * 网络列表包含: * 信号格 * 信道信息 * 安全类型 * 连续扫描模式 * 简洁的终端风格 UI # 🧱 项目结构 # netscan/ * │── main.py * │ * ├── core/ * │ ├── models.py # 数据结构 * │ ├── scanner.py # WiFi 扫描逻辑 * │ * ├── ui/ * │ ├── main_window.py # 主应用控制器 * │ ├── radar_widget.py # 雷达可视化 * │ ├── network_list.py # 网络列表显示 # ⚙️ 环境要求 * Linux(已在 Kali / 基于 Ubuntu 的系统上测试) * Python 3.10+ * PyQt6 * 系统工具(至少需要一项): * nmcli(推荐) * iw * iwlist # 📦 安装说明 1. 克隆仓库 git clone https://github.com/yourusername/netscan.git cd netscan 2. 安装依赖 pip install PyQt6 3. 安装系统工具(如果缺失) Debian/Kali/Ubuntu: sudo apt install network-manager iw wireless-tools # ▶️ 用法 * 运行应用: * python main.py * 控制 * START SCAN → 开始扫描网络 * STOP → 停止扫描 * CLEAR → 清除已检测到的网络 # 🧠 工作原理 * 扫描器会尝试多种方法: * nmcli → 最快,无需 sudo * iw → 现代的 Linux 工具 * iwlist → 备选方案 * 网络信息会被解析到一个共享的数据模型 (WiFiNetwork) 中 * UI 更新: * 雷达将信号显示为距离 * 列表显示详细信息 * 扫描在后台线程中运行,以避免 UI 卡死 # ⚠️ 注意事项与限制 * 某些扫描方法可能需要 root 权限 * 隐藏的网络可能无法正确显示 * 信号强度为近似值 * 性能取决于您的 WiFi 适配器 # 🧪 未来改进 * 用 QThread 替换 threading * 添加 packet 嗅探模式 * 导出扫描结果 (JSON/CSV) * 添加网络历史记录追踪 * 用于扫描方法的插件系统 * 基于 Web 的 dashboard # 🧨 已知的弱点 * 线性更新(未针对大规模扫描进行优化) * 没有持久化存储 * 有限的错误恢复能力 * UI 与实时更新紧密耦合 # 📜 许可证 * MIT License — 随你怎么用,但如果弄坏了东西可别怪我。 # 💡 为什么会有这个项目 * 我编写这段代码是作为我编程学习之旅的一部分,特别是针对 Python。通过这个项目,我学到的关于库、编程概念和 OOP(面向对象编程)的知识比以往看任何教程都要多。
标签:PyQt6, WiFi扫描, 桌面应用, 网络工具, 逆向工具