thunderstornX/forenix-oss
GitHub: thunderstornX/forenix-oss
forenix-oss是一个开源平台,整合OSINT与取证工作流,将公开情报转化为可验证的法庭证据。
Stars: 0 | Forks: 0
forenix/oss
首个发现,即可呈堂的开源情报。
**一个将开源情报调查与 Git 式取证案件管理融合的开源平台。从公开情报线索到证据监管链,一个完整的工作流程——每次状态变更都附带 SHA-256 向前链式审计日志。**
## 这是什么
如今的调查员依赖于两个割裂的工具链。OSINT 一侧是 Maltego、SpiderFoot、Hunchly,外加一堆 CLI 工具(sherlock、theHarvester、holehe 等)。取证一侧是 EnCase、AXIOM、Cellebrite、Relativity。**两者之间的衔接是手动的**——分析员在公开网络上发现线索,导出截图,通过电子邮件发送给案件团队,然后有人将哈希值记录到 Excel 表格中。
forenix-oss 将这两半整合到一个应用中:
- **每个案件一个真实的 Git 仓库**——每次状态变更都是一次提交;审查者可以独立克隆并 `git log` 查看案件历史。
- **一个由 LLM 编排的工具运行器**,集成了 20 种 OSINT 工具(sherlock、maigret、subfinder、httpx、dnsx、amass、nuclei、exiftool、yt-dlp、tesseract、gowitness、crt.sh、WHOIS、Shodan、Hunter、HIBP、theHarvester、holehe、DuckDuckGo、通用 HTTP 抓取)。
- **结构化分析技术(SAT)基础**——每个发现都带有 Coulthart/Heuer 追踪(关键假设检查、ACH 矩阵、指标、可信度),LLM 被强制填充这些内容。
- **一个可离线验证的加密审计链**,仅需 12 行 Python 代码。
MIT 许可证。便于自托管。
## 三条路径
同一代码库以三种形式提供。选择符合你需求的一种。
| 路径 | 现场地址 | 目标受众 | 内容描述 | 快速开始 |
|---|---|---|---|---|
| **OSS 核心** (MIT) | _您自行托管_ | 自托管者、评估者、集成商 | 所有分析师功能,除 Claude 外的所有适配器,每个案件的真实 Git,完整的子进程工具链,定时监控 + 证明 | [`docs/OSS_INSTALL.md`](docs/OSS_INSTALL.md) |
| **概念 + 候补名单** | [forenix.tech](https://forenix.tech) | 公众 | 营销网站 + 无服务器概念演示(模拟适配器)。访客阅读介绍并 **加入付费 SaaS 的候补名单** | [`docs/VERCEL_DEPLOY.md`](docs/VERCEL_DEPLOY.md) |
| **付费 SaaS** | [demo.forenix.tech](https://demo.forenix.tech) | **仅限邀请/注册**(需要候补名单审批) | OSS 核心 **+ 私有 SaaS 层**(Claude 适配器、多租户组织、计费、SSO、PDF 导出、高级 OSINT 适配器)。高级代码不在此仓库中 | [`docs/SAAS.md`](docs/SAAS.md) |
客户旅程是 **forenix.tech → 候补名单 → 管理员审批 → demo.forenix.tech**。
OSS 核心和 Vercel 概念演示直接从此仓库运行。
付费 SaaS 是通过在部署时将此仓库与私有层(`forenix-saas`)组装而成;该层添加了高级功能但从不改变 OSS 行为。完整契约参见 [`docs/SAAS.md`](docs/SAAS.md)。
[](https://vercel.com/new/clone?repository-url=https://github.com/thunderstornX/forenix-oss)
### 实时部署
| 表面 | URL | 运行内容 |
|---|---|---|
| 概念 + 候补名单 (Vercel) | [forenix.tech](https://forenix.tech) | 营销 + 概念演示。模拟适配器,HTTP-API 工具,确定性 Git 回退。公开。此表面的候补名单是通往付费 SaaS 的入口。 |
| 付费 SaaS (DigitalOcean) | [demo.forenix.tech](https://demo.forenix.tech) | 实际产品。仅限邀请/注册。完整构建,通过 OpenRouter 的真实 LLM,真实 OSINT 工具链,每个案件的真实 Git,文件字节级监管。 |
## 核心功能
| | |
|---|---|
| **每个案件一个 Git 仓库** | 底层使用 isomorphic-git。真实的提交、分支、合并(带冲突检测)。无需应用运行即可克隆和审计。 |
| **SHA-256 向前链式审计** | 每次状态变更都是一个哈希链接的条目。可离线验证;无法在未被察觉的情况下被静默篡改。 |
| **LLM 编排的 OSINT 流水线** | 可插拔适配器;LLM 选择运行 20 个工具中的哪个,捕获真实工具输出,并强制为每个发现生成基于 SAT 的推理追踪。 |
| **API 密钥的管理保险库** | 静态存储使用 AES-256-GCM 加密。只有在管理员设置后,高级 API 密钥(Shodan、Hunter、HIBP)才会注入工具调用。绝不包含在客户端包中。 |
| **团队 + RBAC** | 工作区隔离,基于角色的访问(管理员/调查员/分析师),邀请流程,签名审计归因。 |
| **证据分支上的合并请求** | 在合并到 `main` 之前审查变更内容——与代码审查模式相同,应用于取证状态。 |
完整导览及截图:[`docs/FEATURES.md`](docs/FEATURES.md)。
## 着陆页面
[forenix.tech](https://forenix.tech) 的营销页面被设置为一份法律风格的单页文档:编号章节、首字母下沉、旁注、脚注、附件,监管链验证器作为实时读出器显示。提供浅色和深色主题。
请愿表(候补名单)和已接纳方登录采用相同的语调:
## 快速开始
```
bun install
cp .env.example .env
bun run db:push # creates the SQLite dev database
bun run db:seed # populates a sample case + audit chain
bun run dev # serves at http://localhost:3000
```
默认情况下,应用使用 `AI_ADAPTER=mock`——确定性的存根输出,无需 API 密钥,所有功能可见。
### 连接真实的 LLM
选择一个(或多个——适配器可以按请求覆盖):
```
# OpenAI-compatible providers - one of:
AI_ADAPTER=ollama # local, free
AI_ADAPTER=groq # free tier, no card
AI_ADAPTER=openrouter # one key, many models (incl. free tier)
AI_ADAPTER=nvidia # NIM endpoint
AI_ADAPTER=claude # Anthropic
AI_ADAPTER=glm # Z.ai
# Then the corresponding key/model - see each adapter's docstring
# in src/lib/ai/adapters/ for the env-var contract.
```
在 API 端点进行单次覆盖:
```
curl -X POST -H "content-type: application/json" \
-d '{"agentGroups":["identity","social"],"adapter":"openrouter"}' \
http://localhost:3000/api/pipeline/run/
```
### 连接深层子进程工具链(自托管)
除了在 Vercel 等所有环境都能工作的 HTTP-API 工具外,平台在真实主机上运行时会调用 10 个开源子进程工具:
```
# Python tools
pip install sherlock-project holehe theHarvester maigret yt-dlp
# Go tools (ProjectDiscovery + amass + gowitness)
go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install github.com/projectdiscovery/httpx/cmd/httpx@latest
go install github.com/projectdiscovery/dnsx/cmd/dnsx@latest
go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
go install github.com/owasp-amass/amass/v4/cmd/amass@latest
go install github.com/sensepost/gowitness@latest
# System packages
apt install exiftool tesseract-ocr chromium-browser
```
安装并添加到 PATH 后,工具注册表会自动将它们暴露给 LLM。在 Vercel 上,它们会被透明地跳过(平台回退到纯 API 工具)。
## 内含物
20 个 OSINT 工具集成到注册表,15 个生产视图,23+ 个 API 路由,7 个 AI 适配器,一个合并的 Prisma schema,一个经加密证明的审计日志。
| 视图 | 解决的问题 |
|---|---|
| **仪表板** | 将两种工作流(OSINT + 取证)呈现在一个屏幕上 |
| **调查** | OSINT 收集工作区 + 每次调查的发现 |
| **流水线** | 运行 LLM 编排的多工具扫描,并一键将发现桥接到案件 |
| **案件** | 带分支图历史的取证案件管理器 |
| **证据** | 每个项目的清单 + 监管链 |
| **分支图** | 每个案件上证据的 Git 式提交历史 |
| **实体图** | 每次调查的 OSINT 实体 + 关系图 |
| **网络图** | 跨案件的知识图谱 |
| **监控** | 对高价值目标的周期性重新运行 |
| **验证** | 声明级别的判定(真/可能/未验证/有争议/假) |
| **AI 实验室** | 每个代理运行的可见性 + 重运行控制 |
| **报告** | 分章节的 JSON + Markdown 调查/案件报告 |
| **审计日志** | 完整的哈希链日志,附带离线验证器 |
| **完整性** | 一键链式验证 + 篡改检测 |
| **审查** | 证据分支上的合并请求审查 |
| **团队 + 管理** | 工作区 + 角色管理 + 加密的 API 密钥保险库 |
带截图及各视图**不**声称功能的详细导览:[`docs/FEATURES.md`](docs/FEATURES.md)。
## AI 适配器
| 适配器 | 成本 | 用例 |
|---|---|---|
| `mock` | 免费 | 默认。用于开发和 Vercel 概念演示的确定性种子输出。 |
| `ollama` | 免费 | 本地 LLM(任何具备工具能力的 Llama 类模型)。 |
| `groq` | 免费层,无需信用卡 | 低延迟托管推理;适合快速演示。 |
| `openrouter` | 免费 + 付费 | 一个密钥,多个模型——包括具有慷慨限额的免费层模型。 |
| `nvidia` | 免费开发层 + 付费 | NVIDIA NIM 兼容端点。 |
| `claude` | 付费 | Anthropic Claude(由 SaaS 门控)。 |
| `glm` | 免费层 | Z.ai GLM 系列。 |
所有适配器共享 OpenAI 兼容的聊天完成接口契约;添加第七个只需一个文件——参见 [`src/lib/ai/adapters/`](src/lib/ai/adapters/) 了解结构。
## 审计链
每个审计行包含:
```
hash = sha256( prevHash | action | entity | entityId | iso(createdAt) )
```
`verifyAuditChain()` 按插入顺序重放整个日志,若遇篡改则大声报错。加密方法可离线复现:
```
import csv, hashlib
GENESIS = "0" * 64
prev = GENESIS
for r in csv.DictReader(open("audit.csv")):
h = hashlib.sha256("|".join([
prev, r["action"], r["entity"], r["entityId"] or "",
r["createdAt"]
]).encode("utf-8")).hexdigest()
assert r["prevHash"] == prev and r["hash"] == h, f"BROKEN at {r['id']}"
prev = r["hash"]
print("chain OK")
```
完整安全态势 + 威胁模型:[`docs/07-SECURITY.md`](docs/07-SECURITY.md)。
## 文档包
适用于工程师、审计员、设计合作伙伴和好奇者:
- [BRD - 业务需求](docs/01-BRD.md)
- [SRS - 软件需求](docs/02-SRS.md)
- [SDS - 软件设计](docs/03-SDS.md)
- [DFD - 数据流图](docs/04-DFD.md)
- [部署计划](docs/05-DEPLOYMENT.md) | [Vercel 特定说明](docs/VERCEL_DEPLOY.md)
- [架构 ADR](docs/06-ARCHITECTURE.md)
- [安全 + 威胁模型](docs/07-SECURITY.md)
- [API 参考](docs/08-API.md)
- [操作手册](docs/09-RUNBOOK.md)
- [分析框架 - SAT + 代理组](docs/10-ANALYTIC_FRAMEWORK.md)
- [工具栈 - 每个集成的工具](docs/11-TOOL_STACK.md)
- [诚实的问题契合度评估](docs/12-PROBLEM_FIT.md)
- [功能目录](docs/FEATURES.md)(附截图)
- [单页概览](docs/ONE_PAGER.md) | [演示脚本](docs/DEMO_SCRIPT.md)
- **[用户手册 (PDF)](docs/USER_MANUAL.pdf)** | [Markdown 源文件](docs/USER_MANUAL.md)
- **[操作指南 (PDF)](docs/HOW_TO.pdf)** | [Markdown 源文件](docs/HOW_TO.md)
## 技术栈
Next.js 16 (App Router, Turbopack) | TypeScript 严格模式 | Tailwind 4 | Prisma 6 (开发用 SQLite,生产用 Postgres) | Zustand + persist | TanStack Query 5 | isomorphic-git | next-auth v5 | lucide-react | sonner | Bun 作为运行时。
## 仓库布局
```
src/
app/
api/ # 23+ route handlers (health, investigations,
# pipeline, bridge, findings, cases, evidence,
# audit, reviews, admin vault, ...)
layout.tsx # design-token-driven shell
page.tsx # SPA shell with ?view= deep-link support
globals.css # OKLCH design tokens + fx-* primitives
sign-in/ # invite-only credentials sign-in
components/
command-palette.tsx
layout/ # sidebar, topbar (light/dark, accent picker)
views/ # one file per top-level view
lib/
ai/
types.ts # adapter wire contract
adapter.ts # factory
chat-completions.ts
adapters/ # mock, ollama, glm, claude, openrouter, nvidia, groq
sat-prompts.ts # per-agent-group SAT-grounded system prompts
tool-loop.ts # multi-step tool-use loop
tools/
types.ts # tool contract (OpenAI function-calling shape)
runner.ts # subprocess + HTTP dispatchers
registry.ts # 20 tools wired
catalogue/ # one file per tool adapter
audit.ts # appendAudit + verifyAuditChain
audit-chain.ts # pure SHA-256 helpers
git-engine.ts # isomorphic-git per case
vault.ts # AES-256-GCM API-key vault
theme.tsx # light/dark + accent + density
db.ts # Prisma client singleton
hooks.ts # TanStack Query hooks
store.ts # Zustand UI store + nav registry
prisma/
schema.prisma # SQLite (dev)
schema.postgres.prisma# Postgres (prod / Vercel)
seed.ts # seed with valid hash-chained audit log
scripts/
manual_screenshots.mjs # capture every view via Playwright
docs/
banner.svg
01-BRD.md ... 12-PROBLEM_FIT.md
FEATURES.md | ONE_PAGER.md | DEMO_SCRIPT.md | HOW_TO.md
manual_screenshots/ # current screenshot set
pitch/ # YC deck (pptx + pdf)
```
## 开放核心 / 高级功能分离
| 层级 | 分发方式 | 包含内容 |
|---|---|---|
| **核心 (MIT)** | 自托管 / `bun run` | 所有分析师功能,全部 7 个适配器,哈希链审计,分支图,完整性验证器,完整的工具注册表。 |
| **团队** (计划中) | 托管单租户 | 托管式 Postgres + 备份 + 仪表板 + 电子邮件支持。 |
| **SaaS 高级版** (计划中) | 托管多租户 | 组织隔离,SSO,使用量计量,高级 OSINT 数据源,PDF 导出。 |
| **企业版** (计划中) | 物理隔离/年度 | 定制适配器,管辖区内托管,SOC 2 认证。 |
`SAAS_MODE=true` 是**唯一**的高级功能开关——无论是否设置,核心路径的运行方式都完全相同。
## 路线图
- [x] 阶段 1 - 基础:适配器模式,合并 schema,种子数据,应用外壳,3 个 API 路由
- [x] 阶段 2 - 调查 + 案件详情,包含完整 CRUD + 分析员操作
- [x] 阶段 3 - 流水线运行器 + 桥接 + 7 个 AI 适配器
- [x] 阶段 4 - 证据监管链 UI + 完整性仪表板
- [x] 阶段 5 - 统一实体/网络图
- [x] 阶段 6 - AI 实验室,监控,验证
- [x] 阶段 7 - 报告查看器 + 实时适配器测试
- [x] 阶段 8 - 真实 Git 引擎 (isomorphic-git) + 结构化 SAT 提示 + 20 工具注册表 + AES 加密管理保险库 + 浅色/深色主题重设计
- [x] 阶段 9.1 - 文件字节证据存储(内容寻址磁盘存储,真实的字节级 SHA-256,原子去重,字节级验证端点,流式下载)
- [x] 阶段 9.2 - 可采纳案件报告的 PDF 导出(监管链证明块,证据清单,发现摘要,审计日志示例,嵌入式报告摘要)
- [ ] 阶段 9.3 - 定时监控 | 多租户组织 | WebSocket 实时更新
## 许可证
MIT。由 [Ali Murtaza Bhutto](https://github.com/thunderstornX) 构建和维护。标签:ESC4, OSINT, 公共数据, 加密技术, 取证工具, 安全调查, 开源平台, 情报分析, 情报收集, 数字取证, 法庭证据, 法律科技, 漏洞研究, 网络安全, 网络诊断, 自动化攻击, 自动化脚本, 证据保全, 证据管理, 证据链, 隐私保护