damanoreshkan-beep/ShodanHound
GitHub: damanoreshkan-beep/ShodanHound
一款零依赖的 Node.js 侦察工具,用于在公开 GitHub 仓库中搜索并实时验证泄露的 Shodan API 密钥。
Stars: 0 | Forks: 0
# 🐕 ShodanHound
### 在公开的 GitHub 上追踪泄露的 Shodan API 密钥 — 并验证它们是否有效。
[](LICENSE)
[](https://nodejs.org)
[](package.json)
[](#-responsible-use)
*这是一个单文件、零依赖的侦察工具,用于扫描公开的代码仓库,*
查找暴露的 Shodan API 密钥,并针对 Shodan API 验证每一个密钥 —— 让你的*
结果中只包含真正可用的密钥。*
## ✨ 为什么选择 ShodanHound
开发者会泄露密钥。这在日常中时有发生 —— commit 中硬编码的密钥,或者公开仓库中被遗忘的配置文件。**ShodanHound** 将发现过程自动化,并且至关重要的是,它执行了大多数“一把梭”脚本所跳过的**验证**步骤:
- 🔎 **智能搜索** — 使用一组精心整理的特定于 Shodan 的模式来驱动 GitHub Code Search API,而不是仅仅使用单一简单的字符串。
- 🎯 **精确定位泄露位置** — 搜索 `.py`、`.js`、`.ts`、`.json` 和 `.env` 文件,无论是否带引号。精确的范围意味着更少的下载量和比盲目爬取快得多的扫描速度。
- ✅ **实时验证** — 每个候选密钥都会针对 `api.shodan.io` 进行检查;只有具有真正可用额度的密钥才会出现在你的输出结果中。
- 🧠 **尊重速率限制** — 遵循 `Retry-After` / `X-RateLimit-Reset` header 并带有自适应回退机制,因此它可以无人值守运行,而不会导致你被限流。
- 🪶 **零依赖** — 纯粹使用 Node.js 内置的 `fetch`。不需要 `npm install`,没有供应链风险。一个文件,随时随地运行。
- 🧹 **即时去重** — 每次运行中每个密钥只会被检查一次。
## ⚙️ 工作原理
```
┌──────────────┐ ┌────────────────────┐ ┌───────────────────┐ ┌──────────────┐
│ keyword │ ──▶ │ GitHub Code Search │ ──▶ │ fetch file, parse │ ──▶ │ Shodan API │
│ patterns │ │ (paginated, 100/pg)│ │ 32-char candidate │ │ validate key │
└──────────────┘ └────────────────────┘ └───────────────────┘ └──────┬───────┘
│
credits ≥ 50 ? ────────────────┘
│ yes
▼
keys.out ✅
```
1. 从 `keywords/shodan.txt` 读取模式(每行一个查询)。
2. 对于每个模式,在密钥容易泄露的文件类型(`.py`、`.js`、`.ts`、`.json`、`.env`)范围内搜索 GitHub Code Search。
3. 下载每个匹配的文件,并提取关键字附近任何孤立的 32 字符 token —— 无论带不带引号。
4. 请求 Shodan 的 `api-info` endpoint。如果该密钥具有 **≥ 50 个查询额度**,说明它是真实且有用的 → 将其附加到你的输出文件中。
## 🚀 快速开始
**环境要求:** Node.js ≥ 18 以及一个 GitHub personal access token(不需要任何 scope —— 仅用于公开代码搜索)。
```
# clone
git clone https://github.com/damanoreshkan-beep/ShodanHound.git
cd ShodanHound
# run — 传递你的 GitHub token 和一个输出文件
node shodanhound.mjs
**如果 ShodanHound 帮助你避免了泄露,请点个 ⭐ —— 这有助于其他人发现它。**
标签:API密钥, ESC4, GNU通用公共许可证, MITM代理, Node.js, OSINT, StruQ, 安全助手, 自定义脚本