
Utilitário para anotar conjuntos de dados da Internet com metadados contextuais (ex.: AS de origem, MaxMind GeoIP2, DNS reverso e WHOIS)
ZAnnotate é um utilitário Go que facilita a anotação de grandes conjuntos de dados IP com metadados de rede. Atualmente, isso inclui:
| CLI Flag | Descrição | Precisa de Chave API | Precisa de Download de Dados |
|---|---|---|---|
--censys | Inteligência de internet da Censys (API ao vivo) | Sim | |
--cymru | ASN de Origem/Peer da Cymru e detalhes do ASN | ||
--geoasn | Dados GeoIP ASN da MaxMind | Sim | |
--geoip2 | Dados de cidade e geolocalização MaxMind GeoIP2 | Sim | |
--greynoise | Inteligência de ameaças Psychic da GreyNoise e dados de CVE | Sim (para download) | Sim |
--ipinfo | Dados ASN e geolocalização da IPInfo.io | Sim | |
--rdap | Consultas RDAP (sucessor do WHOIS) (ao vivo) | ||
--rdns | Consultas de DNS reverso (ao vivo) | ||
--routing | Dados BGP/Roteamento a partir de uma tabela de roteamento MRT | Sim | |
--spur | Spur Intelligence (ASN, organização, classificação de infraestrutura, geolocalização) | Sim |
Ir para configuração do módulo: Censys · Cymru · GeoASN · GeoIP · GreyNoise · IPInfo.io · RDAP · RDNS/DNS Reverso · Roteamento/BGP · Spur
Você pode usar qualquer combinação dos anotadores. Por exemplo, aqui estão anotações de DNS reverso e IPInfo juntas:
echo "1.1.1.1" | zannotate --rdns --ipinfo --ipinfo-database=./data-snapshots/ipinfo_lite.mmdb
{
"ip":"1.1.1.1",
"ipinfo":{"country":"Australia","country_code":"AU","continent":"Oceania","continent_code":"OC","asn":"AS13335","as_name":"Cloudflare, Inc.","as_domain":"cloudflare.com"},
"rdns":{"domain_names":["one.one.one.one"]}
}
O --help tem mais detalhes sobre cada anotador e suas flags disponíveis.
zannotate --help
O ZAnnotate pode ser instalado usando make install
make install
ou, se você não tiver o make instalado, pode usar o seguinte comando:
cd cmd/zannotate && go install
De qualquer forma, isso instalará o binário zannotate no diretório $GOPATH/bin.
Verifique se foi instalado corretamente com:
zannotate --help
Por padrão, o ZAnnotate espera endereços IP delimitados por nova linha na entrada padrão. Por exemplo:
printf "1.1.1.1\n8.8.8.8" | zannotate --rdns
{"ip":"1.1.1.1","rdns":{"domain_names":["one.one.one.one"]}}
{"ip":"8.8.8.8","rdns":{"domain_names":["dns.google"]}}
Você pode desejar anotar dados que já estão em formato JSON. Nesse caso, precisará usar a flag --input-file-type=json. Isso inserirá um campo zannotate no objeto JSON existente. Por exemplo:
echo '{"ip": "1.1.1.1"}' | zannotate --rdns --geoasn --geoasn-database=/caminho-para-geo-asn.mmdb --input-file-type=json
{"ip":"1.1.1.1","zannotate":{"geoasn":{"asn":13335,"org":"CLOUDFLARENET"},"rdns":{"domain_names":["one.one.one.one"]}}}
Se seus objetos JSON tiverem um campo diferente para o endereço IP além do padrão ip, você pode especificá-lo com a flag --input-ip-field. Por exemplo, se seus objetos JSON tiverem um campo ip_address, você pode usar:
echo '{"ip_address": "1.1.1.1"}' | zannotate --rdns --input-file-type=json --input-ip-field=ip_address
{"ip_address":"1.1.1.1","zannotate":{"rdns":{"domain_names":["one.one.one.one"]}}}
Se seus dados de entrada estiverem em formato CSV, você pode usar a flag --input-file-type=csv.
printf "nome,ip,data\n cloudflare,1.1.1.1,04-04-26\n google,8.8.8.8,04-04-26" | zannotate --rdns --input-file-type=csv
{"nome":" cloudflare","ip":"1.1.1.1","data":"04-04-26","zannotate":{"rdns":{"domain_names":["one.one.one.one"]}}}
{"nome":" google","ip":"8.8.8.8","data":"04-04-26","zannotate":{"rdns":{"domain_names":["dns.google"]}}}
Semelhante ao JSON, você pode usar a flag --input-ip-field para especificar uma coluna diferente de ip que contenha o endereço IP.
printf "nome,ip_address,data\n cloudflare,1.1.1.1,04-04-26\n google,8.8.8.8,04-04-26" | zannotate --rdns --input-file-type=csv --input-ip-field=ip_address
{"data":"04-04-26","zannotate":{"rdns":{"domain_names":["dns.google"]}},"nome":" google","ip_address":"8.8.8.8"}
{"data":"04-04-26","zannotate":{"rdns":{"domain_names":["one.one.one.one"]}},"nome":" cloudflare","ip_address":"1.1.1.1"}
Por padrão, o ZAnnotate lê endereços IP delimitados por nova linha da entrada padrão e gera um objeto JSON por linha para a saída padrão, como:
echo "1.1.1.1" | zannotate --rdns --geoasn --geoasn-database=/caminho-para-geo-asn.mmdb
{"ip":"1.1.1.1","geoasn":{"asn":13335,"org":"CLOUDFLARENET"},"rdns":{"domain_names":["one.one.one.one"]}}
Se um endereço IP não puder ser anotado, seja por erro ou falta de dados, haverá um campo vazio para essa anotação. Por exemplo, se um endereço IP for privado e, portanto, não tiver dados RDNS ou ASN, a saída será assim:
echo "127.0.0.1" | zannotate --rdns --geoasn --geoasn-database=/caminho-para-geo-asn.mmdb
{"geoasn":{},"rdns":{},"ip":"127.0.0.1"}
A flag --output-annotation-field pode ser usada para especificar um nome de campo diferente para as anotações em vez de zannotate para entradas de arquivo CSV e JSON.
Por exemplo, usando a tag de saída --output-annotation-field="info" com entrada JSON:
printf "nome,ip_address,data\n cloudflare,1.1.1.1,04-04-26\n google,8.8.8.8,04-04-26" | zannotate --rdns --input-file-type=csv --input-ip-field=ip_address --output-annotation-field="info"
{"nome":" cloudflare","ip_address":"1.1.1.1","data":"04-04-26","info":{"rdns":{"domain_names":["one.one.one.one"]}}}
{"ip_address":"8.8.8.8","data":"04-04-26","info":{"rdns":{"domain_names":["dns.google"]}},"nome":" google"}
[!NOTE] URLs e instruções podem mudar ao longo do tempo. Estas estão atualizadas até maio de 2026.
A Censys fornece dados de host e rede em toda a internet, incluindo informações sobre quais serviços estão rodando em um IP, quais certificados TLS ele possui e muito mais. Eles oferecem um nível gratuito que permite um número limitado de consultas por mês, que pode ser usado para enriquecer anotações de IP com dados da Censys.