joemunene-by/Steganography-tool
GitHub: joemunene-by/Steganography-tool
一款基于 LSB 和 AES-256 的专业图像隐写工具,用于在数字图像中安全隐藏与提取任意文件。
Stars: 0 | Forks: 0
# 专业隐写工具
[](https://python.org)
[](LICENSE)
[](https://github.com/joemunene-by/Steganography-tool)
[](https://github.com/joemunene-by/Steganography-tool/releases)
一种高端专业的隐写工具,使用最低有效位(LSB)技术和AES-256加密在数字图像中隐藏和提取秘密信息。
## 概述
该隐写工具为在数字图像中嵌入机密信息提供了强大、安全且高效的解决方案,视觉内容无明显变化。采用专业软件工程原则构建,具备全面的错误处理、广泛的验证以及命令行和Web双接口。
## 主要特性
- **AES-256加密**:采用PBKDF2密钥派生的军用级加密
- **文件支持**:可隐藏任意文件类型——PDF、ZIP、文档等,不只是文本
- **Web界面**:现代化响应式Web UI,操作便捷
- **高级可视化**:位级统计与完整性验证
- **多格式支持**:支持PNG、BMP、TIFF、JPEG等格式
- **专业CLI**:功能全面的命令行界面
- **强健安全**:全面的验证与错误处理
- **Unicode支持**:完整支持国际字符和表情符号
- **容量分析**:内置工具计算最大消息容量
- **消息检测**:验证图像是否包含隐藏消息
- **跨平台**:兼容Windows、macOS和Linux
## 安装
### 先决条件
- Python 3.7或更高版本
- pip包管理器
### 快速安装
```
# 克隆仓库
git clone https://github.com/joemunene-by/Steganography-tool.git
cd steganography-tool
# 安装依赖
pip install -r requirements.txt
# 以开发模式安装
pip install -e .
```
### Web界面设置
```
# 安装额外的 Web 依赖(已包含在 requirements.txt 中)
pip install Flask Werkzeug
# 启动 Web 服务器
python web/app.py
# 访问 Web 界面 http://localhost:5000
```
## 用法
### 命令行接口
#### 带加密的编码
使用AES-256加密隐藏文本消息:
```
python -m steganography.cli.main encode -i carrier.png -m "Secret message" -o encoded.png -p "my_password"
```
隐藏文件(PDF、ZIP等):
```
python -m steganography.cli.main encode -i carrier.png -f document.pdf -o encoded.png -p "secure_password"
```
#### 带解密的解码
提取隐藏消息:
```
python -m steganography.cli.main decode -i encoded.png -p "my_password"
```
将解码文件保存到输出:
```
python -m steganography.cli.main decode -i encoded.png -o recovered.pdf -p "secure_password"
```
#### 分析与可视化
检查图像容量:
```
python -m steganography.cli.main capacity -i carrier.png
```
检测隐藏消息:
```
python -m steganography.cli.main check -i encoded.png
```
生成可视化报告:
```
from steganography.core import SteganographyVisualizer
visualizer = SteganographyVisualizer()
report = visualizer.generate_comprehensive_report("image.png")
```
### Web界面
1. **启动Web服务器**:`python web/app.py`
2. **打开浏览器**:访问 `http://localhost:5000`
3. **编码**:上传载体图像,输入消息和可选密码
4. **解码**:上传编码图像,如加密则输入密码
5. **分析**:查看详细统计与可视化
### Python API
#### 高级加密编码
```
from steganography.core import SteganoEncoder
encoder = SteganoEncoder()
# 加密消息编码
encoder.encode('carrier.png', 'Secret message', 'encoded.png', password='secure123')
# 二进制文件编码
with open('document.pdf', 'rb') as f:
file_data = f.read()
encoder.encode('carrier.png', file_data, 'encoded.png', password='file_password')
```
#### 高级解密
```
from steganography.core import SteganoDecoder
decoder = SteganoDecoder()
# 使用密码解码
message = decoder.decode('encoded.png', password='secure123')
# 以字节形式解码二进制文件
file_data = decoder.decode('encoded.png', output_as_bytes=True, password='file_password')
# 检查隐藏消息
has_message = decoder.has_message('encoded.png')
```
#### 可视化与分析
```
from steganography.core import ImageAnalyzer, SteganographyVisualizer
# 分析图像
analyzer = ImageAnalyzer()
analysis = analyzer.analyze_image('carrier.png')
print(f"Suitability score: {analysis['steganography_suitability']['suitability_score']}%")
# 生成可视化
visualizer = SteganographyVisualizer()
lsb_viz = visualizer.visualize_lsb_distribution('image.png')
impact_viz = visualizer.visualize_steganography_impact('original.png', 'encoded.png')
```
## 支持的格式与容量
### 输入格式
- **PNG**(推荐无损质量)
- **BMP**(未压缩)
- **TIFF**(高质量)
- **JPEG**(保留质量)
- **WEBP**(现代格式)
### 输出格式
- **PNG**(默认,推荐)
- **JPEG**(带质量优化)
- **BMP**(未压缩)
- **TIFF**(专业用途)
### 容量限制
最大消息容量计算公式如下:
```
Capacity = (Width × Height × Channels - 32) ÷ 8 bytes
```
**示例:**
- **1920×1080 PNG**:约777 KB(实际可用约759.38 KB)
- **1280×720 JPEG**:约346 KB(实际可用约336.72 KB)
- **800×600 BMP**:约180 KB(实际可用约172.80 KB)
## 为何选择此工具而非其他
| 特性 | 本工具 | StegoCrypt | OpenStego | Steghide |
|---------|-----------|------------|-----------|----------|
| AES-256加密 | 1 | 1 | 0 | 0 |
| 文件支持 | 1 | 0 | 0 | 0 |
| Web界面 | 1 | 0 | 0 | 0 |
| 可视化 | 1 | 0 | 0 | 0 |
| 现代Python | 1 | 0 | 0 | 0 |
| 跨平台 | 1 | 0 | 1 | 1 |
| 活跃开发 | 1 | 0 | 0 | 0 |
**主要优势:**
- **现代架构**:基于当前Python最佳实践构建
- **完整安全**:采用AES-256加密与正确的密钥派生
- **通用文件支持**:可隐藏任意文件类型,不只是文本
- **专业UI**:提供命令行与Web双接口
- **高级分析**:位级可视化与统计
- **活跃维护**:定期更新与改进
## 技术架构
### 核心组件
- **SteganoEncoder**:处理带可选加密的消息编码
- **SteganoDecoder**:提取并解密隐藏消息
- **SteganographyCrypto**:AES-256加密与PBKDF2
- **ImageAnalyzer**:统计分析与适用性评分
- **SteganographyVisualizer**:位级可视化工具
- **Web接口**:基于Flask的现代化UI
- **CLI接口**:专业的命令行工具
### 安全实现
- **AES-256-CBC**:军用级加密
- **PBKDF2**:100,000次迭代用于密钥派生
- **随机盐/IV**:每次加密唯一
- **PKCS7填充**:正确的块密码填充
- **Base64编码**:安全的文件处理
### LSB算法增强
1. **消息准备**:文件以base64编码,文本以UTF-8编码
2. **类型检测**:自动识别文件类型
3. **加密层**:可选的AES-256加密
4. **位嵌入**:带类型标记的修改LSB
5. **头部管理**:32位长度头
6. **完整性检查**:验证与错误检测
## 性能特征
### 质量影响
- **PSNR**:>40 dB(优秀质量)
- **视觉变化**:<1%像素差异
- **LSB变化**:最小且分布均匀
- **文件大小**:可忽略的增加
### 速度性能
- **编码**:约0.1秒/MB
- **解码**:约0.05秒/MB
- **分析**:约0.2秒/MB
- **可视化**:约0.5秒/MB
## 开发
### 项目结构
```
steganography/
├── core/
│ ├── __init__.py
│ ├── encoder.py # LSB encoding with encryption
│ ├── decoder.py # LSB decoding with decryption
│ ├── crypto.py # AES-256 encryption
│ ├── analysis.py # Image analysis
│ ├── visualization.py # Bit-level visualization
│ ├── image_utils.py # Image processing utilities
│ └── exceptions.py # Custom exceptions
├── cli/
│ ├── __init__.py
│ ├── main.py # CLI interface
│ └── utils.py # CLI utilities
└── web/
├── app.py # Flask web application
└── templates/ # HTML templates
├── base.html
├── index.html
├── encode.html
├── decode.html
├── analyze.html
└── tools.html
```
### 代码规范
- **PEP 8合规**:一致的格式与风格
- **类型提示**:完整的类型注解覆盖
- **文档**:全面的文档字符串
- **错误处理**:健壮的异常处理
- **测试**:要求90%+的覆盖率
### 贡献
1. 叉仓库
2. 创建功能分支
3. 实施变更并编写测试
4. 确保所有测试通过
5. 提交拉取请求
## 测试
### 运行测试套件
```
# 运行所有测试
python -m pytest tests/ -v
# 运行带覆盖率
python -m pytest tests/ --cov=steganography --cov-report=html
# 运行特定测试
python -m pytest tests/test_encoder.py -v
python -m pytest tests/test_crypto.py -v
```
### 测试覆盖率
- 所有核心组件的单元测试
- 完整工作流的集成测试
- 加密/解密测试
- 文件处理测试
- 边界情况测试
- 跨平台兼容性
## 安全考虑
### 加密安全
- **算法**:AES-256-CBC(行业标准)
- **密钥派生**:PBKDF2,100,000次迭代
- **盐管理**:每次加密唯一的16字节盐
- **IV生成**:加密安全的随机IV
### 隐写安全
- **LSB技术**:经过验证的可靠方法
- **统计分析**:最小可检测模式
- **质量保留**:<1%视觉影响
- **容量优化**:高效的位使用
### 限制
**检测**:LSB可通过统计分析被检测
- **压缩**:JPEG压缩可能影响隐藏数据
- **容量**:受图像尺寸限制
- **法律**:请负责任且合法使用
## 示例
### 基础文本消息
```
# 编码
python -m steganography.cli.main encode -i photo.png -m "Meet me at 10pm" -o secret.png
# 解码
python -m steganography.cli.main decode -i secret.png
# 输出:在晚上 10 点见面
```
### 加密文件隐藏
```
# 使用密码隐藏 PDF
python -m steganography.cli.main encode -i photo.png -f confidential.pdf -o secret.png -p "MySecurePass123!"
# 提取 PDF
python -m steganography.cli.main decode -i secret.png -o recovered.pdf -p "MySecurePass123!"
```
### Web界面流程
1. 访问 `http://localhost:5000`
2. 点击“编码消息”
3. 上传载体图像
4. 输入秘密消息或上传文件
5. 添加加密密码(可选)
6. 点击“编码消息”
7. 下载编码图像
### 可视化分析
```
from steganography.core import SteganographyVisualizer
visualizer = SteganographyVisualizer()
# 生成综合报告
report = visualizer.generate_comprehensive_report("image.png")
# 查看 LSB 分布
lsb_plot = visualizer.visualize_lsb_distribution("image.png")
# 比较原始文件与编码文件
impact_plot = visualizer.visualize_steganography_impact("original.png", "encoded.png")
```
## 支持
### 获取帮助
1. **文档**:查阅此README和代码注释
2. **示例**:查看示例部分
3. **问题**:提交附带重现步骤的问题
4. **讨论**:使用GitHub Discussions提问
### 错误报告
报告错误时,请包含:
- Python版本
- 操作系统
- 图像格式与尺寸
- 错误信息
- 重现步骤
## 许可证
本项目采用MIT许可证。详见[LICENSE](LICENSE)文件。
## 版本历史
### 版本 1.0.0(当前)
- 采用PBKDF2的AES-256加密
- 文件支持(PDF、ZIP、文档)
- 带有现代化UI的Web界面
- 高级可视化与分析
- 专业CLI接口
- 完整的测试套件
- 跨平台支持
### 路线图
- 视频隐写支持
- 音频隐写
- 机器学习检测抗性
- 移动应用接口
- 云处理选项
**免责声明**:本工具仅供教育和合法用途。用户需自行遵守隐写术使用的适用法律和法规。
标签:AES-256, CLI, LSB, PBKDF2, PDF隐藏, Python, SEO: AES加密隐写, SEO: LSB隐写, SEO: 图像隐写, SEO: 跨平台隐写工具, SEO: 隐写工具, Unicode, Web界面, WiFi技术, ZIP隐藏, 专业工具, 位统计, 信息检测, 信息隐藏, 前端, 加密, 命令行界面, 响应式UI, 国际字符, 完整性校验, 容量分析, 开源, 开源安全, 数字取证, 数字图像隐写, 数据隐藏, 文件隐藏, 文档隐藏, 无后门, 最大消息容量, 漏洞扫描器, 漏洞评估, 网络安全, 网络安全, 自动化脚本, 表情符号, 逆向工具, 错误处理, 隐写分析, 隐写术, 隐私保护, 隐私保护