# ai.scanport-skill **Repository Path**: zinface/ai.scanport-skill ## Basic Information - **Project Name**: ai.scanport-skill - **Description**: 由 AI (Claude) 编写的本地局域网 TCP 端口扫描工具,支持自动网段发现与多线程并发扫描,可作为 Claude Code 项目级 Skill 使用。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-07 - **Last Updated**: 2026-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # scanport > 由 AI (Claude) 编写的本地局域网 TCP 端口扫描工具,支持自动网段发现与多线程并发扫描,可作为 Claude Code 项目级 Skill 使用。 ## 特性 - 🔍 **自动网段发现** — 通过 `getifaddrs()` 自动检测系统网络接口的 IPv4 网段 - ⚡ **多线程并发** — 使用 pthread 实现高效并发扫描,默认 256 线程 - 🎯 **精确检测** — 使用 `select()` + `getsockopt(SO_ERROR)` 避免误报 - 📝 **结果保存** — 自动保存扫描结果到 `scanport_result_.txt` - 🤖 **Claude Code Skill** — 可通过自然语言触发,无需记忆命令参数 ## 快速开始 ### 编译 ```bash gcc -Wall -Wextra -o scanport scanport.c -lpthread ``` ### 基本用法 ```bash # 扫描 SSH 端口 ./scanport 22 # 扫描 HTTP 端口,设置 1 秒超时 ./scanport 8080 -t 1000 # 快速扫描 Redis,200ms 超时,512 并发 ./scanport 6379 -t 200 -p 512 ``` ### 参数说明 | 参数 | 说明 | 默认值 | |------|------|--------| | `` | 目标 TCP 端口 (1-65535) | 必填 | | `-t ` | 连接超时(毫秒) | 500 | | `-p ` | 最大并发线程数 | 256 | ## 作为 Claude Code Skill 使用 本项目包含完整的 Claude Code Skill 集成,可通过自然语言触发扫描。 ### 项目结构 ``` . ├── .claude/ │ └── skills/ │ └── scanport/ │ ├── skill.json # Skill 元数据 │ └── SKILL.md # Skill 文档 ├── scanport.c # 源码 ├── scanport # 编译产物 └── README.md ``` ### 使用方式 在 Claude Code 中打开本项目目录后,可以通过以下方式触发: **方式 1:自然语言** ``` 帮我扫描一下局域网的 22 端口 ``` **方式 2:斜杠命令** ``` /scanport 8080 ``` **方式 3:明确提及** ``` 用 scanport 工具扫描 3306 端口 ``` 详见 [新手指南_如何使用项目级Skill.md](新手指南_如何使用项目级Skill.md) ## 工作原理 1. 通过 `getifaddrs()` 获取所有网络接口 2. 过滤非 loopback、UP 状态的 IPv4 接口 3. 根据 IP 和子网掩码计算网段主机范围 4. 使用 `connect()` 对每个目标 IP 执行 TCP 握手 5. 通过 `select()` + `getsockopt(SO_ERROR)` 验证连接状态 6. 多线程并发扫描(分批 join 控制并发数) 7. 实时输出开放端口,同时保存到文件 ## 示例输出 ``` 扫描端口: 22 超时: 500ms 并发: 256 ---------------------------------------- 发现网段: 192.168.100.103 / 255.255.255.0 => 主机范围 3232261120.1 ~ 3232261120.254 发现网段: 10.0.3.1 / 255.255.255.0 => 主机范围 167772928.1 ~ 167772928.254 待扫描主机数: 508 ---------------------------------------- [+] 10.0.3.1:22 OPEN [+] 192.168.100.103:22 OPEN 进度: 100 / 508 (19%) 进度: 200 / 508 (39%) 进度: 300 / 508 (59%) 进度: 400 / 508 (78%) 进度: 500 / 508 (98%) ---------------------------------------- 扫描完成! 发现 2 个开放端口 结果已保存到: scanport_result_22.txt 结果列表: 10.0.3.1:22 192.168.100.103:22 ``` ## 安全说明 - ⚠️ 仅限本地局域网扫描(基于本机网络接口派生的子网) - ⚠️ 仅使用标准 TCP connect 扫描,不发送畸形包 - ⚠️ 仅限授权的网络诊断和运维用途 - ⚠️ 请遵守当地法律法规,未经授权的端口扫描可能违法 ## 技术栈 - **语言**: C (C99) - **依赖**: pthread, POSIX socket API - **平台**: Linux (已测试) ## 文档 - [计划文档](计划_scanport_skill.md) — 项目实施计划 - [会话记录](会话记录_scanport.md) — 完整开发过程 - [新手指南](新手指南_如何使用项目级Skill.md) — Skill 使用教程 ## 许可证 本项目由 AI (Claude) 生成,代码可自由使用。 ## 致谢 - 完全由 Claude (Anthropic) 编写 - 使用 Claude Code 进行开发和测试