narimene-cyber/pyscanner
GitHub: narimene-cyber/pyscanner
一个纯 Python 标准库实现的快速多线程 TCP 端口扫描器,支持服务检测、Banner 抓取和 JSON 报告导出。
Stars: 0 | Forks: 0
# PyScanner
一个使用 Python 编写的快速、多线程 TCP 端口扫描器。它可以发现开放端口、识别运行中的服务,并抓取 banner 来指纹识别软件版本——所有操作均可通过命令行完成。
本项目是网络安全学习项目的一部分。
## 功能
- 多线程扫描 —— 同时扫描数百个端口
- 服务检测 —— 通过端口号识别服务(HTTP、SSH、FTP 等)
- Banner 抓取 —— 指纹识别开放端口上的软件名称和版本
- JSON 输出 —— 将结果保存为结构化的报告文件
- 简洁的 CLI —— 提供灵活的参数以适应任何扫描范围
## 环境要求
- Python 3.6+
- 无需外部库 —— 仅使用 Python 的标准库
## 安装说明
```
git clone https://github.com/yourusername/pyscanner.git
cd pyscanner
```
就这么简单。无需 pip install。
## 用法
```
# 基础扫描(端口 1-1024)
python port_scanner.py
# 自定义端口范围
python port_scanner.py -s 1 -e 9999
# 调整线程数
python port_scanner.py -t 200
# 保存结果到 JSON
python port_scanner.py -o results.json
# 完整示例
python port_scanner.py 127.0.0.1 -s 1 -e 9999 -t 100 -o results.json
```
### 参数
| 参数 | 描述 | 默认值 |
|---|---|---|
| `host` | 目标 IP 或域名 | 必填 |
| `-s`, `--start` | 起始端口 | 1 |
| `-e`, `--end` | 结束端口 | 1024 |
| `-t`, `--threads` | 线程数 | 100 |
| `-o`, `--output` | 将结果保存到 JSON 文件 | 无 |
## 示例输出
```
[*] Starting scan on 127.0.0.1 (127.0.0.1)
[*] Ports: 1-9999 | Threads: 100
[+] 22/tcp open ssh | SSH-2.0-OpenSSH_10.2
[+] 631/tcp open ipp | HTTP/1.0 400 Bad Request
[+] 1716/tcp open xmsg
[+] 5355/tcp open llmnr
[*] Scan complete in 7s — 4 open port(s) found
[*] Results saved to results.json
```
### JSON 报告
```
{
"host": "127.0.0.1",
"ip": "127.0.0.1",
"scanned": "1-9999",
"open_ports": [
{ "port": 22, "service": "ssh", "banner": "SSH-2.0-OpenSSH_10.2" },
{ "port": 631, "service": "ipp", "banner": "HTTP/1.0 400 Bad Request" },
{ "port": 1716, "service": "xmsg", "banner": null },
{ "port": 5355, "service": "llmnr", "banner": null }
],
"timestamp": "2026-06-15 10:06:50"
}
```
## 工作原理
1. 将目标主机名解析为 IP 地址
2. 生成线程以并发扫描端口(TCP connect 扫描)
3. 对于每个开放端口,尝试进行 banner 抓取:
- 首先被动监听(捕捉 SSH、FTP、SMTP 的 banner)
- 如果没有收到响应,则发送 HTTP 探测(捕捉 Web 服务器)
4. 收集并排序结果,可选择保存到 JSON
## 法律免责声明
本工具旨在用于您拥有或获得**明确书面授权**进行扫描的系统。未经授权的端口扫描在您所在的司法管辖区可能属于违法行为。作者不对本工具的任何滥用行为负责。
请仅在以下对象上使用本工具:
- 您自己的机器(`127.0.0.1`、您的本地网络)
- 专门的练习目标,如 `scanme.nmap.org`
- 您已获得书面授权的系统
## 作者
**Narimene** —— 网络安全学生
GitHub: [github.com/narimene-cyber](https://github.com/narimene-cyber)
标签:Banner Grabbing, DNS查询工具, Python, 插件系统, 文档结构分析, 无后门, 服务器安全, 端口扫描器, 网络安全, 逆向工具, 隐私保护