ShakalBhau0001/Audio-Steganography-CLI-Tool
GitHub: ShakalBhau0001/Audio-Steganography-CLI-Tool
一款基于 Python 的命令行音频隐写工具,利用 Fernet 加密和 LSB 技术将秘密信息嵌入 16 位 WAV 文件中,实现带密码保护的信息隐藏与提取。
Stars: 3 | Forks: 0
# 🎵 Audio-Steganography-CLI-Tool 🔐
一个基于 Python 的**音频隐写命令行工具**,允许你**加密隐藏信息**并将其嵌入到 **16 位 WAV 音频文件**中,之后可以通过密码**提取和解密**。
此 CLI 工具使用 **Fernet 加密**、**PBKDF2-HMAC 密钥派生**和**基于 LSB 的音频隐写技术**,专为终端用户、脚本编写和自动化而设计。
## 🧱 项目结构
```
Audio-Steganography-CLI-Tool/
│
├── assets/ # Screenshots
├── main.py # Basic CLI Version
├── interactive.py # Rich-powered CLI
├── requirements.txt # Dependencies
└── README.md # Project documentation
```
## ✨ 功能
### 🔐 加密与嵌入
- 使用 **Fernet (AES-128 认证加密)** 加密信息
- 使用 **PBKDF2-HMAC (SHA256)** 从密码派生密钥
- 使用 **LSB (最低有效位)** 将加密的 payload 嵌入 WAV 音频
### 🔓 提取与解密
- 从 WAV 中提取嵌入的 payload
- 使用存储的 salt 重新生成 Fernet 密钥
- 安全解密信息
- 直接在终端打印解密后的信息
### 🎨 Rich CLI(交互模式)
- 使用 Rich 实现精美的彩色终端 UI
- 以结构化表格显示密钥矩阵
- 带有验证的交互式提示
- 干净且易读的输出面板
### ⚡ 双模式支持
- 🧼 基础 CLI → 轻量级,无依赖
- 🎨 Rich CLI → 具有颜色和面板的增强型 UI
## 🛠 使用的技术
| 技术 | 角色 |
| -------------------------------------- | ------------------------- |
| **Python 3** | 主要语言 |
| **argparse** | CLI 参数解析 |
| **wave 模块** | WAV 文件操作 |
| **array 模块** | 音频样本操作 |
| **cryptography (Fernet + PBKDF2HMAC)** | 加密 |
| **LSB 隐写** | 数据嵌入 |
| **Rich** | 带样式的 CLI、颜色、面板 |
## ▶️ 如何运行
### 1️⃣ 克隆仓库
```
git clone https://github.com/ShakalBhau0001/Audio-Steganography-CLI-Tool.git
```
### 2️⃣ 导航到项目文件夹
```
cd Audio-Steganography-CLI-Tool
```
### 3️⃣ 安装依赖
```
pip install rich cryptography
```
**或者**
```
pip install -r requirements.txt
```
### 3️⃣ 运行项目
#### 🧼 基础 CLI 版本
```
python main.py
```
#### 🎨 Rich 交互版本
```
python interactive.py
```
## ▶️ 用法
### 🔐 加密与嵌入
#### 1. 文本加密与嵌入
```
python main.py encrypt --in-wav inputfile.wav --out-wav outputfile.wav --password yourpassword --message "Enter Your Secret Message"
```
```
python main.py encrypt --in-wav cover.wav --out-wav stego.wav --password mypass --message "secret"
```
#### 2. 文本文件加密与嵌入
```
python main.py encrypt --in-wav inputfile.wav --out-wav outputfile.wav --password yourpassword --message-file Add Your Secret txt file
```
```
python main.py encrypt --in-wav cover.wav --out-wav stego.wav --password mypass --message-file secret.txt
```
### 🔓 解密与提取
```
python main.py decrypt --in-wav outputfile.wav --password yourpassword
```
```
python main.py decrypt --in-wav stego.wav --password mypass
```
## 📁 支持的格式
- **输入(载体):** 仅限 16 位 PCM **WAV**
- **输出(隐写音频):** WAV
- **信息输入:** 文本或 `.txt` 文件
## ⚙️ 工作原理
**1️⃣ 密钥派生**
- 密码 → PBKDF2-HMAC(SHA256, 39 万次迭代) → 32 字节密钥 → Fernet 密钥
**2️⃣ 加密**
- 使用 Fernet 加密信息
- Payload 格式:
[AUDS][16字节 salt][4字节长度][加密数据]
**3️⃣ 嵌入**
- 将 payload 的比特位插入到**音频样本的 LSB 中。**
**4️⃣ 提取**
- 读取 LSB 比特位
- 重建 payload
- 验证标头
- 重新派生 Fernet 密钥
- 解密信息
## ⚠️ 常见错误
- **密码错误** → 解密失败
- **非 16 位 WAV** → 被拒绝
- **音频文件过小** → Payload 过大
- **错误的 WAV 文件** → 未找到 MAGIC 标头
## 🌟 未来增强功能
- 增加对更大音频文件的支持
- 在嵌入过程中添加进度条
- 添加信息文件导出选项
- 改进对损坏音频的错误处理
- 增加二进制文件隐藏选项
## 📦 扩展版本
此仓库专注于作为**命令行 (CLI) 学习项目**实现的**特定隐写技术**。
该项目的目标是:
- 从实践层面理解隐写术的工作原理
- 试验数据隐藏技术
- 了解基于 CLI 的安全工具的结构
有关**更高级的综合实现**,包括:
- 图像隐写
- 音频隐写
- 文件加密支持
请参考:
🔗 **[StegaVault-CLI](https://github.com/ShakalBhau0001/StegaVault-CLI)**
## ⚠️ 免责声明
本项目仅供**教育和研究目的**使用。
它**并非为现实世界的安全通信而设计**。
仅靠隐写术并不能保证保密性,不应将其视为
proper 密码学安全性的替代方案。
## 📸 预览
### 1. **加密**

### 2. **解密**

### 3. **信息**

### 4. **退出**

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