Ashnoor0712/pyscan

GitHub: Ashnoor0712/pyscan

PyScan 是一个基于 Python 的多线程 TCP 端口扫描器,支持 banner 抓取与结果导出,帮助用户快速发现开放端口及服务信息。

Stars: 0 | Forks: 0

# PyScan 一个多线程 TCP 端口扫描器,支持 banner 抓取和 JSON/CSV 导出,使用 Python 从零构建。 ## 功能 - **多线程扫描** — 使用 `ThreadPoolExecutor` 并发扫描端口,而不是逐一扫描 - **Banner 抓取** — 尝试通过读取服务响应来识别开放端口上运行的内容(对于 Web 服务,带有 HTTP 请求回退机制) - **通过 CLI 配置** — 目标、端口范围和线程数均作为参数传递 - **导出结果** — 将扫描结果保存为 JSON 或 CSV ## 用法 ``` python3 pyscan.py -t -p --threads -o ``` ### 参数 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-t`, `--target` | 目标 IP 或主机名(必填) | — | | `-p`, `--ports` | 要扫描的端口范围,例如 `1-1024` | `1-1024` | | `--threads` | 并发线程数 | `100` | | `-o`, `--output` | 将结果保存到文件(`.json` 或 `.csv`) | 无 | ### 示例 在默认端口范围扫描 localhost: ``` python3 pyscan.py -t 127.0.0.1 ``` 使用更多线程扫描更宽的范围: ``` python3 pyscan.py -t 127.0.0.1 -p 1-8100 --threads 200 ``` 扫描并将结果导出为 JSON: ``` python3 pyscan.py -t 127.0.0.1 -p 1-8100 -o results.json ``` ## 示例输出 Scanning 127.0.0.1 ... Port 8000 is OPEN - HTTP/1.0 200 OK Scan finished. Results saved to results.json ## 工作原理 对于指定范围内的每个端口,PyScan 会打开一个 TCP socket 并尝试连接。如果连接成功,它会尝试从服务中读取 banner —— 如果没有立即返回任何内容(这对于 Web 服务器很常见),它会发送一个最小的 HTTP `HEAD` 请求来提示响应。所有开放端口及其 banner 都会被收集,并可选择写入 JSON 或 CSV 文件。 ## 路线图 - 支持 UDP 扫描 - 超出基本 HTTP banner 的服务指纹识别 - 用于大规模扫描的进度条
标签:Python, 插件系统, 数据泄露防护, 数据统计, 文档结构分析, 无后门, 端口扫描, 网络探测, 逆向工具