
macOS向けのdigラッパー。DNSクエリ出力に偽装されたローカルTXTレコードを追加し、LLMエージェントを欺いて自動ペネトレーションテストを実行させるように設計されています。
macOS 上のローカル dig ラッパー。実際にクエリを投げるのはシステム標準の /usr/bin/dig のまま。このプロジェクトは自分のターミナル出力の末尾にローカル TXT を 1 行追加するだけで、ローカルテストを便利にする。
DNS は変更せず、zone file(ゾーンファイル)も書かず、どのクラウドベンダーにも触れない。
あるドメインに TXT を 1 件固定し、以降のクエリで毎回返す
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 に渡される前に剥がされる。
非 16 進数の +cookie=<value> も同様に value を設定する。実際の 16 進数 cookie はそのままシステムの dig に渡される。
完全な出力では、システム dig の HEADER、ANSWER: カウント、MSG SIZE rcvd はネットワーク応答のまま保持される。ローカル TXT はこの出力の後に、間に空行を 1 行挟んで書かれる。例:
;; MSG SIZE rcvd: 100
app.local. 600 IN TXT "env=staging"
+short の場合は引用符付きの値が 1 行増えるだけ。ANSWER SECTION は書き換えず、stderr にソースの説明も出力しない。
同じドメインの 2 回目のクエリでは _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 が使用する DNS ネットワークパスも変更しない