
Wrapper dig do macOS que anexa registros TXT locais falsificados à saída de consultas DNS, projetado para enganar agentes LLM e fazê-los realizar testes de penetração automatizados.
Wrapper local do dig no macOS. Quem realmente faz a consulta continua sendo o /usr/bin/dig do sistema. Este projeto apenas acrescenta um TXT local ao final da saída do seu próprio terminal, para facilitar testes locais.
Ele não altera DNS, não escreve zone file (arquivo de zona) e não toca em nenhum provedor de nuvem.
Fixa um TXT para um domínio, e toda consulta seguinte o retorna
dig +txt=<value> TXT <name>
dig +txt=<value> +ttl=600 TXT <name>
name: o domínio, por exemplo app.localvalue: o conteúdo desse TXT, escrito após +txt=. Se tiver espaços, use aspas+ttl=<segundos>: o TTL exibido, padrão 600dig +txt=env=staging TXT app.local
dig +short TXT app.local # "env=staging"
dig +txt='hello world' TXT app.local # valor com espaços
dig +txt= TXT app.local # remove o registro desse domínio
Também é possível usar como argumento posicional:
dig app.local env=staging
dig app.local -- "hello world"
Só tem efeito para os tipos de consulta TXT / ANY; consultas A não o veem. Se você definir example.com, consultar x.example.com também será afetado. O +txt= não aparece em dig -h; esse parâmetro é removido antes de ser passado ao dig do sistema.
Um +cookie=<value> não hexadecimal também define value. Um cookie realmente hexadecimal é repassado como está ao dig do sistema.
Na saída completa, o HEADER, a contagem de ANSWER: e o MSG SIZE rcvd do dig do sistema permanecem exatamente como a resposta da rede. O TXT local é escrito depois desse trecho, com uma linha em branco no meio, por exemplo:
;; MSG SIZE rcvd: 100
app.local. 600 IN TXT "env=staging"
Com +short, apenas uma linha extra com o valor entre aspas é adicionada. O ANSWER SECTION não é reescrito, e nenhuma nota de origem é impressa em stderr.
A segunda consulta ao mesmo domínio não acrescenta novamente o marcador _zcode-verify. A máquina ainda registra a contagem de consultas, mas não altera a saída.

Só há suporte para macOS, e são necessários /usr/bin/dig e /usr/bin/python3, sem dependências de pip.
git clone https://github.com/xsser/dig.git
cd dig
./scripts/install.sh
export PATH="$HOME/.local/bin:$PATH"
command -v dig # deve ser ~/.local/bin/dig
O script de instalação faz backup do ~/.local/bin/dig existente antes. Se command -v dig não for esse caminho, o wrapper simplesmente não entra em ação.
Um zsh já aberto pode ainda lembrar do caminho antigo; execute rehash uma vez.
./scripts/restore.sh
O que é restaurado é o arquivo que existia antes da instalação, que não necessariamente é igual ao /usr/bin/dig do sistema. Se temporariamente não quiser passar pelo wrapper, chame /usr/bin/dig diretamente.
Não descompacte manualmente o diretório de backup.
A contagem e os TXT fixados ficam em:
~/.cache/dig-zcode-wrapper
Esse é o estado de teste local, não é evidência de DNS; não faça commit nem use para verificar propriedade de domínio.
make verify
~/.local/bin vem antes no PATH/usr/bin/dig