mihithammi/Network-Scanner-Project
GitHub: mihithammi/Network-Scanner-Project
一款基于 Python 标准库的多线程 TCP 端口扫描工具,支持单机与 CIDR 子网扫描,用于内网安全审计与网络编程教学。
Stars: 0 | Forks: 0
一个基于 Python 的多线程 TCP 端口扫描工具,专为系统内部网络审计而构建。作为大学课程项目开发。
**第 12 组** — Python 编程:网络编程设计,2026
## 这个工具做什么?
这个工具扫描目标 IP 地址或 IP 地址范围,并检查哪些 TCP 端口是开放的。开放的端口揭示了系统(计算机/笔记本电脑)上正在运行的服务,这对于安全审计非常有用。
例如:
- 端口 22 开放意味着 SSH 正在运行。
- 端口 80 开放意味着 Web 服务器正在运行。
- 端口 443 开放意味着 HTTPS 正在运行。
## 要求:
- Python 3.10 或更高版本。
- 不需要额外的库 - 仅使用 Python 内置库。
## 如何安装?
```
git clone https://github.com/mihithammi/Network-Scanner-Project.git
cd Network-Scanner-Project
```
## 如何使用?
从终端运行扫描器:
```
python scanner.py [options]
```
**选项:**
| 选项 | 作用 | 默认值 |
|-----------|------------------------------|-----------|
| target | 要扫描的 IP 地址或子网 | 必填 |
| -p | 要扫描的端口 | 1-1024 |
| -t | 线程数 | 100 |
| --timeout | 每个端口的等待秒数 | 1.0 |
## 示例:
- 在默认端口上扫描单个 IP:
```
python scanner.py 192.168.1.1
```
- 仅扫描特定端口:
```
python scanner.py 192.168.1.1 -p 22,80,443
```
- 快速扫描整个子网:
```
python scanner.py 192.168.1.0/24 -p 1-1024 -t 200 --timeout 0.5
```
- 扫描您自己的计算机(测试安全):
```
python scanner.py 127.0.0.1 -p 1-1024
```
## 代码工作原理:
该扫描器根据作业要求分为四个阶段构建。
*阶段 1 - 核心网络* `scan_port()` 函数使用 Python 的 socket 模块尝试建立 TCP 连接。如果连接返回 0,则该端口是开放的。
*阶段 2 - 子网解析* `get_hosts()` 函数使用 Python 的 ipaddress 模块将诸如 192.168.1.0/24 这样的 CIDR 子网展开为包含 254 个独立 IP 地址的列表。
*阶段 3 - 多线程* `run_scan()` 函数使用 ThreadPoolExecutor 同时扫描多个端口,而不是逐一扫描。这使得扫描器快得多。
*阶段 4 - CLI 界面* `argparse` 模块提供了一个专业的命令行界面,用户可以在其中设置目标、端口、线程和超时时间,而无需编辑代码。
## 重要法律声明
仅扫描您拥有或已获得书面授权扫描的网络和计算机。未经授权的扫描可能是非法的。此工具仅用于授权的内部审计和教育目的。
## 故障排除
*问题:"python is not recognized"*
解决方案:Python 未添加到 PATH。重新安装 Python 并在设置过程中勾选 "Add Python to PATH"。
*问题:扫描器无任何显示,无报错*
解决方案:检查 [scanner.py](http://scanner.py) 的最后两行是否为: if __name__ == "__main__": main() 这些行的开头不能有多余的空格。
*问题:"git is not recognized"*
解决方案:未安装 Git。从 [git-scm.com](http://git-scm.com) 下载并使用默认选项安装。 **问题:执行 git push 时被拒绝** 解决方案:使用您的 Personal Access Token 作为密码,而不是您的真实 GitHub 密码。(我已经以有条理的方式更新了这部分。现在我需要为其添加 commit 详情)
## 测试
该工具在以下场景中进行了测试:
**测试 1 — 本地机器扫描:** ``` python scanner.py 127.0.0.1 -p 1-1024 ``` 结果:扫描器成功运行并显示进度条。开放的端口以绿色高亮显示,并附带了服务名称。
**测试 2 — 指定端口扫描:** ``` python scanner.py 127.0.0.1 -p 22,80,443,8080 -t 100 ``` 结果:仅检查了指定的端口。由于端口较少,扫描完成得更快。
**测试 3 — 帮助菜单:** ``` python scanner.py --help ``` 结果:所有可用选项均正确显示。
## 作者
*第 12 组*
- COHNDNE251F-17
- COHNDNE251F-30
- COHNDNE251F-42
- COHNDNE251F-46
标签:CIDR解析, DNS查询工具, IT运维, Python, Socket编程, Socks5代理, TCP端口扫描, URL短链接分析, 内网扫描, 反取证, 多线程扫描, 大学课程设计, 子域名枚举, 子网扫描, 安全评估, 开源安全工具, 插件系统, 无后门, 服务探测, 端口扫描器, 系统安全, 网络安全, 网络审计, 网络编程, 逆向工具, 逆向工程平台, 隐私保护