[!WARNING] 本项目完全是通过 氛围编码(vibe-coded) 完成的(可能部分内容剽窃自这个仓库),作者是个 小傻瓜,只是觉得这个点子很有趣
利用优化搜索引擎排名(SEO)的菜谱前言作为载体,隐藏编码后的秘密信息(实际上提示词可以是任意内容,共享的提示词只是编码器和解码器约定的密钥)。
使用神经语言学隐写术将秘密信息隐藏在看起来自然的文本中。
双方必须使用完全相同的模型、量化方式、top-k 值和提示词。任何差异都会导致解码失败。
--device cpu --no-4bit 使用 CPU 模式,但速度会明显更慢# 创建并激活虚拟环境,然后安装所需包
python -m venv env
source env/bin/activate
pip install -r requirements.txt
# 或者使用 `uv`
uv sync
uv pip install -r requirements.txt
[!NOTE] 设置
HF_TOKEN环境变量以向 HuggingFace 进行身份验证
python main.py encode --message "attack at dawn"
这将使用默认的菜谱前言提示词和 Llama-3.2-3B 模型。隐写文本将打印到标准输出并保存到 stego_output.txt。
python main.py decode --stego-file stego_output.txt
# 使用自定义提示词编码
python main.py encode \
--message "meet me at noon" \
--prompt "The best thing about making scrambled eggs is: "
# 解码(提示词必须完全匹配!)
python main.py decode \
--stego-file stego_output.txt \
--prompt "The best thing about making scrambled eggs is: "
# 使用不同的模型
python main.py encode \
--model "mistralai/Mistral-7B-v0.3" \
--message "secret message" \
--prompt "Every Sunday morning my grandmother would"
| 标志 | 默认值 | 描述 |
|---|
--model | meta-llama/Llama-3.2-3B | HuggingFace 模型名称/路径 |
--prompt | (菜谱 SEO 前言) | 上下文提示词(编码/解码时必须一致) |
--message | (交互式输入) | 要编码的秘密信息 |
--stego-text | 要解码的隐写文本字符串 | |
--stego-file | stego_output.txt | 隐写文本文件(编码时输出,解码时输入) |
--top-k | 256 | 用于 CDF 的 top-k 词汇表大小 |
--max-tokens | (无限制) | 最多生成的令牌数 |
--device | cuda | 设备:cuda 或 cpu |
--no-4bit | 关闭 | 禁用 4 位量化(使用 fp16;需要更多 VRAM) |