<p align="center">
<img alt="Metabigor" src="https://assets.kitploit.com/production/public/readmes/2602/a91acb0c74fbed7b623c138dcc568e51b46b54c20992493fa0be6f3dea3d9c1d.png" height="140" />
<br />
<strong>Metabigor - 无需 API 密钥的 OSINT 强力工具</strong>
<p align="center">
<a href="https://docs.osmedeus.org/donation/"><img src="https://img.shields.io/badge/Sponsors-0078D4?style=for-the-badge&logo=GitHub-Sponsors&logoColor=39ff14&labelColor=black&color=black"></a>
<a href="https://twitter.com/OsmedeusEngine"><img src="https://img.shields.io/badge/@OsmedeusEngine-0078D4?style=for-the-badge&logo=Twitter&logoColor=39ff14&labelColor=black&color=black"></a>
<a href="https://github.com/j3ssie/osmedeus/releases"><img src="https://img.shields.io/github/release/j3ssie/metabigor?style=for-the-badge&labelColor=black&color=2fc414&logo=Github"></a>
</p>
</p>
***
## Metabigor 是什么?
Metabigor 无需你注册任何 API 密钥,即可测绘目标的基础设施。网络范围、证书、关联域名、暴露的端口、CDN 厂商和代码泄露——全部来自免费数据源,并且所有结果都可以相互通过管道衔接。
## 功能特性
- **网络发现** - 从 ASN、组织、域名或 IP 查找 IP 范围(CIDR)
- **证书透明日志** - 通过 crt.sh 发现子域名
- **IP 富化** - 通过 Shodan InternetDB 获取端口、主机名和 CVE(免费,无需密钥)
- **GitHub 代码搜索** - 通过 grep.app 在公共仓库中查找机密信息、凭据和子域名
- **IP 聚类** - 按 ASN 对 IP 分组,以测绘基础设施
- **关联域名** - 通过证书日志、反向 WHOIS 和分析 ID 进行关联拓展
- **CDN/WAF 检测** - 将受保护的地址与候选源站区分开
- **URL 收集** - 网络档案馆中出现过的每一个 URL,包括从 WARC 中挖掘出的端点
## 安装
```bash
npm install -g @j3ssie/metabigor # macOS, Linux, Windows
brew install j3ssie/tap/metabigor # macOS, Linux
```
两者都会为你的平台提供相同的预编译二进制文件——无需 Go 工具链。
或者从源码构建:
```bash
git clone https://github.com/j3ssie/metabigor.git
cd metabigor
make build # binary at ./bin/metabigor
```
或者从[发布页面](https://github.com/j3ssie/metabigor/releases)下载二进制文件。
## 30 秒快速上手
```bash
metabigor net AS13335 # network ranges behind an ASN
metabigor cert hackerone.com # subdomains from certificate logs
metabigor ip 1.1.1.1 # open ports and CVEs for an IP
metabigor related tesla.com # other domains the target owns
metabigor cdn --exclude -I ips.txt # candidate origin servers
```
## 每个命令的工作方式
所有命令都遵循相同的约定,因此你学会一个命令就等于掌握了全部。
### 四种传入目标的方式
```bash
metabigor cert example.com # as an argument
metabigor cert example.com tesla.com # several arguments
metabigor cert -i example.com # with -i
metabigor cert -I domains.txt # from a file, one per line (# comments are ignored)
cat domains.txt | metabigor cert # on stdin
```
它们可以组合使用,合并后的列表会去重:
```bash
metabigor cluster 1.1.1.1 -i 8.8.8.8 -I more-ips.txt
```
参数是最直接的传递方式,适用于所有命令。当目标看起来像标志,或者当脚本为你拼装命令时,请使用 `-i`:
```bash
metabigor github -i "--endpoint-url"
metabigor net --input "$TARGET" -f json
```
只有在没有以其他任何方式给出目标时才会读取标准输入,因此 `metabigor net AS13335` 在脚本或 CI 任务中绝不会阻塞等待输入。
### 一个标志控制输出格式
`-f/--format` 适用于所有命令:
| 格式 | 你得到的内容 | 用途 |
|---|---|---|
| `text` *(默认)* | 可读的列 | 在终端中阅读 |
| `flat` | 裸主值 | 通过管道传给其他工具 |
| `json` | 每行一个 JSON 对象 | `jq`、自动化 |
| `csv` | 单个表头下的数据行 | 电子表格、报告 |
```bash
metabigor ip 1.1.1.0/28 # 1.1.1.1 | 80,443 | one.one.one.one
metabigor ip 1.1.1.0/28 -f flat # 1.1.1.1:80
metabigor ip 1.1.1.0/28 -f json # {"ip":"1.1.1.1","ports":[80,443],...}
metabigor ip 1.1.1.0/28 -f csv -o ports.csv
```
结果始终输出到标准输出(stdout),日志始终输出到标准错误(stderr),因此无论日志级别如何,管道都保持干净。`-o` 还会将结果写入文件,除非传入 `--append`,否则会覆盖该文件。文件只有在有结果可写时才会被重写,因此运行失败或找不到任何结果时,之前的结果会原样保留。
### 命令串联
```bash
metabigor net AS13335 -f flat | metabigor ip -f flat
metabigor related tesla.com -f flat | metabigor cert
cat domains.txt | dnsx -silent -resp-only | metabigor cdn --exclude
```
## 命令
### `net` - 网络发现
查找 ASN、IP、域名或组织背后的 CIDR。使用随附的离线数据库。
```bash
metabigor net AS13335 # every CIDR announced by an ASN
metabigor net 1.1.1.1 --detail # which ASN owns this IP
metabigor net --org Cloudflare # search by company name
metabigor net --live tesla.com # query live sources instead of the local DB
metabigor net -I asn-list.txt -f csv -o ranges.csv
```
目标类型会自动检测。可以使用 `--asn`、`--ip`、`--domain` 或 `--org` 覆盖(互斥)。`--detail` 会添加 ASN、组织和国家/地区列。
### `cert` - 证书透明日志
```bash
metabigor cert hackerone.com # one domain per line
metabigor cert "HackerOne Inc" # search by organization
metabigor cert example.com --clean # strip the *. from wildcards
metabigor cert example.com --wildcard # only wildcard entries
metabigor cert example.com --detail # cert IDs, issuers, validity dates
metabigor cert tesla.com | dnsx -silent
```
### `ip` - IP 富化(Shodan InternetDB)
```bash
metabigor ip 1.1.1.1 # ports, hostnames, CVEs
metabigor ip 1.1.1.0/28 # CIDRs expand to hosts
metabigor ip 1.1.1.0/28 -f flat # IP:PORT pairs
metabigor ip -I ips.txt -c 30 -f csv -o ports.csv
```
InternetDB 完全不了解的 IP 会被跳过;传入 `--all` 可保留它们。
### `github` - 代码搜索(grep.app)
```bash
metabigor github hackerone.com # repo and path per match
metabigor github tesla.com --subs # only subdomains found in matches
metabigor github "api_key=" --detail # show the matching code
metabigor github AKIA --pages 3 --detail
```
需要 Chrome 或 Chromium——grep.app 会以机器人验证挑战来回应纯 HTTP 客户端。无论 `-c` 设置为多少,搜索都会逐个运行,以遵守 grep.app 的速率限制。
### `cluster` - IP 聚类
按拥有 IP 的 ASN 对 IP 分组,最大的聚类在前。接受 IP 或 CIDR。可离线运行。
```bash
cat ips.txt | metabigor cluster
metabigor cluster -I ips.txt -f csv -o clusters.csv
cat domains.txt | dnsx -silent -resp-only | metabigor cluster
```
### `related` - 关联域名发现
```bash
metabigor related hackerone.com # all sources
metabigor related tesla.com --sources crt
metabigor related tesla.com --sources crt,whois
```
数据源:`crt`(crt.sh)、`whois`(viewdns.info 反向 WHOIS)、`analytics`(共享的 Google Analytics / Tag Manager ID)或 `all`。结果会跨数据源去重,并标记最先发现它们的数据源。
### `url` - 从网络档案馆收集 URL
```bash
metabigor url hackerone.com # every keyless source, subdomains included
metabigor url blog.hackerone.com --no-subs # one hostname only
metabigor url hackerone.com/reports # scope to a path prefix
metabigor url tesla.com --sources wayback,urlscan
metabigor url tesla.com --keywords '\.js(\?|$)' # JavaScript only
metabigor url tesla.com --blacklist default --no-params
metabigor url tesla.com -f flat | httpx
```
数据源:`wayback`、`commoncrawl`、`otx`、`urlscan`、`ghostarchive`,以及设置了密钥时的 `virustotal` 和 `intelx`。默认运行五个无需密钥的数据源;当环境中存在 `VT_API_KEY` / `INTELX_API_KEY` 时,两个需要凭据的数据源会自动加入,而 `URLSCAN_API_KEY` 会提高 urlscan 的页面大小。如果指定了需要凭据的数据源却没有提供其密钥,会直接报错,而不是静默跳过。
**默认包含子域名**——查询的是 `*.target`,而不是 `target`。这是影响单次运行返回数据量的最大杠杆;`--no-subs` 可缩小范围。
**GhostArchive 会被挖掘,而不仅仅是列出。** 每个存档页面还有一个原始 WARC,而 WARC 记录了浏览器在捕获页面时发出的每一个子请求——XHR 调用、JSON 端点、动态构建的脚本 URL。这些都不会出现在 CDX 索引中,因为 CDX 只对页面 URL 本身的捕获进行索引。在测试中,对 `tesla.com` 发起的 8 个请求返回了 147 个 URL,其中包括实时的 JSON API 端点。使用 `--limit-requests` 限制成本。
过滤器默认处于关闭状态,因此未经要求不会丢弃任何内容。`--match-status` / `--filter-status`、`--match-mime` / `--filter-mime`、`--from` / `--to` 和 `--keywords` 会在服务端推送到 Wayback 和 Common Crawl API,并在本地重新检查;`--blacklist` 和 `--no-params` 是本地过滤。`--limit-requests` 限制每个数据源的请求数,`--limit-collections` 设置要搜索 Common Crawl 约 126 个索引集合的深度(`0` 表示全部,可回溯到 2008 年)。
### `cdn` - CDN/WAF 检测
```bash
metabigor cdn 1.1.1.1 # vendor and type
cat ips.txt | metabigor cdn --exclude # candidate origins
cat ips.txt | metabigor cdn --only # only protected addresses
```
### `update` - 刷新本地数据库
```bash
metabigor update
```
刷新 `~/.metabigor` 中的 IP 到 ASN 和 IP 到国家/地区两个数据库。二进制文件随附一份副本,并在首次使用时解包,因此只有在需要获取更新的路由数据时才需要运行此命令。
### `skills` - 编码代理技能
Metabigor 随附一个 [agentskills.io](https://agentskills.io) 技能,可教会 AI 编码代理(Claude Code、Codex 或任何兼容的代理)如何使用 CLI。该技能内嵌于二进制文件中,因此始终与你安装的版本匹配。
```bash
metabigor skills # list the bundled skills
metabigor skills get metabigor --full # print the skill and its references
metabigor skills install # install into .claude/skills (this project)
metabigor skills install --scope global # install into ~/.claude/skills
metabigor skills install --agent agents # install into .agents/skills for Codex
metabigor skills install --dir ./skills # install into a directory you choose
```
`get` 将原始 Markdown 打印到标准输出(可管道处理,或使用 `-o` 保存)。`install` 会复制整个技能包——`SKILL.md` 及其 `references/`——并且除非传入 `--force`,否则会跳过已存在的副本。安装后,只要你提到 metabigor,代理就会自动触发该技能。
## 全局标志
```
-i, --input string Target to look up (also accepts arguments or stdin)
-I, --input-file string File of targets, one per line (use - for stdin)
-o, --output string Also write results to this file
-f, --format string Output format: text, json, csv, flat (default "text")
--append Append to the output file instead of overwriting it
-c, --concurrency int Number of parallel workers (default 10)
-t, --timeout int Request timeout in seconds (default 40)
--retry int Retries per failed request (default 3)
--proxy string Upstream proxy, e.g. http://127.0.0.1:8080
-v, --verbose Show step-by-step progress
-q, --quiet Show results and errors only
--debug Show HTTP traffic and internal traces (implies --verbose)
--no-color Disable colored log output
```
Metabigor 在失败时以非零状态退出,因此可以与 `&&`、`set -e` 和 CI 组合使用。
## 从 v2 升级
v3 为了保持一致性重命名了标志和命令。没有别名——请更新你的脚本。
| v2 | v3 | 原因 |
|---|---|---|
| `metabigor ipc` | `metabigor cluster` | `ipc` 让人无法猜出含义 |
| `-I, --inputFile` | `-I, --input-file` | camelCase 不是 CLI 惯例 |
| `-q, --silent` | `-q, --quiet` | `-q` 应与其长格式一致 |
| `--json` | `-f json` | 用一个标志控制输出格式 |
| `ip --csv` / `ip --flat` | `-f csv` / `-f flat` | 同上 |
| `cert --simple` | *(现在是默认行为)* | `--detail` 选项用于显示详细块 |
| `net --dynamic` | `net --live` | 更通俗的表述 |
| `cdn --strip-cdn` | `cdn --exclude` | 与新的 `--only` 配对使用 |
| `related -s ua` / `-s gtm` | `--sources analytics` | 两者做的是同一件事 |
| `related -s` | `-s, --sources` | 现在真正支持接收列表 |
| `github` *(默认包含子域名)* | `github --subs` | 输出格式不再取决于结果 |
值得了解的行为变更:
- **进度输出默认静默。** `[verbose]` 行现在需要 `-v`。
- **`-o` 会覆盖文件**,而不是静默追加。使用 `--append` 可恢复旧行为。
- **`ip` 打印可读文本**,而不是原始 JSON。如需 JSON 请使用 `-f json`。
- **`cert` 打印纯域名列表。** 使用 `--detail` 可查看分组后的证书视图。
- **`net` 对 CIDR 报告其所属网络**,而不是展开为每个主机。
- **错误退出码为 1。** 以前任何失败仍然以 0 退出。
- **`metabigor update` 会刷新两个数据库。** 以前会跳过国家/地区数据库。
## 想轻松地将 Metabigor 集成到你的侦察工作流中?
<p align="center">
<img alt="OsmedeusEngine" src="https://assets.kitploit.com/production/public/readmes/2602/eafa8ee9ab8d11baf808ad0024f1153b25dd09c470be9ccc68ccf44c2ab63b2a.png" />
<p align="center">
这个项目曾是 Osmedeus Engine 的一部分。在 <a href="https://twitter.com/OsmedeusEngine">@OsmedeusEngine</a> 可以了解它是如何被集成的
</p>
</p>
# 致谢
标志来自 [flaticon](https://image.flaticon.com/icons/svg/1789/1789851.svg),由 [freepik](https://www.flaticon.com/authors/freepik) 创作
## 📊 数据源
- **本地数据库** - IP 到 ASN 和 IP 到国家/地区的映射(200 万+ 条记录)
- **crt.sh** - 证书透明日志
- **Shodan InternetDB** - 免费的 IP 富化 API
- **grep.app** - GitHub 代码搜索
- **bgp.he.net** - 实时 BGP 路由数据
- **viewdns.info** - 反向 WHOIS 查询
- **builtwith.com** - 分析跟踪关联
- **projectdiscovery/cdncheck** - CDN/WAF 检测库
- **web.archive.org** - Wayback Machine CDX 索引
- **index.commoncrawl.org** - Common Crawl CDX 索引
- **otx.alienvault.com** - AlienVault OTX URL 列表
- **urlscan.io** - 扫描历史搜索
- **ghostarchive.org** - 存档页面及其 WARC 文件
- **virustotal.com** - 域名关联(可选 API 密钥)
- **intelx.io** - Intelligence X phonebook(可选 API 密钥)
# 免责声明
本工具仅用于教育目的。你应对自己的行为负责。如果在使用本软件时搞砸了什么或触犯了法律,那是你的错,而且只是你的错。
# 许可证
`Metabigor` 由 [@j3ssie](https://twitter.com/j3ssie) 用 ♥ 打造,并以 MIT 许可证发布。
# 捐赠
[](https://paypal.me/j3ssiejjj)
[](https://www.buymeacoffee.com/j3ssie)