NIKJOO/ShadowBox
GitHub: NIKJOO/ShadowBox
一款隐写术 CLI 工具,利用自定义矩阵流密码将加密文件隐藏在 MP4 视频的 mdat 块中且不影响正常播放。
Stars: 0 | Forks: 0

## ShadowBox
使用自定义的基于矩阵的流密码,将加密的 PDF(更正一下,实际上是所有文件类型)隐藏在 MP4 视频文件中。这是一款用于隐写术的 Go CLI 工具,可以将受密码保护的文档嵌入到视频容器中,且不会改变视频的正常播放。
## 目录
- [概述](#overview)
- [功能](#features)
- [工作原理](#how-it-works)
- [安装说明](#installation)
- [用法](#usage)
- [嵌入 PDF](#embed-pdf)
- [提取 PDF](#extract-pdf)
- [架构](#architecture)
- [矩阵密码](#matrix-cipher)
- [MP4 结构](#mp4-structure)
- [技术细节](#technical-details)
- [示例](#examples)
- [贡献](#contributing)
- [许可证](#license)
## 概述
**ShadowBox** 是一款隐写术工具,可让您将加密的 PDF 文件隐藏在 MP4 视频文件中。该项目使用自定义的基于矩阵的流密码进行加密,并结合 MP4 容器操作,在不影响视频播放的情况下无缝嵌入数据。
非常适用于:
- 通过视频文件分发机密文档
- 明面上的安全数据隐藏
- 注重隐私的文件共享
- 隐写术的概念验证研究
## 功能
✨ **自定义矩阵密码**
- 专有的 4×4 基于矩阵的流密码
- 通过矩阵乘法(模 256)实现扩散
- 高效的基于 XOR 的加密/解密
🎬 **MP4 原生支持**
- 将数据直接嵌入 MP4 `mdat` box(媒体数据)中
- 保留视频播放功能
- 对媒体播放器透明
🔐 **密码保护**
- 从密码进行 PBKDF2 密钥派生
- SHA-256 哈希
- 4096 次迭代以增强安全性
🚀 **命令行界面**
- 简单的双模式操作:`embed` 和 `extract`
- 健壮的错误处理
- 基于文件的 I/O
## 工作原理
### 嵌入过程
1. **加载文件**:读取载体 MP4 和机密 PDF
2. **派生密钥**:使用 PBKDF2 从密码生成加密密钥
3. **加密 PDF**:使用矩阵密码加密 PDF 数据
4. **定位 mdat box**:在 MP4 结构中查找媒体数据 box
5. **追加数据**:将带有元数据标记的加密 PDF 插入 mdat payload 中
6. **写入输出**:保存包含嵌入数据的已修改 MP4
### 提取过程
1. **加载 MP4**:读取已嵌入数据的 MP4 文件
2. **查找标记**:在 mdat box 中定位 magic marker(“MPDP”)
3. **提取元数据**:读取原始 payload 大小和 PDF 大小
4. **恢复加密数据**:从 mdat 中提取加密的 PDF
5. **派生密钥**:根据密码重新生成加密密钥
6. **解密**:使用矩阵密码解密(对称操作)
7. **保存 PDF**:将解密后的 PDF 写入输出文件
## 安装说明
### 前置条件
- **Go** 1.16 或更高版本
- 已安装 **Linux**、**macOS** 或 **Windows** 系统及 Go 环境
### 从源码构建
```
# Clone 仓库
git clone https://github.com/NIKJOO/ShadowBox.git
cd ShadowBox
# Build 可执行文件
go build -o shadowbox main.go
# 验证安装
./shadowbox -h
```
### 使用 make(可选)
如果项目中存在 Makefile:
```
make build
```
## 用法
### 通用语法
```
./shadowbox -mode
标签:DNS 反向解析, EVTX分析, Go, MP4处理, Ruby工具, 加密工具, 密码学, 手动系统调用, 数据隐藏, 文档结构分析, 日志审计, 隐写术