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短链接分析, 内网扫描, 反取证, 多线程扫描, 大学课程设计, 子域名枚举, 子网扫描, 安全评估, 开源安全工具, 插件系统, 无后门, 服务探测, 端口扫描器, 系统安全, 网络安全, 网络审计, 网络编程, 逆向工具, 逆向工程平台, 隐私保护