TarzEH/janus

GitHub: TarzEH/janus

一个离线、确定性的命令行 prompt injection payload 生成器,将输入指令转换为多种已记录的注入技术并默认进行混淆。

Stars: 0 | Forks: 0

JANUS **输入你的文本。输出注入 payload。** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/TarzEH/janus/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg?style=flat-square)](.nvmrc)
janus turning one instruction into an obfuscated payload 输入一条指令,为每种已记录的技术输出一个 payload,默认进行混淆。这就是该工具的全部功能。 它不执行攻击,不对响应进行评分,不探测你的目标,也不发起任何网络请求。它只是一个过滤器——用于 prompt injection 的 `sed`。 ## 为什么会有这个工具 生态系统中的每一个 prompt injection 转换都存在于扫描器中。 [PyRIT](https://github.com/microsoft/PyRIT) 拥有 85 个转换器,却没有 `convert` 命令。[garak](https://github.com/NVIDIA/garak) 拥有各种增益,但它们是合并而不是链式组合。[promptfoo](https://www.promptfoo.dev/docs/red-team/) 编写 YAML。专门的 ASCII 走私工具只是一个网页。 没有人提供 `echo "text" | tool` 这样的方式。这就是本工具。 ## 安装 ``` curl -fsSL https://raw.githubusercontent.com/TarzEH/janus/main/install.sh | sh # macOS / Linux irm https://raw.githubusercontent.com/TarzEH/janus/main/install.ps1 | iex # Windows ``` 独立二进制文件,在接触你的 `PATH` 之前,会针对 `SHA256SUMS` 进行校验和验证。将互联网上的脚本通过管道传递给 shell,正是本项目想要探讨的供应链问题——先阅读它;去掉 `| sh`,它就只会进行打印。
其他安装方式 ``` npm i -g janus-cli npx janus-cli --help npm ci && npm run build # from source: dist/janus.js npm run build:binaries # standalone binaries, needs bun ``` 卸载只需删除该二进制文件。除非你使用 `-o` 要求,否则 JANUS 不会向磁盘写入任何内容。
## 用法 ``` janus -i "INSTRUCTION" # instruction on argv echo "INSTRUCTION" | janus # or stdin janus prompt.txt # or a file janus --input="--ignore all" # when it starts with a dash ``` | | | |---|---| | `-t, --technique SEL` | 限制池范围。`JNS-0017`、`C1`..`C8`、类别 slug 或 `all`。 | | `-x, --exclude SEL` | 在 `-t` 之后从池中移除。 | | `-m, --mutate SPEC` | `recommended`(默认)· `none` · `id,id,…` | | `-n, --count N` | 在 N 之后停止。 | | `-s, --seed S` | 可复现性。如果省略,将生成并输出到 stderr。 | | `-o, --output 'p-%n.txt'` | 每个 payload 一个文件。 | | `-q` · `-l, --list` · `-h` · `-V` | | ### 输出格式 **Payload 在设计上是多行的,因此不能用换行符分隔。** 将 19 个 payload 作为换行符分隔的文本提供给面向行的消费者,你会得到 215 条记录,而不是 19 条——这与 [hashcat `--stdout`](https://github.com/hashcat/hashcat/issues/4673) 的缺陷相同。 | | | |---|---| | `-0, --null` | 每个 payload 后加 NUL。**管道传输时的默认值。** | | `-J, --jsonl` | 每行一个 JSON 字符串。无损,对 `head` 和 `wc -l` 安全。 | | `--raw` | 换行符分隔。有歧义;会发出警告。 | | `--pretty` | 人类可读视图。终端下的默认值,永远不会输出到管道。 | ``` janus -i "..." | xargs -0 -n1 curl -sd # NUL, the way find -print0 works janus -i "..." --jsonl | jq -r . # round-trips to exact bytes janus -i "..." -o 'payload-%n.txt' # one file each ``` stdout 输出 payload。其他所有内容——seed、警告、跳过的技术——都在 stderr 中。退出代码遵循 `grep`:**0** 个 payload · **1** 未输出任何内容 · **2** 用法 · **3** 拒绝。 ## 是什么让 payload “升级”了 混淆**默认开启**。该集合是根据测量的 guardrail 绕过率来选择的,而不是根据新颖程度——数据来自 [Hackett et al., LLMSec 2025](https://arxiv.org/abs/2504.11168),除非另有说明: | mutator | injection / jailbreak evasion | |---|---| | `emoji-smuggling` | **100% / 100%** — 不可见的变体选择符 | | `upside-down` | — / **~100%** | | `unicode-tags` | 90% / 82% | | `bidi-override` | 79% / 99% — [Trojan Source](https://trojansource.codes/),CVE-2021-42574 | | `char-spacing` | Meta Prompt-Guard-86M: **3% → ~100%** | | `flip-attack` | ~98% ASR,~98% guardrail 绕过 ([arXiv:2410.02832](https://arxiv.org/abs/2410.02832)) | | `sneaky-bits` | 不可见的二进制,与标签不同的 codepoint 块 | 根据研究结果,有三件事被固化了下来: - **两层,而不是一层。** 链式组合是收益的来源——在 GPT-4 上,单独使用 base64 测量结果为 34%,而链式组合为 94%。[LACE](https://arxiv.org/abs/2402.10601) 指出最佳层数是两层,这正是默认链所实现的。 - **每个编码器都会说明如何解码它。** 单独的载体表现不佳;明确的解码指令最高可带来 +95 个百分点的提升。 - **你的指令输出时将逐字节保持一致。** 在运行 mutator 之前它已被锁定,因此混淆会重排其周围的所有内容并保持其原样。当链无法保留它时,你会在 stderr 收到警告。 ## 它永远不会做的事情 执行攻击 · 对响应进行评分 · 发起网络请求 · 编写任何你没有要求的内容 · 提供优化过的对抗性后缀(C6 已被记录,但从未被生成)。 `janus` 拒绝五个公开的类别——能够造成大规模伤亡的武器、CSAM、功能性恶意软件、凭证钓鱼工具包、针对性骚扰——并在退出时输出 **3** 并指出类别名称。该检查**只是一个正则表达式,并且是可以被绕过的。** 这不是暗示:而是声明该控制措施是单薄且刻意的。该工具接受自由文本,因此没有其他可能的情况。请参阅 [SECURITY.md](SECURITY.md)。 ## 免责声明 仅对你**拥有**或获得**明确书面授权**进行测试的目标使用此工具。未经授权的测试在大多数司法管辖区都是犯罪行为,而本工具不能作为辩护理由。 [MIT](LICENSE) © 2026 TarzEH · [SECURITY](SECURITY.md) · [CONTRIBUTING](CONTRIBUTING.md) · [ARCHITECTURE](docs/ARCHITECTURE.md)
标签:DLL 劫持, GNU通用公共许可证, MITM代理, Node.js, 人工智能安全, 合规性, 大语言模型, 提示注入, 文档结构分析, 自动化攻击, 集群管理