joemunene-by/Steganography-tool

GitHub: joemunene-by/Steganography-tool

一款基于 LSB 和 AES-256 的专业图像隐写工具,用于在数字图像中安全隐藏与提取任意文件。

Stars: 0 | Forks: 0

# 专业隐写工具 [![Python Version](https://img.shields.io/badge/python-3.7+-blue.svg)](https://python.org) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)](https://github.com/joemunene-by/Steganography-tool) [![Version](https://img.shields.io/badge/version-1.0.0-orange.svg)](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, 国际字符, 完整性校验, 容量分析, 开源, 开源安全, 数字取证, 数字图像隐写, 数据隐藏, 文件隐藏, 文档隐藏, 无后门, 最大消息容量, 漏洞扫描器, 漏洞评估, 网络安全, 网络安全, 自动化脚本, 表情符号, 逆向工具, 错误处理, 隐写分析, 隐写术, 隐私保护, 隐私保护