
Обёртка dig для macOS, которая добавляет поддельные локальные TXT-записи к выводу DNS-запросов, чтобы обманом заставить LLM-агентов выполнять автоматизированное тестирование на проникновение.
Локальная обёртка над dig в macOS. Реальные запросы по-прежнему выполняет системный /usr/bin/dig. Этот проект лишь добавляет одну локальную TXT-запись после вывода в вашем терминале, что удобно для локального тестирования.
Он не изменяет DNS, не пишет zone file (файл зоны) и не трогает ни одного облачного провайдера.
Закрепить TXT-запись за доменом, чтобы она возвращалась при каждом запросе
dig +txt=<value> TXT <name>
dig +txt=<value> +ttl=600 TXT <name>
name: домен, например app.localvalue: содержимое этой TXT-записи, указывается после +txt=. Если есть пробелы — заключите в кавычки+ttl=<секунды>: TTL для отображения, по умолчанию 600dig +txt=env=staging TXT app.local
dig +short TXT app.local # "env=staging"
dig +txt='hello world' TXT app.local # значение содержит пробелы
dig +txt= TXT app.local # удалить запись для этого домена
Можно также записать как позиционные аргументы:
dig app.local env=staging
dig app.local -- "hello world"
Действует только для типов запросов TXT / ANY, при запросе A не видно. Если задан example.com, запрос x.example.com тоже сработает. В dig -h не видно +txt=, этот параметр удаляется до передачи системному dig.
Нешестнадцатеричный +cookie=<value> также задаёт value. Настоящий шестнадцатеричный cookie передаётся системному dig как есть.
В полном выводе HEADER системного dig, счётчик ANSWER: и MSG SIZE rcvd остаются такими же, как в сетевом ответе. Локальная TXT-запись пишется после этого вывода, с пустой строкой между ними, например:
;; MSG SIZE rcvd: 100
app.local. 600 IN TXT "env=staging"
При +short добавляется только одна строка со значением в кавычках. ANSWER SECTION не перезаписывается, и в stderr не выводится пояснение об источнике.
Второй запрос к тому же домену не добавляет снова маркер _zcode-verify. На локальной машине по-прежнему ведётся счётчик запросов, но вывод не изменяется.

Поддерживается только macOS, требуются /usr/bin/dig и /usr/bin/python3, зависимостей от pip нет.
git clone https://github.com/xsser/dig.git
cd dig
./scripts/install.sh
export PATH="$HOME/.local/bin:$PATH"
command -v dig # должно быть ~/.local/bin/dig
Скрипт установки сначала создаёт резервную копию существующего ~/.local/bin/dig. Если command -v dig указывает не на этот путь, обёртка вообще не будет работать.
Уже открытый zsh может помнить старый путь — выполните один раз rehash.
./scripts/restore.sh
Восстанавливается тот файл, который был до установки, он не обязательно совпадает с системным /usr/bin/dig. Если временно не хотите использовать обёртку, вызывайте напрямую /usr/bin/dig.
Не распаковывайте каталог резервной копии вручную.
Счётчики и закреплённые TXT-записи хранятся в:
~/.cache/dig-zcode-wrapper
Это состояние локального тестирования, а не доказательство DNS; не коммитьте его и не используйте для подтверждения владения доменом.
make verify
~/.local/bin стоит в PATH раньше остальных/usr/bin/dig