
Utility per annotare dataset Internet con metadati contestuali (es. AS di origine, MaxMind GeoIP2, DNS inverso e WHOIS)
ZAnnotate è un'utilità Go che facilita l'annotazione di grandi set di dati IP con metadati di rete. Al momento include:
| Flag CLI | Descrizione | Necessita API Key | Necessita Download Dati |
|---|---|---|---|
--censys | Intelligence internet Censys (API live) | Sì | |
--cymru | Dettagli ASN di Origine/Peer IP e dettagli ASN Cymru | ||
--geoasn | Dati ASN MaxMind GeoIP | Sì | |
--geoip2 | Dati città e geolocalizzazione MaxMind GeoIP2 | Sì | |
--greynoise | Intelligence sulle minacce Psychic e dati CVE di GreyNoise | Sì (per scaricare) | Sì |
--ipinfo | Dati ASN e geolocalizzazione IPInfo.io | Sì | |
--rdap | Ricerche RDAP (successore di WHOIS) (live) | ||
--rdns | Ricerche DNS inverse (live) | ||
--routing | Dati BGP/Routing da una tabella di routing MRT | Sì | |
--spur | Intelligence Spur (ASN, organizzazione, classificazione infrastruttura, geolocalizzazione) | Sì |
Vai alla configurazione del modulo: Censys · Cymru · GeoASN · GeoIP · GreyNoise · IPInfo.io · RDAP · RDNS/DNS inverso · Routing/BGP · Spur
Puoi usare qualsiasi combinazione degli annotatori; ad esempio ecco insieme DNS inverso e annotazioni IPInfo:
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"]}
}
Il flag --help ha maggiori dettagli su ogni annotatore e i suoi flag disponibili
zannotate --help
ZAnnotate può essere installato usando make install
make install
oppure se non hai make installato, puoi usare il seguente comando:
cd cmd/zannotate && go install
In entrambi i casi, questo installerà il binario zannotate nella directory $GOPATH/bin.
Verifica che sia stato installato correttamente con:
zannotate --help
Di default, ZAnnotate si aspetta indirizzi IP delimitati da nuova riga sull'input standard. Ad esempio:
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"]}}
Potresti voler annotare dati già in formato JSON. In tal caso devi usare il flag --input-file-type=json.
Questo inserirà un campo zannotate nell'oggetto JSON esistente. Ad esempio:
echo '{"ip": "1.1.1.1"}' | zannotate --rdns --geoasn --geoasn-database=/path-to-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 i tuoi oggetti JSON hanno un campo diverso per l'indirizzo IP rispetto al default ip, puoi specificarlo con il flag --input-ip-field. Ad esempio, se i tuoi oggetti JSON hanno un campo ip_address:
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 i tuoi dati di input sono in formato CSV, puoi usare il flag --input-file-type=csv.
printf "name,ip,date\n cloudflare,1.1.1.1,04-04-26\n google,8.8.8.8,04-04-26" | zannotate --rdns --input-file-type=csv
{"name":" cloudflare","ip":"1.1.1.1","date":"04-04-26","zannotate":{"rdns":{"domain_names":["one.one.one.one"]}}}
{"name":" google","ip":"8.8.8.8","date":"04-04-26","zannotate":{"rdns":{"domain_names":["dns.google"]}}}
Analogamente al JSON, puoi usare il flag --input-ip-field per specificare una colonna diversa da ip che contiene l'indirizzo IP.
printf "name,ip_address,date\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
{"date":"04-04-26","zannotate":{"rdns":{"domain_names":["dns.google"]}},"name":" google","ip_address":"8.8.8.8"}
{"date":"04-04-26","zannotate":{"rdns":{"domain_names":["one.one.one.one"]}},"name":" cloudflare","ip_address":"1.1.1.1"}
Di default, ZAnnotate legge indirizzi IP delimitati da nuova riga dall'input standard e produce un oggetto JSON per riga sull'output standard come:
echo "1.1.1.1" | zannotate --rdns --geoasn --geoasn-database=/path-to-geo-asn.mmdb
{"ip":"1.1.1.1","geoasn":{"asn":13335,"org":"CLOUDFLARENET"},"rdns":{"domain_names":["one.one.one.one"]}}
Se un indirizzo IP non può essere annotato, a causa di un errore o mancanza di dati, ci sarà un campo vuoto per quella annotazione. Ad esempio, se un indirizzo IP è privato e quindi non ha dati RDNS o ASN, l'output sarà simile a:
echo "127.0.0.1" | zannotate --rdns --geoasn --geoasn-database=/path-to-geo-asn.mmdb
{"geoasn":{},"rdns":{},"ip":"127.0.0.1"}
Il flag --output-annotation-field può essere usato per specificare un nome di campo diverso per le annotazioni invece di zannotate sia per input CSV che JSON.
Ad esempio usando il tag di output --output-annotation-field="info" con input JSON:
printf "name,ip_address,date\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"
{"name":" cloudflare","ip_address":"1.1.1.1","date":"04-04-26","info":{"rdns":{"domain_names":["one.one.one.one"]}}}
{"ip_address":"8.8.8.8","date":"04-04-26","info":{"rdns":{"domain_names":["dns.google"]}},"name":" google"}
[!NOTE] URL e istruzioni potrebbero cambiare nel tempo. Questi sono aggiornati a maggio 2026.
Censys fornisce dati host e di rete a livello Internet, incluse informazioni su quali servizi sono in esecuzione su un IP, quali certificati TLS ha, e altro ancora. Offrono un livello gratuito che permette un numero limitato di query al mese, che può essere usato per arricchire le annotazioni IP con i dati Censys.