YONKO-SID/indelible

GitHub: YONKO-SID/indelible

基于 DWT+QIM 数字隐写与 AI 内容识别的版权保护平台,提供水印嵌入、盗版监测、区块链存证与 DMCA 维权自动化的一体化方案。

Stars: 1 | Forks: 2

# INDELIBLE **取证即服务 (FaaS) — 抗压缩数字水印与 AI 盗版检测** INDELIBLE 使用经典的信号处理技术 (DWT + QIM) 将经过密码学签名的不可见水印嵌入到图像和视频中。当出现盗版副本时,平台会提取水印、验证 HMAC 签名、通过唯一的 `INDL-XXXX-XXXX-XXXX` 指纹识别原始创作者,并使用 Gemini 2.5 Flash 自动生成 DMCA 下架通知。 ## 工作原理 ``` 1. PROTECT ──▶ User uploads media → High-Redundancy DWT-LL embeds signed payload → Anchored to Polygon Blockchain → PNG returned 2. WATCHDOG ──▶ Background daemon scans web → pHash matches BK-Tree? → DWT extracts proof → Push alert 3. ENFORCE ──▶ Gemini drafted DMCA notice → Enterprise legal response triggered 4. MANUAL ──▶ Direct upload of suspect copy → Fast cryptographic verification ``` ### 核心 Pipeline ``` Image → YCrCb (extract Y) → Haar DWT → LL subband → Massive Redundancy QIM (delta=80) → Inverse DWT → Clip to uint8 → Save as PNG + Blockchain TX hash ``` payload 为:`CreatorFingerprint (padded) | UTC Timestamp | HMAC-SHA256 (truncated)`,经过 Reed-Solomon 编码 (nsym=128) 以实现卓越的纠错能力。 ## 架构 ``` ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Flutter │────▶│ FastAPI │────▶│ Python DSP │ │ Dashboard │◀────│ Alerts API │◀────│ + BK-Tree │ └──────────────┘ └──────────────┘ └──────────────┘ │ ▲ ▲ ▼ │ │ Firebase Auth Monitoring Daemon pHash Filter Index (Automated Scraper) (pybktree Search) ``` ## 技术栈 | 层级 | 技术 | 用途 | |-------|-----------|---------| | 前端 | Flutter + Dart | 跨平台 UI | | 状态 | Riverpod | 响应式状态管理 | | 认证 | Firebase Auth | 邮箱 + Google Sign-In | | API | FastAPI + Uvicorn | HTTP endpoint,文件服务 | | DSP | OpenCV, PyWavelets, NumPy | DWT、DCT、QIM 水印嵌入 | | 加密 | hmac, hashlib, reedsolo | HMAC-SHA256 + Reed-Solomon ECC | | AI | google-genai (Gemini 2.5 Flash) | 多模态盗版检测 | | 视频 | FFmpeg (subprocess) | 帧 extraction 与拼接 | | 爬取 | httpx, BeautifulSoup4 | Web 内容爬取 | | 索引 | imagehash, pybktree | pHash 相似度搜索 (BK-Tree) | ## 项目结构 ``` indelible/ ├── backend/ │ ├── core/ │ │ ├── watermark.py # DWT+QIM embed/extract engine │ │ ├── payload.py # HMAC + Reed-Solomon crypto │ │ ├── ai_engine.py # Gemini 2.5 piracy classifier │ │ ├── scraper.py # Web scraper with fallback │ │ ├── video_processor.py # FFmpeg frame extraction │ │ └── bktree_index.py # Perceptual hash indexing │ ├── main.py # FastAPI server & endpoints │ ├── outputs/ # Protected files served here │ ├── creator_registry.json # Fingerprint ↔ UID mapping │ └── .env # GEMINI_API_KEY (not committed) ├── lib/ │ ├── main.dart │ └── src/ │ ├── config/themes/app_colors.dart │ ├── screens/ │ │ ├── sections/ │ │ │ ├── top_app_bar.dart │ │ │ ├── hero_section.dart │ │ │ ├── quick_actions.dart # File upload + API calls │ │ │ ├── stats_grid.dart │ │ │ ├── recent_assets_list.dart │ │ │ └── recent_activity_list.dart │ │ ├── intro_screens/ # Animated GPU onboarding screens │ │ ├── layouts/ │ │ │ └── dashboard_layout.dart # Sliding Matrix4 sidebar shell │ │ ├── login_screen.dart │ │ └── home_screen.dart │ └── services/auth_service.dart ├── LEARNING_GUIDE.md # Deep technical reference (read this!) ├── ROADMAP.md # Phase breakdown & status └── PROJECT_STATUS.md # Current completion tracker ``` ## 快速开始 ### 前置条件 - Flutter SDK 3.9+ - Python 3.10+ - PATH 中包含 FFmpeg - 启用了 Auth 的 Firebase 项目 ### 后端 ``` cd backend python -m venv .venv .venv\Scripts\activate # Windows pip install -r requirements.txt # 使用你的 Gemini key 创建 .env echo GEMINI_API_KEY=your_key_here > .env # 启动服务器 python -m uvicorn main:app --reload ``` ### 前端 ``` flutter pub get flutter run -d chrome ``` ### 生产环境部署 (Docker & Railway) 后端依赖大量的系统库 (`ffmpeg`, `libgl1`),必须使用 **Docker** 进行部署。 1. 提交 `backend/Dockerfile` 和 `backend/requirements.txt`。 2. 前往 **Railway.app**,创建一个新项目,并选择 "Deploy from GitHub repo"。 3. 在服务的 **Settings → Build → Root Directory** 下,输入 `/backend`。 4. Railway 将自动构建容器并提供一个永久的 HTTPS 域名。 5. 在 Flutter 中使用您新的 Railway URL 更新 `lib/src/services/api_service.dart`。 ## API Endpoint | 方法 | Endpoint | Body | 返回值 | |--------|----------|------|---------| | POST | `/protect` | `file` (multipart) + `user_uid` (form) | `creator_fingerprint`, `download_url`, `pHash_indexed` | | GET | `/alerts/{user_uid}` | — | 实时盗版检测结果与 DMCA 草案 | | POST | `/verify` | `file` (multipart) | `status` (match_found/no_match), `proof_report` | | POST | `/scan-piracy` | `url` (form) | `ai_analysis`, `legal_notice_draft` | | GET | `/download/{filename}` | — | 二进制文件下载 | ## 核心算法 - **DWT (Haar)** — 将图像分解为频率子带;我们利用 **LL 子带**以获得最大的稳定性。 - **大规模冗余 QIM (delta=100)** — 通过量化*每一个* LL 系数来嵌入比特,从而能够通过多数投票从噪声中恢复数据。 - **HMAC-SHA256** — 使用密钥生成不可伪造的签名(为了压缩而截断为 16 字节)。 - **Reed-Solomon (nsym=128)** — 纠正提取出的 payload 中多达 64 个字节的错误(约 32% 的纠错阈值)。 - **鲁棒的缩放与网格搜索验证** — 尝试从 0.80 到 1.00 的缩放因子和平移偏移量,以处理裁剪和调整大小后的扩展,并带有快速失败的锚点比特预检。 - **区块链锚定** — 在 Polygon 网络上提供不可篡改的“数学监管链”。 - **SHA-256 指纹生成** — 从 Firebase UID 派生出确定性的 `INDL-XXXX-XXXX-XXXX`。 ## 许可证 黑客松项目 — 仅供教育使用。未经安全审计,不具备生产环境可用性。 ## 致谢 - QIM:Chen & Wornell,"Quantization Index Modulation for Digital Watermarking" - Reed-Solomon:Tomer Filiba 开发的 `reedsolo` 库 - AI:Google Gemini 2.5 Flash 多模态 API
标签:人工智能, 区块链, 图像处理, 数字取证, 数字水印, 用户模式Hook绕过, 自动化脚本