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技术, 二进制发布, 云存储安全, 企业安全, 安全存储, 安全规则引擎, 局域网扫描, 开源工具, 插件系统, 操作系统检测, 数据导出, 无后门, 无线安全, 网络安全, 网络扫描, 网络资产管理, 逆向工具, 隐私保护