m524security/STEGNOGRAPHY-CLI
GitHub: m524security/STEGNOGRAPHY-CLI
这是一款支持将 AES-256-GCM 加密信息通过 LSB 隐写术嵌入多媒体文件的命令行工具,兼具高安全性与向量化高性能。
Stars: 1 | Forks: 0
# 🩸 DARK-DEVIL 的隐写术模型 — v2
使用 LSB 隐写术将**已加密**的机密信息隐藏在图像、音频或视频文件中,
然后使用相同的密码短语进行恢复。
v2 是原始 CLI 的快速、正确且名副其实的重写版本。
## v2 中的变化
| 方面 | v1 | v2 |
|---|---|---|
| 速度 | Python 逐像素循环 | **向量化 NumPy** — 快约 100–1000 倍 |
| 加密 | Fernet (AES-**128**),README 中称其为 "AES-256" | **真正的 AES-256-GCM**(经过身份验证)— 现在名副其实 |
| 密钥 | `sha256(number)`,无盐值 | **Argon2id** KDF + 每个文件随机盐值,基于密码短语 |
| Payload | 遇到任何 `0xFF` 字节就会损坏的结束标记 | 带有魔术标签、**长度前缀**的容器 |
| 图像 | 在灰度/RGBA/调色板模式下崩溃 | 自动归一化为 RGB |
| 容量 | 仅检查音频 | 检查**所有媒体**,提供清晰的错误提示 |
| 音频 | 需要 `pydub` + ffmpeg | 仅使用标准库 `wave`(少了一个重型依赖) |
| 接口 | 仅支持菜单 | 菜单 **+** 可脚本化的 `argparse` CLI |
| 测试 | 无 | 12 个通过的 pytest 测试用例 |
## 安装
```
git clone https://github.com/m524security/STEGNOGRAPHY-CLI.git
cd STEGNOGRAPHY-CLI
pip install -r requirements.txt
```
## 使用方法
交互式(原有行为):
```
python3 STEGNOGRAPHY.py
```
可脚本化:
```
# 隐藏
python3 STEGNOGRAPHY.py hide --type image --in cover.png --out secret.png \
--message "meet at dawn" --passphrase "my pass"
# 提取(根据扩展名检测的文件类型:png/bmp/wav/avi)
python3 STEGNOGRAPHY.py extract --in secret.png --passphrase "my pass"
```
省略 `--passphrase` 将会触发安全提示(隐藏输入)。
运行测试:
```
pip install pytest && pytest -q # 12 passing
```
## 支持的媒体
- **图像** → `.png` / `.bmp`(无损;这是 LSB 数据得以保留的必要条件)
- **音频** → `.wav` (PCM)
- **视频** → `.avi`(FFV1 无损编解码器)
## 工作原理
1. 您的消息使用 **AES-256-GCM** 加密,密钥由您的密码短语 + 随机盐值通过 **Argon2id** 生成。盐值和 nonce 存储在一个小的头部中,因此解密仅需密码短语。
2. 生成的 `magic + version + salt + nonce + length + ciphertext` 数据块会被写入载体文件像素/采样的最低有效位中。
3. 提取过程会读取头部,然后精确读取 `length` 长度的字节,最后 AES-GCM 会验证完整性——密码短语错误或任何篡改都会明确报错。
## 诚实说明
- LSB 隐写术提供的是**隐蔽性,而非不可检测性**——现代的统计/ML 隐写分析通常能够检测出 LSB 的更改。加密才是真正的保护手段;隐藏只是第二层防御。
- v2 的容器格式与 v1 不同,因此使用 v1 创建的文件无法在此处提取(反之亦然)。
## 免责声明
仅供教育和授权使用。作者不对任何滥用行为负责。
标签:DNS 反向解析, Python, 信息加密, 安全规则引擎, 密码学, 手动系统调用, 数据隐藏, 无后门, 逆向工具, 隐写术