Hackingdhruv/D-CIP
GitHub: Hackingdhruv/D-CIP
面向网络犯罪调查与数字取证团队的 AI 增强型案件管理平台,将数字证据自动转化为可操作的情报。
Stars: 1 | Forks: 0
D-CIP
数字网络情报平台
将数字证据转化为可操作的情报
| **🗂️ 调查管理** 案件工作区具备状态工作流、任务、置顶笔记,以及按案件划分角色的多用户团队分配功能。 **🔍 证据情报** 流式上传并带有增量 SHA-256 哈希校验,异步处理 pipeline(元数据 → OCR → 实体/关键词提取 → 时间线 → 搜索索引),以及只追加的监管链日志。删除操作始终为软删除——原始文件永远不会被移除。 **🧠 AI 助手** *(可选)* 基于范围的证据聊天功能,仅根据当前案件已处理的证据进行回答,为每一项声明引用具体的证据项,并在证据不足时明确指出。支持 OpenAI、任何兼容 OpenAI 的 endpoint 或本地 Ollama 模型运行——或者保持完全关闭状态。 | **🕸️ 实体关系图** 基于案件证据中的实体共现关系(电子邮件、IP、哈希、钱包、人员和组织通过共同出现而关联),构建交互式 React Flow 图表。 **📄 报告引擎** 跨 6 个模板的 9 种报告类型,可导出为 PDF、DOCX、HTML 或 JSON 格式,带有版本历史记录,并明确标记由 AI 生成的部分。 **🔔 监视列表与警报** 16 种 IOC 类型(电子邮件、域名、IP、加密货币钱包、文件哈希、IMEI 等)与每个新证据项自动匹配,提供按严重程度排序的警报和用户级通知。 **🔐 基于角色的访问控制** 五种角色,精细的 `resource:action` 权限,通过 FastAPI 依赖项在每个受保护的路由上强制执行——而不仅仅是在 UI 中隐藏。 |
完整功能列表
| 领域 | 功能 | |---|---| | **案件** | 状态工作流、任务跟踪、置顶笔记、活动源、团队分配、从文档导入 | | **证据** | 多格式上传(PDF、Office 文档、电子邮件、图像、压缩包),按需重新验证的 SHA-256 完整性校验,监管链,仅限软删除 | | **实体提取** | 基于 Regex 的 IOC(电子邮件、IPv4/IPv6、电话、域名、URL、MD5/SHA1/SHA256、BTC/ETH 钱包、IBAN、印度车牌),外加用于识别人物、组织和地点的 spaCy NLP | | **时间线** | 从证据中自动提取事件,手动创建事件,间隙/冲突/重复检测,合并与验证工作流 | | **搜索** | Ctrl+K 跨案件、证据、实体、笔记、任务和时间线事件的通用搜索;启用时,通过 OpenSearch 支持对证据内容的全文搜索 | | **AI** | 案件摘要、证据摘要、带有强制引用的基于范围的证据聊天,确定性加叙述性时间线分析 | | **报告** | 执行报告、详细报告、证据清单、时间线、监管链、实体情报、AI 发现、案件进展和活动报告 | | **监视列表与警报** | 精确/Regex/跨案件匹配,重复出现启发式算法,用户级通知源 | | **仪表板** | 执行、情报、运营和调查员视图 | | **管理** | 用户/角色/权限管理、会话撤销、审计日志搜索、系统健康状态、AI 配置、存储统计 |Vite · TypeScript · TailwindCSS"] end subgraph Backend["FastAPI Backend"] API["Routes → Services → Repositories → Models"] end subgraph Data["Datastores"] PG[("PostgreSQL
system of record")] REDIS[("Redis
broker · rate limit")] NEO4J[("Neo4j
provisioned")] OS[("OpenSearch
full-text search")] end WORKER["Celery Worker
evidence pipeline"] WEB -->|"HTTPS · httpOnly cookies"| API API --> PG API --> REDIS API --> NEO4J API --> OS REDIS -->|broker| WORKER WORKER --> PG WORKER --> OS ``` 前端仅通过 `/api/v1` 与 API 通信,并使用 httpOnly JWT cookie 进行身份验证。API 从不因后台工作而阻塞——证据处理被分发到 Celery,pipeline 独立运行,并在推进过程中更新证据记录的状态。Neo4j 已在技术栈中完成配置并进行了健康检查,但当前的实体关系图是直接通过 PostgreSQL 的实体共现计算得出的,而非基于图数据库查询——有关详细说明,请参阅 [`ARCHITECTURE.md`](ARCHITECTURE.md)。 ## 技术栈 | 层级 | 技术 | |---|---| | 前端 | React 19, Vite 5, TypeScript, TailwindCSS, shadcn/ui | | 数据获取 | TanStack React Query v5, React Router v6 | | 可视化 | Chart.js, React Flow | | 后端 | FastAPI 0.115+, Python 3.13 | | ORM / 数据迁移 | SQLAlchemy 2.x (同步), Alembic | | Schema 校验 | Pydantic v2 | | 任务队列 | Celery 5.4 + Redis 7 | | 数据库 | PostgreSQL 16 | | 图数据库 | Neo4j 5 Community *(已预配;尚未承载核心业务)* | | 全文搜索 | OpenSearch 2.17 *(可选,标志控制)* | | OCR | Tesseract + pytesseract | | NLP | spaCy (`en_core_web_sm`) | | AI | 任何兼容 OpenAI 的提供商,或本地 Ollama | | 容器化 | Docker, Docker Compose, NGINX | ## 界面截图 | 执行仪表板 | 案件工作区 | |---|---| |  |  | | AI 案件摘要 | |---| |  |
其余截图(证据与时间线、实体图、报告)——待定
| 证据与时间线 | 实体图 | 报告 | |---|---|---| | `docs/screenshots/timeline.png` | `docs/screenshots/graph.png` | `docs/screenshots/reports.png` |不使用 Docker 运行
**后端:** ``` cd apps/api uv sync uv run alembic upgrade head uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` **Worker**(在单独的终端中): ``` cd apps/api uv run celery -A app.worker.celery_app worker --loglevel=info ``` **前端**(在单独的终端中): ``` cd apps/web pnpm install pnpm dev ```展开完整树状结构
``` dcip/ ├── apps/ │ ├── api/ FastAPI backend │ │ ├── app/ │ │ │ ├── api/v1/routes/ 18 route modules │ │ │ ├── core/ Config, auth, security, middleware, DI │ │ │ ├── db/ SQLAlchemy + Neo4j/Redis/OpenSearch clients │ │ │ ├── models/ SQLAlchemy models │ │ │ ├── repositories/ Data access layer │ │ │ ├── schemas/ Pydantic v2 schemas │ │ │ ├── services/ Business logic │ │ │ ├── storage/ File storage backend (local, S3-ready) │ │ │ └── worker/ Celery app + evidence/watchlist tasks │ │ ├── alembic/versions/ 9 migrations │ │ └── tests/ unit/ + integration/ │ │ │ ├── web/ React 19 + Vite SPA │ │ └── src/ │ │ ├── components/ Reusable UI (admin, auth, dashboard, reports, ui, ...) │ │ ├── contexts/ Auth context, permission hooks │ │ ├── hooks/ React Query hooks, one file per domain │ │ ├── lib/api/ Typed API client modules │ │ ├── pages/ Route-level page components │ │ └── types/ TypeScript interfaces │ │ │ └── worker/ Celery worker container definition │ ├── packages/ Shared TS packages (types, RBAC matrix, UI tokens, config) ├── infrastructure/ │ ├── docker/ docker-compose.yml (dev + prod profiles) │ └── nginx/ Edge proxy + SPA server configs ├── database/ Postgres extensions, Neo4j/OpenSearch connection config ├── docs/ Architecture, installation, and development guides ├── ARCHITECTURE.md Full technical reference └── README.md ```stream + SHA-256] --> B[Metadata
EXIF/GPS] B --> C[OCR / Text
extraction] C --> D[Entity + Keyword
extraction] D --> E[Timeline
extraction] E --> F[Search
indexing] F --> G[AI Summary
optional] G --> H[Completed] ``` - **文本与 OCR** — 按格式(PDF、DOCX、XLSX、EML)提取原生文本,对于图像和无文本 PDF,则回退到 Tesseract OCR 进行处理。 - **实体提取** — 使用确定性的 Regex 提取结构化 IOC,并在安装了模型的情况下,结合 spaCy NLP 提取人员、组织和位置信息。 - **时间线提取** — 基于 Regex 的日期/事件检测,以幂等方式镜像到案件的规范时间线中。 - **AI 摘要与聊天** — 完全可选。当设置 `AI_PROVIDER=none`(默认值)时,每个 AI 功能都会干净地短路——pipeline 依然会达到 `COMPLETED` 状态,并且聊天会返回一条普通的“AI 未配置”消息,而不是抛出错误。启用后,每个响应都受到系统 prompt 的约束,要求对每一项声明提供证据引用,并在证据不足时明确回复“我没有足够的证据”的兜底逻辑。 - **监视列表匹配** — 在实体提取后立即作为独立任务运行,针对每个活动的监视列表检查新实体,并向案件成员发送警报。 ## 安全功能 | 控制措施 | 实现方式 | |---|---| | 身份验证 | httpOnly cookie,短期 JWT 访问令牌(始终为 15 分钟),轮换的刷新令牌 | | 授权 | 在每个受保护的路由上声明 `RequirePermission()` FastAPI 依赖项 | | 证据完整性 | 在流式上传期间计算 SHA-256,可按需重新验证,不可篡改的监管链日志 | | 频率限制 | 基于 Redis 的 `slowapi` 限制(登录 10次/分钟,重置密码 5次/分钟,默认 120次/分钟) | | 安全头 | CSP, `X-Frame-Options: DENY`, `X-Content-Type-Options: nosniff`, `Referrer-Policy` | | 生产环境防护 | 当 `DCIP_ENV=production` 时,如果使用占位符 `SECRET_KEY` 或 `AUTH_COOKIE_SECURE=false`,启动将失败 | | API 文档 | 在非生产环境之外禁用 | | 审计追踪 | 身份验证事件、案件活动和证据监管链均记录了操作者、时间戳和上下文 | 如需报告安全漏洞,请联系:**adlakhadhruv20@gmail.com** ## 测试 ``` cd apps/api uv run pytest # full suite uv run pytest --cov=app --cov-report=term-missing uv run pytest tests/unit/ # unit only uv run pytest tests/integration/ # integration only ``` **428 项后端测试**,全部通过——包括针对模拟会话的服务层单元测试,以及通过 `TestClient` 进行的路由层集成测试。 ``` cd apps/web pnpm test # Vitest unit tests pnpm test:e2e # Playwright end-to-end npx tsc --noEmit # type check ``` ## 路线图
阶段 2
- 多因素身份验证 (TOTP) - SSO / SAML 2.0 / Active Directory - 兼容 S3 的证据存储(MinIO / AWS S3 / Azure Blob) - API 启动时自动运行迁移程序阶段 3
- IOC 扩展(VirusTotal、Shodan、WHOIS) - SIEM 集成(Splunk、Microsoft Sentinel、IBM QRadar webhooks) - 用于现场报告的移动端配套应用程序 - 浏览器内 PDF / 图像预览 - 原生 Neo4j 支持的关系图
*D-CIP — 将数字证据转化为可操作的情报*
标签:AI辅助分析, AV绕过, FastAPI, React, Syscalls, 搜索引擎查询, 数字取证, 案件管理, 网络犯罪调查, 自动化脚本, 证据链管理, 请求拦截, 负责任AI