# ShellStego **Repository Path**: jack2288/ShellStego ## Basic Information - **Project Name**: ShellStego - **Description**: (1)算法名称:改进型的LSB图像隐写算法 (2)算法简单原理: 不修改任何像素值,仅在每个像素中查找与秘密信息相同的位并记录其位置索引。若找不到匹配位,则标记为"8",提取时读取该像素最低位的相反值。携密图像与原始图像完全一致,PSNR理论无穷大。 (3)引用开源网址本项目引用参考的开源网址是:https://gitee.com/A1LinLin1/stegano - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2026-01-29 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ShellStego 信息隐藏项目 ## 项目概述 这是一个基于LSB(最低有效位)技术的信息隐藏与提取系统。项目包含图像编码、信息提取、零失真嵌入等多种方法,并结合国密SM4算法实现数据加密和文件格式伪装。 ## 环境要求 ### Python版本 - Python 3.7 或更高版本 - 推荐使用 Python 3.9-3.11 ### 操作系统 - Windows 10/11(支持) - macOS 10.14 或更高版本(支持) - Linux(支持) ### 系统要求 - 至少 2GB RAM(推荐 4GB 或更多) - 100MB 可用磁盘空间 - 支持图形显示(用于图像处理和可视化) ## 文件结构 - [encode.py](examples/encode.py) - 基础LSB编码实现 - [extract.py](examples/extract.py) - 基础LSB信息提取实现 - [pro_encode.py](src/pro_encode.py) - 改进的零失真LSB编码实现 - [pro_extract.py](src/pro_extract.py) - 改进的零失真LSB信息提取实现 - [gray.py](utils/gray.py) - 图像灰度转换工具 - [psnr_calculator.py](utils/psnr_calculator.py) - PSNR计算器和对比图生成器 - [encrypt_wrapper.py](encrypt_wrapper.py) - SM4加密和文件封装模块 - [main.py](main.py) - 主程序入口(整合改进版算法) - [experiment.py](experiment.py) - 原始实验程序(包含多种位平面操作) - [config.py](config.py) - 项目配置文件 - [requirements.txt](requirements.txt) - 项目依赖声明 ## 功能特性 1. **基础LSB嵌入**: 直接修改像素的最低有效位 2. **零失真LSB嵌入**: 不修改任何像素值,只记录位平面索引 3. **随机种子机制**: 使用随机种子确定像素位置,增强安全性 4. **信息提取**: 从含密图像中恢复隐藏信息 5. **PSNR计算**: 评估图像质量变化 6. **灰度转换**: 彩色图转灰度图 7. **SM4国密算法加密**: 使用国密SM4算法对含密图像及相关信息进行加密 8. **格式封装**: 将加密数据封装到ZIP或PDF格式中,便于隐蔽传输 9. **混合口令支持**: 支持中文、英文、数字混合的口令 ## 密码技术详解 ### 1. SM4对称加密算法 本项目使用中国国家密码标准SM4算法进行数据加密。SM4是一种分组密码算法,具有以下特点: - 分组长度:128位(16字节) - 密钥长度:128位(16字节) - 加密轮数:32轮 - 安全强度高,适合硬件和软件实现 在本项目中,SM4算法用于: - 加密待隐藏的图像数据 - 保护随机种子和位位置信息 - 确保传输数据的安全性 ### 2. 密钥派生机制 为了支持用户自定义的口令,项目实现了基于SHA256的密钥派生机制: - 用户输入任意长度的口令(支持中文、英文、数字混合) - 使用SHA256哈希函数生成256位哈希值 - 取哈希值的前128位(16字节)作为SM4算法的密钥 这种方法确保了: - 支持任意长度和字符集的口令 - 即使口令较短也能生成足够安全的密钥 - 相同口令始终生成相同密钥,保证解密的正确性 ### 3. 文件格式伪装技术 项目实现了标准的ZIP和PDF文件格式伪装,确保伪装文件能通过常规软件验证: - **ZIP伪装**:生成符合ZIP文件格式规范的数据,包含标准的文件头、目录结构和校验信息 - **PDF伪装**:生成符合PDF 1.4标准的文档,包含完整的对象结构、交叉引用表和trailer 隐藏数据被嵌入到格式允许的数据区域,不影响文件的正常使用。 ### 4. 随机种子机制 随机种子作为额外的安全层,用于确定信息嵌入的像素位置: - 使用随机种子生成伪随机序列,确定像素访问顺序 - 隐藏信息分散在整个图像中,而非连续存储 - 只有知道正确种子才能准确定位隐藏信息 ## 安装与配置 ### Windows环境配置 1. 下载并安装 Python 3.7 或更高版本 - 访问 https://www.python.org/downloads/ - 选择适合 Windows 的版本下载 - 安装时请勾选 "Add Python to PATH" 2. 验证安装 ```bash python --version pip --version ``` 3. 克隆项目 ```bash git clone https://github.com/yourusername/ShellStego.git cd ShellStego ``` 4. 安装依赖 ```bash pip install -r requirements.txt ``` ### macOS/Linux环境配置 1. 确认已安装 Python 3.7 或更高版本 ```bash python3 --version ``` 2. 克隆项目并安装依赖 ```bash git clone https://github.com/yourusername/ShellStego.git cd ShellStego pip3 install -r requirements.txt ``` ## 使用方法 ### 基础版本 ```bash python encode.py # 编码信息到图像 python extract.py # 从含密图像提取信息 ``` ### 改进版本(推荐) ```bash python main.py # 运行完整流程 ``` ### 批量处理工具 使用 `batch_process.py` 脚本可以对目录下的图像进行批量加密或解密。 #### 批量加密(隐藏信息) 将文本、文件或目录隐藏到指定文件夹内的**每一张**图片中。 ```bash # 隐藏文本 python batch_process.py encrypt -i input_folder -o output_folder -s "隐秘信息内容" --type text # 隐藏文件 python batch_process.py encrypt -i input_folder -o output_folder -s ./path/to/secret.doc --type file ``` #### 批量解密(提取信息) 扫描输出文件夹中的所有伪装文件(.zip, .pdf, .tar),自动提取其中隐藏的信息。 ```bash python batch_process.py decrypt -i output_folder -o extracted_folder ``` ## 新增功能:随机种子机制 本项目新增了随机种子机制,具体如下: - 使用随机种子确定嵌入信息的像素位置 - 随机种子作为密钥存储在 [secret_key.txt](secret_key.txt) 文件中 - 只有拥有正确密钥(随机种子)的人才能正确提取隐藏信息 - 像素修改不再集中在图像的前部分,而是随机分布在整个图像中 ## 新增功能:SM4加密和封装 本项目集成了国密SM4算法加密功能: - 使用SM4算法对含密图像及相关信息进行加密 - 支持将加密数据封装到ZIP或PDF格式中 - 密钥由用户现场输入,不会在文件中保留 - 便于隐蔽传输和存储 ## 新增功能:混合口令支持 系统现在支持中文、英文、数字混合的口令: - 可以使用中文字符作为口令的一部分 - 可以使用英文字母和数字 - 口令会被安全地转换为SM4密钥 - 支持复杂口令以增强安全性 ## 实验要求 - 隐藏信息:"BUPTshahexiaoqu" - 输入图像:bupt.bmp → buptgray.bmp(灰度化) - 输出图像:buptgraystego.bmp(含密图像) - 验证指标:PSNR值、提取信息正确性 ## 引用的仓库: 本项目引用了以下开源项目: - [Color-Image-Steganography]https://gitee.com/lwg_Eternal_Summer/color-image-steganography