tbckr/trident
GitHub: tbckr/trident
一款零配置的开源情报命令行工具,整合 DNS 侦察、子域名枚举、威胁情报查询和 CDN 检测等能力。
Stars: 2 | Forks: 0
# trident
[](https://github.com/tbckr/trident/actions/workflows/ci.yml)
[](https://github.com/tbckr/trident/releases)
[](https://github.com/tbckr/trident/blob/main/go.mod)
[](https://goreportcard.com/report/github.com/tbckr/trident)
**快速、无密钥的 OSINT 工具,打包为单一二进制文件。** DNS 查询、Cymru ASN 信息、证书透明度、威胁情报、PGP 密钥搜索以及 CDN/提供商检测 —— 无需 API 密钥,无需注册,无需配置。
trident 是 Python [Harpoon](https://github.com/Te-k/harpoon) 工具的 Go 移植版和演进版,专为在终端工作的分析师和安全研究人员打造。
```
$ trident dns example.com
+------+------------------------------------------+
| TYPE | VALUE |
+------+------------------------------------------+
| NS | a.iana-servers.net. |
| | b.iana-servers.net. |
+------+------------------------------------------+
| A | 93.184.216.34 |
+------+------------------------------------------+
| AAAA | 2606:2800:21f:cb07:6819:42b5:ba16:c9cb |
+------+------------------------------------------+
| MX | 0 . |
+------+------------------------------------------+
| TXT | "v=spf1 -all" |
+------+------------------------------------------+
```
## 目录
- [安装](#installation)
- [验证发布产物](#verify-release-artifacts)
- [快速入门](#quickstart)
- [功能特性](#features)
- [服务](#services)
- [输出格式](#output-formats)
- [批量输入](#bulk-input)
- [PAP 系统](#pap-system)
- [配置](#configuration)
- [全局参数](#global-flags)
- [命令参考](#commands-reference)
- [开发](#development)
- [负责任地使用](#responsible-use)
- [贡献](#contributing)
- [安全](#security)
- [行为准则](#code-of-conduct)
## 安装
**最快的方式** —— 需要 Go 1.26+:
```
go install github.com/tbckr/trident/cmd/trident@latest
```
**预编译二进制文件** —— 从 [发布页面](https://github.com/tbckr/trident/releases) 下载适用于 Linux、macOS 或 Windows (amd64/arm64) 的版本。包含 Linux 软件包 (`.deb`, `.rpm`, `.apk`, `pkg.tar.zst`)。
**Nix** —— 无需安装即可运行或添加到您的系统配置文件:
```
# 直接运行
nix run github:tbckr/trident -- dns example.com
# 安装到 profile
nix profile install github:tbckr/trident
```
**从源码构建:**
```
git clone https://github.com/tbckr/trident
cd trident
go build -o trident ./cmd/trident
```
## 验证发布产物
每个版本都使用 [cosign](https://docs.sigstore.dev/cosign/system_config/installation/) 进行签名
并通过 GitHub Actions OIDC 进行无密钥签名。发布流水线会生成:
1. **SLSA Provenance v1 证明** —— 一份结构化文档,用于证明发布是*如何*以及在*何处*构建的,并使用 `cosign attest-blob` 签名 → `checksums.txt.slsa-provenance.sigstore.json`
2. **归档校验和** —— 每个发布归档的 SHA-256 哈希值都列在 `checksums.txt` 中
完整验证链:
```
cosign verify-blob-attestation → provenance attests checksums.txt (build origin + integrity)
sha256sum --check → individual archive integrity
```
### 手动验证
```
VERSION=v0.9.0
ARCHIVE=trident_Linux_x86_64.tar.gz
# 下载验证文件
curl -fsSL "https://github.com/tbckr/trident/releases/download/${VERSION}/checksums.txt" -o checksums.txt
curl -fsSL "https://github.com/tbckr/trident/releases/download/${VERSION}/checksums.txt.slsa-provenance.sigstore.json" -o checksums.txt.slsa-provenance.sigstore.json
# 验证 SLSA provenance attestation(证明构建来源 + 完整性)
cosign verify-blob-attestation \
--bundle checksums.txt.slsa-provenance.sigstore.json \
--type slsaprovenance1 \
--certificate-identity "https://github.com/tbckr/trident/.github/workflows/release.yml@refs/tags/${VERSION}" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
checksums.txt
# 验证归档校验和(Linux)
sha256sum --check --ignore-missing checksums.txt
# 验证归档校验和(macOS)
shasum -a 256 --check --ignore-missing checksums.txt
```
### 脚本
`scripts/verify-release.sh` 自动执行上述步骤,并可在 Linux 和 macOS 上运行:
```
# 首先从 releases 页面下载归档,然后:
./scripts/verify-release.sh v0.9.0 trident_Linux_x86_64.tar.gz
```
该脚本下载校验和及 SLSA 来源包,运行 `cosign verify-blob-attestation`,检查归档哈希,并在任何失败时以非零状态退出。它需要 `cosign` v2+ 和 `curl`。
### 仅校验和(无 cosign)
如果您未安装 cosign,仍可在从发布页面下载 `checksums.txt` 后根据它验证归档哈希:
```
# Linux
sha256sum --check --ignore-missing checksums.txt
# macOS
shasum -a 256 --check --ignore-missing checksums.txt
```
这可确认归档在传输过程中未损坏,但无法验证它是否由官方发布工作流生成。
## 快速入门
```
# DNS records —— 正向查找或反向 PTR
trident dns example.com
trident dns 8.8.8.8
# ASN info —— IP 地址或 ASN 编号(IPv4 和 IPv6)
trident cymru 8.8.8.8
trident cymru AS15169
# 来自 certificate transparency 日志的子域名
trident crtsh example.com
# Threat intelligence —— 域名、IP 或文件哈希
trident threatminer example.com
trident threatminer d41d8cd98f00b204e9800998ecf8427e
# PGP key search —— 按电子邮件、姓名或指纹
trident pgp alice@example.com
trident pgp 0xDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF
# 检查 Quad9 是否已将某个域名作为恶意域名拦截
trident quad9 malicious.example.com
# 针对 apex domain 的聚合 DNS recon
trident apex example.com
# 通过实时 DNS 查询检测 CDN、电子邮件和 DNS 托管提供商
trident detect example.com
# 根据已知 DNS record 值识别提供商(无网络调用)
trident identify --cname abc.cloudfront.net --mx aspmx.l.google.com --txt "v=spf1 include:_spf.google.com ~all"
```
## 功能特性
- **无 API 密钥** —— 所有当前服务均无需密钥;安装后即可立即运行
- **批量输入** —— 通过 stdin 管道传入目标列表或传递多个参数
- **三种输出格式** —— `table`(表格)、`json` 和 `text`(每行一个结果,便于管道处理)
- **PAP 系统** —— Permissible Actions Protocol(允许操作协议,RED/AMBER/GREEN/WHITE)防止意外的主动交互
- **代理支持** —— HTTP、HTTPS 和 SOCKS5 代理;自动遵循 `HTTP_PROXY`/`HTTPS_PROXY` 环境变量
- **自动去敏** —— 在严格的 PAP 级别下,URL 和 IP 会被自动去敏(Defang)
- **速率限制** —— 每个服务配备带抖动的令牌桶速率限制器,以避免可检测的请求模式
- **并发处理** —— 可配置的工作池,用于快速批量查询
- **跨平台** —— 单一二进制文件支持 Linux、macOS 和 Windows
## 服务
| 命令 | 描述 | PAP | 数据源 |
|---------|-------------|-----|-------------|
| `dns` | A, AAAA, MX, NS, TXT 记录;反向 PTR | GREEN | 直接 DNS 解析器 |
| `detect` | 通过实时 DNS 查询(CNAME, MX, NS, TXT)检测 CDN、邮件、DNS 托管和验证提供商 | GREEN | 直接 DNS 解析器 |
| `cymru` | IP 和 ASN 编号的 ASN 信息(IPv4 + IPv6) | AMBER | Team Cymru DNS |
| `crtsh` | 通过证书透明度进行子域名枚举 | AMBER | [crt.sh](https://crt.sh) |
| `threatminer` | 域名、IP 和文件哈希的威胁情报 | AMBER | [ThreatMiner](https://www.threatminer.org) |
| `pgp` | 按电子邮件、姓名或指纹搜索 PGP 密钥 | AMBER | [keys.openpgp.org](https://keys.openpgp.org) |
| `quad9` | 检测 Quad9 是否已将域名标记为恶意 | AMBER | [dns.quad9.net](https://www.quad9.net) |
| `apex` | 聚合多种记录类型和子域名的 DNS 侦察;CDN/邮件/DNS/TXT 检测和 ASN 查询 | AMBER | [dns.quad9.net](https://www.quad9.net), Team Cymru DNS |
| `identify` | 根据已知的 DNS 记录值(CNAME, MX, NS, TXT)识别 CDN、邮件、DNS 托管和验证提供商 | RED | 本地(无网络) |
## 输出格式
**表格(默认)** —— 格式化的 ASCII 表格,便于人类阅读:
```
trident dns example.com
trident cymru AS15169 -o table
```
**JSON** —— 结构化输出,用于脚本编写和集成:
```
trident dns example.com -o json
trident crtsh example.com -o json | jq '.subdomains | length'
```
**文本** —— 每行一个结果,便于管道传输:
```
trident crtsh example.com -o text | sort -u > subdomains.txt
trident dns example.com -o text | grep "^A "
```
## 批量输入
任何命令都接受多个目标作为参数或从 stdin 传入(每行一个):
```
# 多个参数
trident dns example.com google.com cloudflare.com
# 通过 stdin 从文件读取
cat targets.txt | trident crtsh
# 与其他工具结合使用
cat /etc/hosts | awk '{print $1}' | trident cymru
# 控制大列表的并发
cat ips.txt | trident cymru --concurrency=20
```
## PAP 系统
trident 实现了 [Permissible Actions Protocol (PAP)](https://www.misp-project.org/taxonomies.html#_pap)
以防止与目标发生意外的主动交互:
| 级别 | 含义 | 允许的服务 |
|-------|---------|-------------------|
| `red` | 仅离线/本地 —— 不可检测 | `identify` |
| `amber` | 受限的第三方 API —— 无直接接触目标 | `identify` + Cymru, crt.sh, ThreatMiner, PGP, Quad9, apex |
| `green` | 允许直接与目标交互 | 所有 AMBER 级别 + DNS, `detect` |
| `white` | 无限制 **(默认)** | 所有 |
设置 `--pap-limit` 以阻止高于该级别的服务:
```
# 仅使用 3rd-party API(不对目标进行直接 DNS 查询)
trident --pap-limit=amber crtsh example.com
# 这将报错 —— AMBER 超过 RED 限制
trident --pap-limit=red cymru 8.8.8.8
```
在 AMBER 及更低级别下,输出中的 URL 和 IP 会自动去敏(例如 `hxxp://`),除非
传递了 `--no-defang`。
## 配置
配置文件在首次运行时自动创建:
| 平台 | 默认路径 |
|----------|-------------|
| Linux | `$XDG_CONFIG_HOME/trident/config.yaml`(通常为 `~/.config/trident/config.yaml`) |
| macOS | `~/Library/Application Support/trident/config.yaml` |
| Windows | `%AppData%\trident\config.yaml` |
使用 `trident config set` 在不打开文件的情况下修改值,或使用 `trident config edit`
直接编辑。配置文件支持所有全局参数以及 `alias` 块和 `detect_patterns` 部分:
```
output: json
pap_limit: amber
concurrency: 20
proxy: socks5://127.0.0.1:9050
detect_patterns:
url: https://example.com/custom-patterns.yaml # optional: override download URL
file: /path/to/patterns.yaml # optional: use this file instead of defaults
alias:
asn: cymru
```
环境变量使用 `TRIDENT_` 前缀覆盖配置文件值:
| 变量 | 对应参数 / 键 |
|----------|--------------------------|
| `TRIDENT_OUTPUT` | `--output` |
| `TRIDENT_PAP_LIMIT` | `--pap-limit` |
| `TRIDENT_PROXY` | `--proxy` |
| `TRIDENT_USER_AGENT` | `--user-agent` |
| `TRIDENT_CONCURRENCY` | `--concurrency` |
| `TRIDENT_VERBOSE` | `--verbose` |
| `TRIDENT_DEFANG` | `--defang` |
| `TRIDENT_NO_DEFANG` | `--no-defang` |
| `TRIDENT_DETECT_PATTERNS_URL` | `detect_patterns.url` |
| `TRIDENT_DETECT_PATTERNS_FILE` | `--patterns-file` / `detect_patterns.file` |
当未设置 `--proxy` / `TRIDENT_PROXY` 时,trident 会自动遵循标准的 `HTTP_PROXY`、
`HTTPS_PROXY` 和 `NO_PROXY` 环境变量。
## 全局参数
| 参数 | 默认值 | 描述 |
|------|---------|-------------|
| `--config` | 平台配置目录 | 配置文件路径 |
| `--verbose`, `-v` | `false` | 启用调试日志 |
| `--output`, `-o` | `table` | 输出格式:`table`, `json`, `text` |
| `--concurrency`, `-c` | `10` | 批量输入的工作池大小 |
| `--proxy` | — | 代理 URL (`http://`, `https://`, `socks5://`) |
| `--user-agent` | `trident/` | HTTP User-Agent 标头 |
| `--pap-limit` | `white` | PAP 限制:`red`, `amber`, `green`, `white` |
| `--defang` | `false` | 强制输出去敏 |
| `--no-defang` | `false` | 禁用输出去敏 |
| `--patterns-file` | — | 用于 `detect`、`apex` 和 `identify` 的自定义检测模式文件 |
使用 `trident config show` 查看有效配置。
## 命令参考
### `dns` —— DNS 查询
解析域名的 A、AAAA、MX、NS 和 TXT 记录,或执行 IP 地址的反向 PTR 查询。直接查询配置的 DNS 解析器(PAP:GREEN)。
```
trident dns example.com
trident dns 8.8.8.8
trident dns 2001:4860:4860::8888
```
### `cymru` —— ASN 查询
通过 Team Cymru DNS 服务查询 IP 地址或 ASN 编号的 ASN 信息。同时支持 IPv4 和 IPv6(PAP:AMBER)。
```
trident cymru 8.8.8.8
trident cymru AS15169
trident cymru 2001:4860:4860::8888
```
### `crtsh` —— 证书透明度
搜索 [crt.sh](https://crt.sh) 证书透明度日志以查找域名的子域名
(PAP:AMBER)。
```
trident crtsh example.com
```
### `threatminer` —— 威胁情报
查询 [ThreatMiner](https://www.threatminer.org) API 获取上下文威胁情报。
自动检测输入是域名、IP 地址还是文件哈希。速率限制为每秒 1 个请求并带抖动,以避免触发 ThreatMiner 的速率限制(PAP:AMBER)。
```
trident threatminer example.com
trident threatminer 198.51.100.1
trident threatminer d41d8cd98f00b204e9800998ecf8427e
```
### `pgp` —— PGP 密钥搜索
使用 HKP 协议在 [keys.openpgp.org](https://keys.openpgp.org) 中按电子邮件地址、姓名或密钥指纹/ID 搜索 PGP 密钥(PAP:AMBER)。指纹和密钥 ID 必须以 `0x` 为前缀。
```
trident pgp alice@example.com
trident pgp "Alice Smith"
trident pgp 0xDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF
```
### `quad9` —— Quad9 威胁情报检查
使用来自 19+ 安全合作伙伴的威胁情报,检测 [Quad9](https://www.quad9.net) 是否已将域名标记为恶意(PAP:AMBER)。对于已知的恶意域名,Quad9 返回带有空授权部分的 NXDOMAIN,提供被动判定且不向目标域名透露查询信息。
```
trident quad9 malicious.example.com
trident quad9 example.com malicious.example.com
cat domains.txt | trident quad9
```
### `apex` —— 聚合 DNS 侦察
通过 [Quad9](https://www.quad9.net) DNS-over-HTTPS 解析器对顶级域名执行并行 DNS 侦察(PAP:AMBER)。将查询分散到顶级域名和大量众所周知的派生主机名 —— `www`、`autodiscover`、`mail`、`_dmarc`、`_domainkey`、`_mta-sts`、`_smtp._tls`、DKIM 选择器(`google._domainkey`、`selector1/2._domainkey`)、BIMI(`default._bimi`),以及 SIP 和 XMPP 的 SRV 前缀。的记录类型包括 A、AAAA、CAA、CNAME、DNSKEY、HTTPS、MX、NS、SOA、SSHFP、SRV 和 TXT。
收集记录后,`apex` 运行所有四个提供商检测器:
- **CDN** —— 来自 CNAME 目标(顶级链、www 和 email-security 子域名)
- **邮件提供商** —— 来自 MX 记录
- **DNS 托管** —— 来自 NS 记录
- **邮件提供商和验证令牌** —— 来自所有已查询主机名的 TXT 记录
最后,它为 A/AAAA 记录中发现的每个唯一 IP 执行 **ASN 查询**(通过 Team Cymru)。
```
trident apex example.com
trident apex example.com example.org
cat domains.txt | trident apex
trident apex --output json example.com
```
### `detect` —— 提供商检测
通过查询 CNAME(顶级和 www)、MX、NS 和 TXT 记录并将其与已知提供商模式匹配,检测一个或多个域名的 CDN、邮件、DNS 托管和域名验证提供商(PAP:GREEN)。与 `identify` 不同,此命令进行实时 DNS 查询以发现记录。
```
trident detect example.com
trident detect example.com google.com
cat domains.txt | trident detect
# 为此调用使用自定义 patterns 文件
trident detect --patterns-file /path/to/patterns.yaml example.com
```
### `identify` —— 离线提供商识别
将 CNAME、MX、NS 和 TXT 记录值与已知提供商模式匹配,以识别 CDN、邮件、DNS 托管和域名验证提供商。与 `detect` 不同,不进行 DNS 查询 —— 这完全基于您已有的记录值进行操作(PAP:RED)。
```
trident identify --cname abc.cloudfront.net
trident identify --domain example.com --ns ns1.cloudflare.com
trident identify --domain example.com --cname abc.cloudfront.net --mx aspmx.l.google.com --ns ns1.cloudflare.com
trident identify --txt "v=spf1 include:_spf.google.com ~all" --txt "google-site-verification=abc123"
# 为此调用使用自定义 patterns 文件
trident identify --patterns-file /path/to/patterns.yaml --cname abc.cloudfront.net
```
### `download detect` —— 更新提供商模式
从 URL 下载最新的提供商检测模式并保存在本地。下载的文件存储在配置目录中名为 `detect-downloaded.yaml`,并在下次运行时自动被 `detect`、`apex` 和 `identify` 选用。同一目录中用户维护的 `detect.yaml` 优先于下载的文件;当两个文件都不存在时,内置的嵌入模式作为最终后备。有关完整查找顺序,请参阅 [配置](#configuration) 部分。
```
# 从默认 URL(trident GitHub repository)下载
trident download detect
# 从自定义 URL 下载
trident download detect --url https://example.com/patterns.yaml
# 保存到自定义目标位置,而不是默认 config dir
trident download detect --dest /path/to/my-patterns.yaml
# 配置持久化自定义 URL
trident config set detect_patterns.url https://example.com/patterns.yaml
trident download detect
```
### `services` —— 列出所有服务
列出每个已实现的服务及其命令组、最低 PAP 级别(MIN PAP)和最高 PAP 级别(MAX PAP)。
对于单个服务,两个 PAP 列始终相等 —— 服务要么运行,要么被 `--pap-limit` 阻止,不存在部分行为。
对于聚合命令(如 `apex`),这两个值可能不同:MIN PAP 是产生任何有用输出所需的最低 PAP 级别;MAX PAP 是任何子服务所需的最高级别。当 `--pap-limit` 介于两者之间时,聚合命令会运行但跳过级别超过限制的子服务,返回在该 PAP 级别下能收集到的任何内容。
```
trident services
trident services -o json
trident services -o text
```
### `config` —— 配置管理
无需手动打开文件即可读取和写入配置文件值。
| 子命令 | 描述 |
|------------|-------------|
| `config path` | 打印配置文件路径 |
| `config show` | 显示所有有效配置设置 |
| `config get ` | 打印单个键的有效值 |
| `config set ` | 将键值对写入配置文件 |
| `config edit` | 在 `$EDITOR` 中打开配置文件 |
```
# 打印活动 config file 的路径
trident config path
# 显示所有有效设置(合并默认值 + env vars + file)
trident config show
trident config show -o json
# 读取单个设置
trident config get pap_limit
# 持久化一个设置(接受连字符和下划线)
trident config set output json
trident config set pap-limit amber
# 在 $EDITOR 中打开 config file(回退到 vi)
trident config edit
```
**限制:**
- `config show` 和 `config get` 报告的是*有效*值 —— 即合并内置默认值、`TRIDENT_*` 环境变量和配置文件后的结果。它们不显示文件中实际写入的内容。
- `config set` 写入文件但在**下一次调用**时生效;当前进程已在启动时加载了配置。
- `aliases` 部分不由 `config set` 管理 —— 请改用 `alias` 子命令。
- 仅接受已知的配置键(`output`、`pap_limit`、`proxy`、`user_agent`、`concurrency`、`verbose`、`defang`、`no_defang`、`detect_patterns.url`、`detect_patterns.file`)。
### `alias` —— 命令别名
定义可扩展为更长命令字符串的短名称。别名存储在配置文件中,并出现在 `trident --help` 的 *Aliases:* 下。
```
# 创建或更新 alias
trident alias set asn cymru
# 使用 alias —— 额外参数附加在扩展之后
trident asn 8.8.8.8
# 列出所有 alias
trident alias list
trident alias list -o json
# 删除 alias
trident alias delete asn
```
**限制:**
- 别名仅在其作为**第一个位置参数**出现时才会扩展。运行 `trident --verbose myalias` **不会**触发扩展,因为 `--verbose` 位于别名之前。
- 扩展按空白字符拆分存储的字符串 —— 别名扩展中不能嵌入包含空格的参数值。
- 无 Shell 特性 —— 扩展字符串中的环境变量替换、管道、通配符和引号均不会被解释。
- 别名不会递归扩展;别名扩展不能引用另一个别名。
- 别名名不能遮蔽内置命令(`dns`、`cymru`、`crtsh`、`threatminer`、`pgp`、`quad9`、`detect`、`identify`、`apex`、`services`、`config`、`alias`、`download`、`version`、`completion`)。
- 别名名不能以 `-` 开头或包含空白字符。
- 更改在下次调用时生效。
## 开发
### 要求
- Go 1.26+ (`go version`)
- [golangci-lint](https://golangci-lint.run/) v2 (`golangci-lint version`)
### Nix 开发 Shell
如果您使用 [Nix](https://nixos.org/),`nix develop` 提供 Go、golangci-lint 和 goreleaser:
```
nix develop
```
### justfile
[justfile](https://github.com/casey/just) 为常见任务提供了便捷的目标:
```
just build # Build all packages
just test # Run all tests with coverage
just test-pkg ./internal/services/dns/... # Test a specific package
just lint # Run golangci-lint
just tidy # Tidy and verify modules
just coverage # Check service coverage meets 80% threshold
just vuln # Run govulncheck
just ci # Run all CI checks locally
just goreleaser-check # Validate .goreleaser.yaml config
just upgrade-deps # Upgrade direct dependencies and run tests
just flake-build # Build the Nix package locally
just flake-check # Run Nix flake check
just flake-update # Update Nix flake inputs
just release # Tag next version with svu and push
```
### 构建与测试
```
# 构建
go build ./...
# 运行所有测试并生成覆盖率
go test ./... -coverprofile=coverage.out
go tool cover -func=coverage.out
# 运行特定服务的测试
go test ./internal/services/dns/... -v
# Lint(严格模式)
golangci-lint run
```
### 项目结构
```
cmd/trident/ # Entry point — delegates to cli.Execute()
internal/
cli/ # Cobra command tree, global flags, output wiring
config/ # Viper config loading and flag registration
httpclient/ # req.Client factory (proxy, UA rotation, debug tracing)
input/ # Line reader from io.Reader for stdin path
pap/ # PAP level constants and enforcement
doh/ # DNS-over-HTTPS client (Quad9 RFC 8484, shared by apex + quad9)
ratelimit/ # Token-bucket rate limiter with ±20% jitter
resolver/ # net.Resolver factory with SOCKS5 DNS-leak prevention
worker/ # Bounded goroutine pool for bulk input
services/ # One package per OSINT service
dns/ # DNS record lookups (net package, PAP: GREEN)
cymru/ # ASN lookups via Team Cymru DNS (PAP: AMBER)
crtsh/ # Certificate transparency via crt.sh (PAP: AMBER)
threatminer/ # Threat intel via ThreatMiner API (PAP: AMBER)
pgp/ # PGP key search via keys.openpgp.org (PAP: AMBER)
quad9/ # Quad9 threat-intelligence blocked check via DoH (PAP: AMBER)
detect/ # Active provider detection via DNS lookups (PAP: GREEN)
apex/ # Aggregate DNS recon via Quad9 DoH (PAP: AMBER)
identify/ # Offline provider detection from known record values (PAP: RED)
output/ # Text (tablewriter), JSON, text formatters + defang
testutil/ # Shared test helpers (mock resolver, nop logger)
```
## 负责任地使用
trident 专为在**经授权的环境中**使用而设计 —— 内部安全评估、您获准进行的红队演练,以及您拥有或被明确授权调查的基础设施上的 OSINT 研究。
**严禁恶意使用。** 请勿在未经授权的情况下使用 trident 查询系统或服务。滥用可能违反计算机欺诈法律和被查询 API 的服务条款。
默认情况下,trident 使用 `trident/` HTTP User-Agent 诚实地标识自己,以便服务器操作员能够识别并控制其流量。
## 贡献
欢迎贡献!有关开发设置、编码标准和 Pull Request 流程,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 安全
如需报告漏洞,请参阅 [SECURITY.md](SECURITY.md)。
## 行为准则
本项目遵循 Contributor Covenant v3.0。请参阅 [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)。
## 许可证
[GPL-3.0](LICENSE.md)
标签:ASN查询, CDN识别, CDN识别, DNS查询, DNS查询, ESC4, EVTX分析, GitHub, Golang, Go语言, Kali工具, OSINT, PGP搜索, UDP扫描, 二进制文件, 加密文件系统, 占用监测, 威胁情报, 子域名枚举, 安全编程, 实时处理, 开发者工具, 数据展示, 无API密钥, 日志审计, 程序破解, 系统安全, 红队, 证书透明度, 资产管理