MauriceThomas03/stegocrypt
GitHub: MauriceThomas03/stegocrypt
一个使用 LSB 隐写术在 PNG/BMP 图像中隐藏和还原文本信息的命令行教学工具,用于演示数据外发与数字取证概念。
Stars: 1 | Forks: 0
# StegoCrypt — LSB 图像隐写工具
一款命令行工具,可将秘密文本信息隐藏在普通的 PNG/BMP 图像中,并能将其重新还原——还支持可选的密码保护。
隐写术是将数据隐藏*在*其他数据内部的一种做法,从而使其存在本身不那么引人注目。与加密(加密会打乱信息使其无法阅读,但看起来明显“是个秘密”)不同,隐写术彻底掩盖了秘密本身的存在。安全团队之所以研究这项技术,是因为它是一种真实存在的数据外发手段——通过看似无害的图像附件,将敏感数据偷偷运出网络。
## 工作原理
图像中的每个像素都由红、绿、蓝(RGB)值组成,每个值都是一个介于 0–255 之间的 8 位数字。仅仅改变这些数字中其中一个的*最后一位*(最低有效位),其数值最多只会偏移 1(例如 200 变成 201)——这种差异是肉眼无法察觉的。StegoCrypt 通过重写每个颜色通道的最后一位,以二进制形式拼写并隐藏信息,并在还原时读取这些位来恢复数据。
```
Original pixel: (200, 133, 47)
Binary: 11001000 10000101 00101111
Hide bit "1": 1100100[1] 10000101 00101111 <- only last bit changes
```
## 功能
- 将任何文本信息隐藏在 PNG 或 BMP 载体图像中
- 可选的基于密码的混淆(通过密码的 SHA-256 派生的 XOR keystream)
- 容量检查 —— 在尝试之前即可告知您给定图像可以容纳的最大信息量
- 对超大信息、密码错误以及非隐写图像提供清晰的错误处理
- 通过自动化测试套件 (`test_stegocrypt.py`) 进行了全面测试
## 安装说明
```
git clone https://github.com/MauriceThomas03/stegocrypt.git
cd stegocrypt
pip install -r requirements.txt
```
故障排除 (Windows):如果 pip 无法识别,请改用 py -m pip install -r requirements.txt。运行脚本时也是如此——如果 python script.py 无法识别,请使用 py script.py。
## 用法
生成一张示例图像进行实验(或使用您自己的 PNG):
```
python examples/generate_sample_image.py
```
**隐藏信息:**
```
python stego_cli.py encode -i examples/cover.png -o examples/secret.png -m "meet at dawn" -p mypassword
```
**还原信息:**
```
python stego_cli.py decode -i examples/secret.png -p mypassword
```
**检查载体图像可容纳多少内容:**
```
python stego_cli.py capacity -i examples/cover.png
```
如果省略 `-m` / `-p` 标志,也可以通过交互式方式(提供提示并隐藏输入)输入密码和信息。
## 运行测试
```
python test_stegocrypt.py
```
## 安全说明与局限性
这是一个用于教育/作品集的项目,并非专业的生产级安全工具。如果您正在评估它,以下是一些需要考量的诚恳说明:
- **密码保护是 XOR 混淆,并非真正的加密。** 它可以防止随意窥探,但如果攻击者怀疑使用了 keystream 加密,这种机制就无法抵抗其蓄意破解。如果用于生产环境,版本将会改用 `cryptography` 库来实现 AES-GCM。
- **LSB 隐写是可被检测到的。** 统计隐写分析工具(例如卡方攻击)可以标记出那些最低有效位看起来不像自然图像噪声的图像,尤其是当信息占据了图像大部分容量时。该工具展示的是这项*技术*,而不是规避取证分析的方法。
- **有损格式会破坏隐藏的数据。** 将输出保存为 JPEG(或重新上传到会重新压缩图像的服务,如大多数社交媒体平台)将会损坏或抹除隐藏的信息,因为 JPEG 恰好会丢弃此工具所依赖的那些“不可见”细节。请务必保存为 PNG 或 BMP。
## 为什么开发这个工具
我想要一个超越典型的“端口扫描器”或“密码检查器”这类新手项目的作品集项目,真正展示在真实的数字取证和数据外泄分析中使用的概念——攻击者如何能在明面上隐藏数据,以及防御者需要关注什么。
## 许可证
MIT
标签:DNS 反向解析, Python, 图像处理, 数据窃取演示, 数据隐藏, 文档结构分析, 无后门, 逆向工具, 隐写术