# LLM Key Hunter 全网泄露 LLM API Key 搜索 & 验证工具 — 覆盖国际 + 中国 LLM 平台。 ## 架构 ``` llm-key-hunter/ ├── llm-key-hunter.sh # 主入口,参数解析 + pipeline 调度 ├── verify.sh # Key 验证模块 — 25 个 provider 调 API 确认 live ├── scan.sh # TruffleHog 深度扫描模块 — 扫 org/user 全 history ├── gist.sh # GitHub Gist 扫描模块 — 公开 gist 是泄露重灾区 ├── patterns.conf # 正则指纹库 — 所有 LLM provider 的 key 格式 └── results/ # 输出目录 ``` ## 支持的 LLM Provider ### 国际平台 | Provider | Key 格式 | 验证 Endpoint | |---|---|---| | OpenAI | `sk-...` / `sk-proj-...` | `api.openai.com/v1/models` | | Anthropic | `sk-ant-...` | `api.anthropic.com/v1/models` | | Google Gemini | `AIza...` | `generativelanguage.googleapis.com` | | HuggingFace | `hf_...` | `huggingface.co/api/whoami-v2` | | Groq | `gsk_...` | `api.groq.com/openai/v1/models` | | Replicate | `r8_...` | `api.replicate.com/v1/account` | | Together AI | 64-char hex | `api.together.xyz/models` | | Mistral | 32-char alnum | `api.mistral.ai/v1/models` | | Cohere | 40-char alnum | `api.cohere.ai/v1/models` | | DeepSeek | `sk-` + 32 hex | `api.deepseek.com/v1/models` | | Perplexity | `pplx-...` | `api.perplexity.ai` | | OpenRouter | `sk-or-...` | `openrouter.ai/api/v1/models` | | Azure OpenAI | 32-char hex | (降级到 OpenAI 验证) | ### 中国平台 | Provider | Key 格式 | 验证 Endpoint | Auth | |---|---|---|---| | 火山引擎 Ark | UUID `[0-9a-f]{8}-...` | `ark.cn-beijing.volces.com/api/v3/models` | Bearer | | 火山 Coding Plan | UUID (同上) | `ark.cn-beijing.volces.com/api/coding/v1/models` | Bearer | | 智谱 AI (ChatGLM) | `APIKey.APISecret` (dot) | `open.bigmodel.cn/api/paas/v4/models` | Bearer | | 阿里云 DashScope | `sk-` + 32 chars | `dashscope.aliyuncs.com/compatible-mode/v1/models` | Bearer | | Kimi (Moonshot) | `sk-` + 48 chars | `api.moonshot.cn/v1/models` | Bearer | | MiniMax | 40+ char alnum | `api.minimaxi.com/v1/models` | Bearer | | 腾讯混元 | `AKID...` 或 alnum | `api.hunyuan.cloud.tencent.com/v1/models` | Bearer | | 百度千帆 | 20-32 char alnum | `qianfan.baidubce.com/v2/models` | Bearer | | 讯飞星火 (Spark) | `UUID:APISecret` | `spark-api.xf-yun.com/v1/chat/completions` | HMAC | | 讯飞星辰 (Coding Plan) | 32+ char alnum | `maas-coding-api.cn-huabei-1.xf-yun.com/v2` | Bearer | | 零一万物 (01.AI) | `sk-` + 48 chars | `api.lingyiwanwu.com/v1/models` | Bearer | | 阶跃星辰 (StepFun) | `sk-` + 48 chars | `api.stepfun.com/v1/models` | Bearer | | 硅基流动 (SiliconFlow) | `sk-` + 48 chars | `api.siliconflow.cn/v1/models` | Bearer | > **注:** 豆包 (Doubao) 通过火山引擎 Ark 平台,key 格式同 VolcanoArk。 > 讯飞星火使用 HMAC 签名认证,无法简单 Bearer 验证,仅做格式校验。 > 讯飞星辰 Coding Plan 使用 OpenAI 兼容协议,Bearer auth,可直接验证。 ## 快速开始 ```bash # 设置 GitHub token export GH_TOKEN="ghp_your_token_here" # 完整 pipeline: 广搜 → 提取 → 验证 (覆盖所有平台) ./llm-key-hunter.sh full -t ghp_xxx -v # 只做 GitHub 全局广搜 ./llm-key-hunter.sh broad -t ghp_xxx # 深度扫描指定 org (trufflehog) ./llm-key-hunter.sh scan -o target-org -t ghp_xxx --deep # 扫描公开 Gist ./llm-key-hunter.sh gist -t ghp_xxx # 只验证已有候选 key ./llm-key-hunter.sh verify # Raw 模式:跳过验证,只做正则匹配 ./llm-key-hunter.sh full -t ghp_xxx --raw ``` ## Pipeline 流程 ``` gh search code (广搜定位候选文件 — 60+ 查询覆盖国际+中国平台) ↓ candidates.json ↓ curl raw content (拉取文件内容) ↓ regex match (正则提取 key — 25 个 provider pattern) ↓ extracted_keys.txt ↓ API verify (逐个调 provider API 验证 — 25 个 verify 函数) ↓ live_keys.txt / dead_keys.txt ↓ trufflehog (对高价值目标深度补刀) ``` ## 输出文件 ### 总表 | 文件 | 说明 | |---|---| | `results/candidates.json` | 广搜候选文件列表 | | `results/extracted_keys.txt` | 正则提取的候选 key | | `results/live_keys.txt` | 验证通过的 live key (总表) | | `results/dead_keys.txt` | 验证失败的 dead key | | `results/verified_all.txt` | 完整验证结果 | | `results/trufflehog_results.json` | TruffleHog 深扫结果 | | `results/gist_keys.txt` | Gist 扫描结果 | ### 按厂商分类的 Live Keys 验证通过的 key 会按厂商和地区分类存储: ``` results/live/ ├── international/ # 国际平台 │ ├── openai.txt │ ├── anthropic.txt │ ├── google_gemini.txt │ ├── huggingface.txt │ ├── groq.txt │ ├── deepseek.txt │ └── ... └── china/ # 中国平台 ├── volcano_ark.txt # 火山引擎 ├── zhipu_chatglm.txt # 智谱 AI ├── alibaba_dashscope.txt # 阿里云通义 ├── kimi_moonshot.txt # Kimi ├── minimax.txt # MiniMax ├── tencent_hunyuan.txt # 腾讯混元 ├── baidu_qianfan.txt # 百度千帆 ├── iflytek_spark.txt # 讯飞星火 ├── iflytek_coding_plan.txt # 讯飞星辰 Coding Plan ├── lingyiwanwu_01ai.txt # 零一万物 ├── stepfun.txt # 阶跃星辰 └── siliconflow.txt # 硅基流动 ``` 每个文件格式: `Provider|Key|SourceURL|Description` ## 自定义正则模式 编辑 `patterns.conf`,格式为 `Provider|Regex|Description`: ``` MyProvider|mykey-[a-zA-Z0-9]{32}|Custom provider key ``` ## 搜索查询覆盖 主脚本内置 60+ 条 GitHub code search 查询,覆盖: - **文件类型**: `.env`, `.py`, `.js`, `.ts`, `.sh`, `.cfg`, `.ini`, `.ipynb` - **国际平台**: OpenAI, Anthropic, Google, HuggingFace, Groq, Replicate 等 - **中国平台**: 火山 Ark, 智谱, 阿里 DashScope, Kimi, MiniMax, 腾讯混元, 百度千帆, 讯飞, 零一万物, 阶跃星辰, 硅基流动 - **搜索策略**: 既搜 key 前缀 (`sk-proj-`, `sk-ant-`),也搜环境变量名 (`ARK_API_KEY`, `DASHSCOPE_API_KEY`),还搜 API endpoint URL ## 依赖 - `gh` (GitHub CLI) — 必需 - `curl` — 必需 - `jq` — 必需 - `trufflehog` — scan 模式需要,自动安装 ## 注意 - GitHub code search 每次最多 1000 条结果,脚本用 60+ 个查询变体覆盖 - 验证 key 会向 provider API 发真实请求,注意速率限制 - `--only-verified` (trufflehog) 只输出实际验证通过的 key,误报率最低 - 讯飞星火使用 HMAC 签名,无法简单验证,仅做格式校验 - 腾讯混元 key 格式灵活,可能有较高误报率