xipponk/net_scanner

GitHub: xipponk/net_scanner

基于 Python 和 Scapy 的轻量级 ARP 网络扫描器,支持局域网主机发现、TTL 粗略 OS 判断及 CSV 结果导出。

Stars: 0 | Forks: 0

# 网络扫描器项目 ## 描述 一个使用 Python 和 Scapy 库构建的功能丰富的网络扫描器。该工具可以扫描网络、识别主机、通过 TTL 分析执行 OS 检测,并将结果导出为 CSV。 ## 功能 - **ARP 网络扫描** — 发现本地网络上的活动主机 - **OS 检测** — 根据 TTL 值猜测操作系统 (Linux/macOS ~64, Windows ~128, Cisco ~255) - **模拟测试模式** — 使用模拟数据在无需真实网络的情况下进行测试 - **CSV 导出** — 将扫描结果保存到带有时间戳的 CSV 文件中 - **交互式 CLI** — 具有输入验证的友好用户提示 ## 需求 - Python 3.6+ - Scapy 库 - Root/管理员权限 (真实网络扫描时需要) ## 安装说明 1. 克隆仓库: git clone https://github.com/xipponk/net_scanner.git cd net_scanner 2. 安装依赖: pip install -r requirements.txt ## 使用说明 ### 运行扫描器 ``` # 真实网络扫描 (需要 root) sudo python src/main.py # 或不使用 root (仅 mock mode 会生效) python src/main.py ``` ### 交互式流程 运行程序时,系统将引导您完成以下步骤: 1. **选择模式**:选择 `1` 进行真实扫描,或选择 `2` 进入模拟(测试)模式 2. **输入 IP 范围**:提供 CIDR 表示法的范围(例如 `192.168.1.0/24`) 3. **查看结果**:查看包含 IP、MAC、TTL 和 OS 猜测的格式化表格 4. **保存结果**:可选择导出为 CSV 文件 ### 示例会话 ``` $ sudo python src/main.py ================================================== Network Scanner v2.0 ARP Scan + OS Detection ================================================== [?] Select scan mode: 1. Real network scan (requires root/admin) 2. Mock test mode (simulated data, no network required) Enter choice (1 or 2): 2 [?] Enter IP range to scan (e.g. 192.168.1.0/24): 192.168.1.0/24 [*] Scanning 192.168.1.0/24 ... [*] Using mock mode (simulated data). ================================================================================ IP Address MAC Address TTL OS Guess ================================================================================ 192.168.1.1 00:1A:2B:3C:4D:5E 255 Cisco / Solaris (TTL ~255) 192.168.1.10 00:1B:44:3C:4D:5E 64 Linux / macOS / Unix (TTL ~64) 192.168.1.20 00:23:5E:3C:4D:5E 128 Windows (TTL ~128) ... [+] Total hosts found: 8 [?] Save results to CSV file? (y/N): y [+] Results saved to: scan_results_20260429_151000.csv ``` ## OS 检测参考 | TTL 范围 | 可能的 OS | |-----------|-----------| | ≤ 32 | 嵌入式设备 / 旧系统 | | 33 – 64 | Linux, macOS, FreeBSD, Android | | 65 – 128 | Windows 系列 | | 129 – 255 | Cisco IOS, Solaris, AIX | ## 测试 运行测试套件(无需 root/网络权限 — 使用模拟模式): ``` pytest tests/ -v ``` 或者直接使用 unittest: ``` python -m unittest tests.test_scanner -v ``` ### 测试覆盖范围 - 模拟扫描返回正确的数据结构 - OS 检测逻辑(所有 TTL 范围) - IP/CIDR 输入验证 - CSV 导出创建有效文件 ## 项目结构 ``` Net_Scanner/ ├── src/ │ └── main.py # Main scanner with all features ├── tests/ │ └── test_scanner.py # Unit tests (mock mode only) ├── requirements.txt # Python dependencies ├── README.md # This file └── .gitignore # Git ignore rules ``` ## 许可证 MIT License
标签:ARP协议, ARP扫描, CLI, CSV, Ping Sweep, Python, Scapy, TTL分析, WiFi技术, 二进制发布, 云存储安全, 企业安全, 安全存储, 安全规则引擎, 局域网扫描, 开源工具, 插件系统, 操作系统检测, 数据导出, 无后门, 无线安全, 网络安全, 网络扫描, 网络资产管理, 逆向工具, 隐私保护