niclashedam/lupin
GitHub: niclashedam/lupin
Lupin 是一款基于 Rust 的轻量级隐写术工具,支持将数据隐藏在 PDF、PNG、JPEG 文件中并可逆向提取。
Stars: 2 | Forks: 0
# 🕵️ Lupin




一款极速、轻量级的隐写术工具,用于将数据隐藏在看似正常的文件中。Lupin 可以作为 CLI 工具用于快速操作,或作为 Rust 库集成到您的应用程序中。
隐写术隐藏的是数据的存在本身,而不仅仅是其内容。加密会使消息变得不可读,而隐写术则使其变得不可见:该文件看起来和表现得更像一个普通的 PDF、PNG 或 JPEG 文件。
Lupin 以[亚森·罗宾](https://en.wikipedia.org/wiki/Ars%C3%A8ne_Lupin)(Arsène Lupin,虚构的绅士怪盗)命名,其原因不言而喻:将事物隐藏在显眼之处。
## 支持的格式
- **PDF**:在 `%%EOF` 标记后追加数据(容量不限,易于检测)
- **PNG**:自定义辅助块(容量不限,零视觉伪影,较易检测)
- **JPEG**:签名的 APP13 应用标记,根据需要跨段拆分(容量不限,零视觉伪影,较易检测)
目前,这三款引擎均针对**容量**进行了优化:大小不限,但使用 `strings` 很容易发现。CLI 和 API 带有 `--capacity` / `--stealth` 选择器,用于未来的低可检测性策略;目前还没有引擎实现 `--stealth`,因此请求该功能会返回明确的错误。请参阅 [CLI](docs/cli.md) 和[库](docs/library.md)指南。
## 快速开始
### CLI 工具
```
# 安装
cargo install lupin
# 或从源码构建:git clone && cargo build --release
# 在 PDF 中隐藏数据
lupin embed document.pdf secret.txt output.pdf
# 提取数据
lupin extract output.pdf recovered.txt
# 更多选项
lupin --help
```
更多信息请参阅 [CLI 指南](docs/cli.md)。
### Rust 库
```
# Cargo.toml
[dependencies]
lupin = "1.0"
```
```
use lupin::operations::{embed, extract};
use lupin::EmbedMode;
// Read files
let source = std::fs::read("document.pdf")?;
let payload = std::fs::read("secret.txt")?;
// Embed with metadata
let (embedded_data, metadata) = embed(&source, &payload, EmbedMode::Capacity)?;
println!("Used {} engine", metadata.engine);
// Extract (mode is autodetected)
let (extracted, info) = extract(&embedded_data)?;
```
更多信息请参阅[库指南](docs/library.md)。
## 文档
- **[CLI 指南](docs/cli.md)** - 命令行用法、日志记录、示例
- **[库指南](docs/library.md)** - Rust API、集成示例
- **[架构](docs/architecture.md)** - 工作原理、添加新格式
## 许可证
Apache License 2.0。详情请参阅 [LICENSE](LICENSE)。
**免责声明**:仅供教育和合法用途。用户需自行负责遵守适用的法律。
标签:DNS 反向解析, Rust, 信息隐藏, 可视化界面, 文档结构分析, 演示模式, 网络流量审计, 通知系统, 隐写术