ShakalBhau0001/Image-Steganography-CLI-Tool
GitHub: ShakalBhau0001/Image-Steganography-CLI-Tool
一个基于 Python 的命令行图像隐写术工具,使用 Fernet 加密和 LSB 技术将机密信息隐藏到 PNG 图片中并支持密码提取。
Stars: 3 | Forks: 0
# 📸 Image-Steganography-CLI-Tool 🔐
一个基于 Python 的 **图像隐写术命令行工具**,允许您
使用 **LSB 隐写术** 加密机密信息并将其嵌入到 **图像 (PNG)** 中,随后通过密码安全地 **提取和解密**。
此 CLI 工具专为 **终端用户**、**自动化** 以及 **专注于安全的实验** 而构建,将 **强加密与隐形数据隐藏** 结合在一起。
## 🧱 项目结构
```
Image-Steganography-CLI-Tool/
│
├── assets/ # Screenshots
├── main.py # Basic CLI application
├── interactive.py # Rich CLI Version
├── requirements.txt # Project Dependancies
└── README.md # Project documentation
```
## ✨ 功能
### 🔐 加密与嵌入
- 使用 **Fernet (AES-128 加密)** 加密信息
- 使用 **PBKDF2-HMAC (SHA256)** 从密码派生密钥
- 使用 **LSB (最低有效位)** 将加密的 payload 嵌入 WAV 音频中
- 支持:
- 直接文本输入
- 来自文件的信息
### 🔓 提取与解密
- 从 WAV 中提取嵌入的 payload
- 使用存储的 salt 重新生成 Fernet 密钥
- 安全地解密信息
- 将解密后的信息输出到:
- 终端或
- 文件
### 🎨 Rich CLI 界面
- 彩色终端输出
- 结构化的密钥显示表格
- 用于编码/解码结果的样式化面板
- 更好的用户体验和可读性
### ⚡ 双模式支持
- 🧼 基础 CLI → 轻量级,无依赖
- 🎨 Rich CLI → 带有颜色和面板的增强型 UI
## 🛠 使用的技术
| 技术 | 用途 |
| -------------------------------------- | ------------------------------- |
| **Python 3** | 核心语言 |
| **argparse** | CLI 参数解析 |
| **Pillow (PIL)** | 图像处理 |
| **cryptography (Fernet + PBKDF2HMAC)** | 安全加密 |
| **LSB Steganography** | 数据隐藏技术 |
| **struct / secrets / base64** | Payload 及加密辅助工具 |
| **Rich** | 交互式 CLI 界面 |
## 📌 要求
请确保您安装了所需的依赖项:
```
pip install cryptography pillow rich
```
## ▶️ 如何运行
## 1️⃣ 克隆仓库
```
git clone https://github.com/ShakalBhau0001/Image-Steganography-CLI-Tool.git
```
## 2️⃣ 进入项目目录
```
cd Image-Steganography-CLI-Tool
```
### 3️⃣ 安装依赖项
```
pip install rich cryptography pillow
```
**或者**
```
pip install -r requirements.txt
```
### 4️⃣ 运行项目
#### 基础 CLI 版本
```
python main.py
```
#### Rich 交互式版本
```
python interactive.py
```
## ▶️ 用法
### 🔐 加密与嵌入
#### 1. 文本加密与嵌入
```
python main.py encrypt --in-image cover.png --out-image stego.png --password mypass --message "secret"
```
```
python main.py encrypt --in-image inputfile.png --out-image outputfile.png --password yourpassword --message "Enter Your Secret Message"
```
#### 2. 文本文件加密与嵌入
```
python main.py encrypt --in-image cover.png --out-image stego.png --password mypass --message-file secret.txt
```
```
python main.py encrypt --in-image inputfile.png --out-image outputfile.png --password yourpassword --message-file Add Your Secret txt file
```
### 🔓 解密与提取
#### 1. 文本解密与提取
```
python main.py decrypt --in-image stego.png --password mypass
```
```
python main.py decrypt --in-image outputfile.png --password yourpassword
```
#### 2. 文本文件解密与提取
```
python main.py decrypt --in-image stego.png --password mypass123 --out-file output.txt
```
```
python main.py decrypt --in-image outputfile.png --password yourpassword --out-file filename.txt
```
## 📁 支持的格式
- **输入图像:** PNG / RGB 或 RGBA 图像
- **输出图像:** PNG (RGBA)
- **信息类型:**
- UTF-8 文本
- 二进制文件(通过 `--message-file`)
## ⚙️ 工作原理
**1️⃣ 密钥派生**
- 密码 → PBKDF2-HMAC(SHA256, 390k 次迭代) → 32 字节密钥 → Fernet 密钥
**2️⃣ 加密**
- 使用 Fernet 加密信息
- payload 格式:
[STEG][16字节 salt][4字节长度][加密数据]
**3️⃣ 嵌入**
- payload 的每一位被嵌入到:
- **R, G, B 通道的 LSB**
- Alpha 通道保持不变
- 图像视觉上没有变化
**4️⃣ 提取**
- 读取 LSB 位
- 重构 payload
- 验证 MAGIC 标头
- 从密码 + salt 重新生成密钥
- 解密信息
## ⚠️ 常见错误
- **密码错误** → Fernet 解密失败
- **图像错误** → 未找到 MAGIC 标头
- **图像过小** → payload 过大
- **隐写图像损坏** → payload 完整性错误
## 🌟 未来增强
- 嵌入前自动检测容量
- 大图像的进度指示器
- 支持 JPEG(使用基于 DCT 的隐写术)
- 多文件嵌入
- 加密前的可选压缩
## 📦 扩展版本
本仓库专注于作为一种 **命令行 (CLI) 学习项目** 实现的 **特定隐写术技术**。
此项目的目标是:
- 在实践层面理解隐写术的工作原理
- 试验数据隐藏技术
- 了解基于 CLI 的安全工具是如何构建的
有关包含以下功能的 **更高级的综合实现**:
- 图像隐写术
- 音频隐写术
- 文件加密支持
请参考:
## ⚠️ 免责声明
本项目仅供 **教育和研究目的** 使用。
它 **并非为现实世界的安全通信而设计**。
仅靠隐写术并不能保证保密性,不应将其视为
对适当加密安全性的替代。
## 📸 预览
### 1. **加密**

### 2. **解密**

### 3. **信息**

### 4. **退出**

## 🪪 作者
## ⭐ 支持
如果您喜欢这个项目,请考虑在 GitHub 上给它一个 ⭐!
标签:DNS 反向解析, HTTP工具, Python, 加密解密, 图像隐写术, 密码学, 手动系统调用, 数据隐藏, 无后门, 逆向工具