ghanshyamcj/Network-Scanner
GitHub: ghanshyamcj/Network-Scanner
一款零依赖的纯 Python 多线程网络扫描工具,通过 ICMP 发现局域网存活主机并探测 TCP 端口开放状态。
Stars: 0 | Forks: 0
# NetScan
一个轻量级、多线程的网络扫描工具,使用纯 Python 编写(无任何外部依赖)。NetScan 通过 ICMP ping 扫描发现子网中的活动主机,并可选择性地探测它找到的每个主机上的常见 TCP 端口。
## 功能
- **自动检测本地子网** — 匹配您实际处于活动状态的网络接口,而不是仅仅获取找到的第一个接口,因此即使在连接了 VPN 或存在多个 NIC 的情况下也能正常工作
- **跨平台** — 支持 Windows、macOS 和 Linux
- **多线程主机发现** — 可在几秒钟内完成整个 /24 网段的扫描,而不是几分钟
- **可选的 TCP 端口扫描** — 探测已发现在线主机上的常见端口(或自定义列表)
- **默认安全** — 在扫描异常大的范围之前会发出警告并要求确认
- **灵活的输入** — 接受完整的 CIDR、部分 IP(`192.168.1`)或单个 IP(默认为 /24)
## 安装说明
运行 NetScan 本身不需要任何外部依赖 — 它完全基于 Python 标准库构建。
```
git clone https://github.com//netscan.git
cd netscan
python3 netscan.py --help
```
需要 Python 3.7+。
## 用法
```
netscan # Scan your current local network
netscan 192.168.1.0 # Scan 192.168.1.0/24
netscan 192.168.1 # Scan 192.168.1.0/24
netscan 192.168.1.0/24 # Scan 192.168.1.0/24
netscan 192.168.1.0/24 -p # Also probe common ports on hosts found
netscan 10.0.0.0/24 -p 22,80,443 # Only probe these ports
```
### 选项
| Flag | Description |
|---|---|
| `-p, --ports [PORTS]` | 探测已发现主机上的常见 TCP 端口。传入以逗号分隔的列表以自定义要探测的端口。 |
| `-y, --yes` | 跳过大范围扫描的确认提示 |
| `-w, --workers` | 用于主机发现的最大并发线程数(默认:100) |
| `-t, --timeout` | Ping 超时时间,以秒为单位(默认:1.0) |
## 示例输出
```
Scanning network: 192.168.1.0/24 (254 hosts)
Progress: 254/254
Online hosts:
192.168.1.1
192.168.1.14
192.168.1.22
Probing 15 port(s) on 3 host(s)...
192.168.1.1: open ports -> 80, 443
192.168.1.14: no open ports found (of those probed)
192.168.1.22: open ports -> 22
```
## 运行测试
```
pip install -r requirements.txt
pytest tests/
```
## 道德规范使用
NetScan 旨在用于扫描您拥有或获得明确测试权限的网络 — 例如,您自己的家庭或实验室网络,或者您被授权评估的系统。未经授权扫描网络可能会违反当地法律和网络政策。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:MIT 许可证, Python, 云存储安全, 安全规则引擎, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 网络扫描, 逆向工具, 隐私保护