A-RYAN-KR/Steganography

GitHub: A-RYAN-KR/Steganography

一款支持图像、音频、视频三种载体的多模态隐写应用,结合 LSB 编码与可选 AES-256 加密,在媒体文件中安全隐藏和提取文本、图像或音频数据。

Stars: 0 | Forks: 0

# 🔐 StegaVault ### *多模态隐写与密码学套件* [![Python Version](https://img.shields.io/badge/Python-3.8%2B-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) [![Streamlit App](https://img.shields.io/badge/Streamlit-FF4B4B?style=for-the-badge&logo=Streamlit&logoColor=white)](https://streamlit.io/) [![AES-256 Encryption](https://img.shields.io/badge/AES--256--CBC-Secure-0052FF?style=for-the-badge&logo=google-cloud&logoColor=white)](#) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](LICENSE) **StegaVault** 是一款高端、高安全性的多模态隐写应用,旨在将敏感 payload 数据(文本、图像或音频)隐藏在各种载体文件(图像、音频或视频)中,并内置 AES-256 加密。 [核心功能](#-key-features) • [预览](#-application-preview) • [系统架构](#-system-architecture) • [协议](#-steganography-headers--protocol) • [安装说明](#-installation--setup)
## 📸 应用预览 以下是采用玻璃拟态设计的自定义深色主题 Streamlit 用户界面预览: ### 🏠 主仪表盘 ![主屏幕](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/510b31c636024704.png) ### 📤 编码与隐藏 Payload ![编码屏幕](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c01fdc94b2024711.png) ### 📥 解码与提取 Payload ![解码屏幕](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/07ddaf52de024718.png) ## 🌟 核心功能 * **⚡ 多模态功能**:支持将任意 payload(文本、图像、音频)嵌入到以下载体中: * **图像**:无损的 PNG/BMP LSB 编码。 * **音频**:支持采样宽度感知打包的 WAV LSB 编码。 * **视频**:逐帧 LSB 编码,使用 AVI 包装器内的 `FFV1` 编解码器进行无损保留。 * **🔒 AES-256 加密(可选)**:payload 在嵌入前会进行安全保护。使用 **SHA-256** 从用户密码中派生密钥,并使用带有 PKCS7 填充的 **AES-256-CBC** 进行加密。 * **⚖️ 容量验证**:实时容量计算,在编码前检查载体大小与 payload 大小的对比,如果超出限制会警告用户。 * **👁️ 不可见性检查器**:并排比较原始载体和隐写载体,并在适用时提供 PSNR 计算。 * **📁 智能提取**:自动解析标头以识别 payload 格式,并提供内联预览(渲染的文本、图像或音频播放器)和下载按钮。 ## 📐 系统架构 StegaVault 采用模块化结构,将 UI 组件与底层的隐写引擎分离开来: ``` Steganography/ ├── app.py # Streamlit entry point, layout, and page routing ├── requirements.txt # Package dependencies ├── core/ │ ├── __init__.py │ ├── engine.py # Unified encoding/decoding orchestrator │ ├── crypto.py # AES-256 encryption/decryption utilities │ ├── image_steg.py # LSB image embedding and recovery │ ├── audio_steg.py # LSB audio sample manipulation │ ├── video_steg.py # LSB video frame manipulation via OpenCV │ └── utils.py # Binary parsing and header preparation helpers └── ui/ ├── __init__.py └── styles.py # Custom CSS styling (dark glassmorphism, badges, banners) ``` ## 📥 隐写标头与协议 为了在不知道数据大小或格式的情况下允许自动提取,StegaVault 会在每个隐写载体的开头嵌入一个 **40 位自定义元数据标头**: | 组件 | 偏移量 (位) | 大小 | 描述 | | :--- | :--- | :--- | :--- | | **数据类型** | `0 - 7` | 8 位 | 标识 payload 类型:`0x01` = 文本,`0x02` = 图像,`0x03` = 音频。 | | **Payload 长度** | `8 - 39` | 32 位 | 指定 payload 大小(以字节为单位)的无符号整数。 | | **加密的 Payload** | `40+` | 可变 | 实际的 payload 字节(可能经过 AES-256 加密)。 | ## 🛠️ 载体模块与技术栈
🔍 展开查看载体模块详情 ### 1. 图像载体 (`core/image_steg.py`) - 在扁平化像素数组的 RGB 通道上进行标准 LSB(最低有效位)替换。 - 高容量载体。 - 使用 `PIL` 和 `NumPy` 对图像通道进行高效的扁平化和重塑。 ### 2. 音频载体 (`core/audio_steg.py`) - 在原始音频样本中进行 LSB 替换。 - 支持 **8 位无符号**和 **16 位有符号** WAV 格式。 - 正确处理 16 位音频中的负值,防止播放期间出现失真或噪声问题。 ### 3. 视频载体 (`core/video_steg.py`) - 跨像素通道执行逐帧隐写。 - 采用 **FFV1** 视频编解码器(一种无损帧内压缩标准),确保常规的视频压缩不会破坏 payload 位。 - 由 OpenCV (`cv2`) 提供支持,用于帧检索、打包和重组。 ### 4. 密码学 (`core/crypto.py`) - 通过 **SHA-256** 从用户输入中派生 256 位密钥。 - 为 AES CBC 模式使用加密安全的随机 **16 字节初始化向量 (IV)**。 - 输出字节布局:`IV (16 字节)` 后跟 `Ciphertext`。
## 🚀 安装与设置 确保你已安装 **Python 3.8+**。 ### 1. 克隆仓库 ``` git clone https://github.com/A-RYAN-KR/Steganography.git cd Steganography ``` ### 2. 设置虚拟环境(推荐) ``` python -m venv venv ``` 激活它: - **Windows**: `venv\Scripts\activate` - **macOS/Linux**: `source venv/bin/activate` ### 3. 安装依赖项 ``` pip install -r requirements.txt ``` ### 4. 运行 Streamlit 应用 ``` streamlit run app.py ``` 在浏览器中打开 [http://localhost:8501](http://localhost:8501) 即可开始隐藏你的秘密。 ## 📦 核心依赖项 该应用程序依赖于以下包: * [Streamlit](https://streamlit.io/) — 前端交互式仪表盘框架。 * [NumPy](https://numpy.org/) — 用于图像和视频帧的数组操作。 * [OpenCV](https://opencv.org/) — 无损帧提取与编译。 * [Pillow](https://python-pillow.org/) — 图像加载、转换和元数据处理。 * [Pydub](https://github.com/jiaaro/pydub) — 音频文件加载和格式转换。 * [PyCryptodome](https://www.pycryptodome.org/) — AES-256-CBC 实现。 ## 🔒 安全声明 ## 📝 许可证 该项目基于 MIT 许可证授权。
标签:DNS 反向解析, HTTP工具, Kubernetes, Python, Streamlit, 信息加密, 密码学, 手动系统调用, 数据隐藏, 无后门, 访问控制, 逆向工具, 隐写术