s0xandrew/Network-Port-Scanner
GitHub: s0xandrew/Network-Port-Scanner
一款基于 Python 标准库的多线程 TCP 端口扫描器,支持 Banner 抓取与自动化风险评估,可快速发现目标主机的开放端口及潜在安全隐患。
Stars: 0 | Forks: 0
# 🔌 网络端口扫描器
一个多线程的 Python 端口扫描器,可对目标主机执行 TCP connect 扫描、
banner 抓取以及自动化风险评估。
## ⚡ 功能
- **TCP Connect 扫描** — 使用 socket 连接测试端口
- **多线程** — 同时扫描 100 个端口(速度提升 10 倍)
- **Banner 抓取** — 从开放端口提取服务版本信息
- **DNS 解析** — 同时接受主机名和 IP 地址
- **风险评估** — 标记危险的开放端口(Telnet、RDP、SMB 等)
- **报告生成** — 将完整结果保存到 `port_scan_report.txt`
## 🛠️ 设置与安装
**环境要求:** Python 3.x(无需外部库)
```
# 克隆 repository
git clone https://github.com/s0xandrew/network-port-scanner.git
cd network-port-scanner
# 运行 scanner
python port_scanner.py
```
## 📸 示例输出
NETWORK PORT SCANNER
By Sourabh (s0xandrew) | Ethical Use Only
Target: scanme.nmap.org
[DNS] Resolving scanme.nmap.org...
[DNS] Resolved to: 45.33.32.156
[SCAN] Scanning ports 1-1024 on 45.33.32.156
[SCAN] Using 100 threads for speed
PORT SERVICE BANNER
22 SSH No banner
80 HTTP HTTP/1.1 200 OK
[RESULTS] Total open ports found: 2
[RISK] No commonly dangerous ports found open.
## 🧠 工作原理
### TCP Connect 扫描
通过使用 Python 的 `socket` 模块尝试完整的 TCP 握手来测试每个端口。
如果连接成功(返回 0),则该端口是开放的。这在基础层面上模拟了
像 nmap 等工具的工作方式。
### 多线程
在没有线程的情况下,以 1 秒的超时时间扫描 1024 个端口需要 17 分钟以上。
使用带有 100 个 worker 的 `ThreadPoolExecutor` 可以将时间缩短至 60 秒以内 —
速度提升了 17 倍。
### Banner 抓取
一旦发现开放端口,扫描器就会发送 HTTP HEAD 请求并读取第一段响应。
服务通常会在此处暴露其软件名称和版本 — 这是漏洞评估的关键数据。
### 风险评估
系统会根据包含常被利用服务(Telnet、RDP、SMB、MongoDB、Redis)的字典
来检查开放端口。匹配项将触发带有解释的高风险警告。
## 🎯 合法演练目标
| 目标 | 备注 |
|--------|-------|
| `scanme.nmap.org` | 由 nmap.org 维护 — 明确用于扫描练习 |
| `localhost` | 你自己的机器 |
| 你的家庭路由器 IP | 归你自己所有 |
**未经许可,严禁扫描目标。**
## ⚖️ 道德使用免责声明
本工具仅用于:
- 教育目的
- 归你所有或获得书面测试许可的系统
- 诸如 `scanme.nmap.org` 之类的合法演练环境
未经授权的端口扫描在《2000 年 IT 法案》(印度)和《计算机欺诈和滥用法》
(美国)下可能属于违法行为。作者对滥用行为
不承担任何责任。
## 🔗 B.Cyber 相关性
| 概念 | 对应内容 |
|---------|-----------|
| TCP/IP & OSI Model | Socket 编程、connect 扫描 |
| 网络侦察 (Network Reconnaissance) | 端口扫描方法论 |
| Banner 抓取 | 服务指纹识别 |
| 威胁情报 (Threat Intelligence) | 风险评估引擎 |
| 纵深防御 (Defense in Depth) | 识别危险暴露的服务 |
## 📁 项目结构
network-port-scanner/
│
├── port_scanner.py # 主扫描器
├── port_scan_report.txt # 自动生成的报告
## └── README.md # 本文件
## 👨💻 作者
**Sourabh (s0xandrew)**
自学成才的网络安全爱好者 |
## 📚 我学到了什么
- Socket 层面的 TCP/IP 握手机制
- 诸如 nmap 等端口扫描器的底层工作原理
- 用于提升网络 I/O 性能的多线程技术
- Banner 抓取与服务指纹识别
- 基于风险的暴露网络服务思考方式
- Python:socket、threading、concurrent.futures
标签:Banner抓取, Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 逆向工具, 隐私保护