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扫描, 桌面应用, 网络工具, 逆向工具