KyleDerZweite/basalt
GitHub: KyleDerZweite/basalt
基于 Go 编写的关系型 OSINT 工具,通过 29 个专用模块对用户名、邮箱和域名进行深度扫描,构建跨平台数字足迹关联图谱。
Stars: 1 | Forks: 0
# Basalt
用于发现您的数字足迹的关系型 OSINT 工具。Basalt 针对 username、email 和 domain 运行 29 个专用模块,随后根据所有发现的内容构建关系图谱。
不同于那些使用 URL 模板向数千个站点发送请求的工具,Basalt 采用包含结构化 API 调用、HTML 抓取以及模块级健康检查的独立模块逻辑。每个模块为其自身计算置信度评分。不会因为通用的状态码匹配而产生误报。
**仅限自我查询和经授权的研究。** 在扫描任何您不拥有的标识符之前,您必须获得明确的同意。
## 安装
```
go install github.com/kyle/basalt@latest
```
或者从源码构建:
```
cd cli
go build -o basalt .
```
## 用法
```
# 扫描用户名
basalt scan -u kylederzweite
# 扫描电子邮件
basalt scan -e kyle@example.com
# 扫描域名
basalt scan -d kylehub.dev
# 同时扫描多个 seeds
basalt scan -u kyle -e kyle@example.com -d kylehub.dev
# 导出结果
basalt scan -u kyle --export json --export csv
# Verbose 模式(显示 module 健康详情)
basalt scan -u kyle -v
```
### 标志
| 标志 | 默认值 | 描述 |
|------|---------|-------------|
| `-u, --username` | | Username 种子(可重复) |
| `-e, --email` | | Email 种子(可重复) |
| `-d, --domain` | | Domain 种子(可重复) |
| `--depth` | `2` | 最大扩展深度 |
| `--concurrency` | `5` | 最大并发模块请求数 |
| `--timeout` | `10` | 单个模块超时时间(秒) |
| `--config` | `~/.basalt/config` | API 密钥配置文件路径 |
| `--export` | | 导出格式:`json`, `csv`(可重复) |
| `-v, --verbose` | `false` | 显示模块健康详情 |
### 输出
终端输出是一个按置信度评分排序的颜色编码表格(绿色 >= 0.80,黄色 >= 0.50)。
`--export json` 将完整的图谱(节点、边缘、元数据)写入带有时间戳的 JSON 文件中。
`--export csv` 将扁平化的节点列表写入带有时间戳的 CSV 文件中。
## 模块
横跨 8 个类别的 29 个模块:
| 类别 | 模块 | 种子类型 |
|----------|---------|------------|
| 身份信息 | Gravatar, Keybase | email, username |
| 开发/技术 | GitHub, GitLab, StackExchange, Docker Hub, DEV.to, Hacker News | username, email |
| 社交 | Reddit, YouTube, Twitch, Discord, Instagram, TikTok, Medium, Telegram | username |
| 个人主页 | Linktree, Beacons, Carrd, Bento | username |
| 通讯 | Matrix | username |
| 游戏 | Steam, OP.GG, Spotify | username |
| 域名 | WHOIS/RDAP, DNS/CT | domain |
| 基础设施 | Shodan, Wayback Machine, IPinfo | domain |
模块在扫描前会自检健康状态:
- **Healthy**:正常运行
- **Degraded**:可用,但置信度减半(频率限制、间歇性问题)
- **Offline**:完全跳过(API 宕机、缺少密钥)
## 工作原理
Basalt 使用 **响应式图谱遍历器**。没有分批或分阶段执行。执行顺序由数据流产生:
1. 将种子节点添加到图谱中
2. 并发分发所有能处理每种种子类型的模块
3. 当模块返回新节点(email、username、domain)时,这些节点将被反馈给遍历器
4. 此过程将持续进行,直到达到最大扩展深度或未发现新的可扩展节点
每个模块独立决定提取的内容及分配的置信度。遍历器负责去重、并发限制和深度跟踪。
## 配置
API 密钥存放在 `~/.basalt/config` 中(或通过 `--config path` 指定):
```
GITHUB_TOKEN=ghp_xxxxxxxxxxxx
```
GitHub 即使没有 token 也能工作,但请求速率限制较低。所有其他模块均无需 API 密钥即可工作。
## 法律声明
此工具仅查询可公开访问的 endpoint。无身份验证绕过,无私有数据访问。
- GDPR:仅扫描您拥有或获得明确授权搜索的标识符
- 内置速率限制并按域名强制执行
- 代理支持旨在保护隐私,而非用于规避
## 许可证
[AGPLv3](LICENSE):如果您在网络服务中使用 Basalt,您必须共享您的源代码。
标签:DFIR, ESC4, ESC8, EVTX分析, Go语言, OSINT, Unix, 信息泄露监测, 关系图谱, 基线检查, 安全合规, 实时处理, 情报分析, 数字足迹, 数据导出, 日志审计, 用户名枚举, 用户画像, 社会工程学, 程序破解, 网络代理, 网络安全, 网络诊断, 自动化安全工具, 调查工具, 身份追溯, 邮箱查询, 隐私保护, 黑盒测试