
Utilitaire pour annoter des ensembles de données Internet avec des métadonnées contextuelles (par ex., origin AS, MaxMind GeoIP2, reverse DNS, et WHOIS)
ZAnnotate est un utilitaire Go qui facilite l'annotation de grands ensembles d'adresses IP avec des métadonnées réseau. Actuellement, cela inclut :
| CLI Flag | Description | Nécessite une clé API | Nécessite un téléchargement de données |
|---|---|---|---|
--censys | Renseignement internet Censys (API live) | Oui | |
--cymru | ASN d'origine/paire Cymru et détails ASN | ||
--geoasn | Données ASN MaxMind GeoIP | Oui | |
--geoip2 | Données de ville et de géolocalisation MaxMind GeoIP2 | Oui | |
--greynoise | Renseignement sur les menaces Psychic GreyNoise et données CVE | Oui (pour télécharger) | Oui |
--ipinfo | Données ASN et géolocalisation IPInfo.io | Oui | |
--rdap | Recherches RDAP (successeur WHOIS) (live) | ||
--rdns | Recherches DNS inversées (live) | ||
--routing | Données BGP/Routage à partir d'une table de routage MRT | Oui | |
--spur | Renseignement Spur (ASN, organisation, classification d'infrastructure, géolocalisation) | Oui |
Accéder à la configuration du module : Censys · Cymru · GeoASN · GeoIP · GreyNoise · IPInfo.io · RDAP · RDNS/DNS inversé · Routage/BGP · Spur
Vous pouvez utiliser n'importe quelle combinaison des annotateurs, par exemple voici les annotations DNS inversé et IPInfo ensemble :
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"]}
}
L'option --help donne plus de détails sur chaque annotateur et ses drapeaux disponibles.
zannotate --help
ZAnnotate peut être installé en utilisant make install
make install
ou si vous n'avez pas make d'installé, vous pouvez utiliser la commande suivante :
cd cmd/zannotate && go install
Dans les deux cas, cela installera le binaire zannotate dans votre répertoire $GOPATH/bin.
Vérifiez qu'il a été installé correctement avec :
zannotate --help
Par défaut, ZAnnotate attend des adresses IP délimitées par des sauts de ligne sur l'entrée standard. Par exemple :
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"]}}
Vous pouvez souhaiter annoter des données déjà au format JSON. Vous devrez alors utiliser le drapeau --input-file-type=json.
Cela insérera un champ zannotate dans l'objet JSON existant. Par exemple :
echo '{"ip": "1.1.1.1"}' | zannotate --rdns --geoasn --geoasn-database=/chemin-vers-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"]}}}
Si vos objets JSON ont un champ différent pour l'adresse IP que le champ par défaut ip, vous pouvez le spécifier avec le drapeau --input-ip-field. Par exemple, si vos objets JSON ont un ip_address, vous pouvez utiliser :
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"]}}}
Si vos données d'entrée sont au format CSV, vous pouvez utiliser le drapeau --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"]}}}
Comme pour JSON, vous pouvez utiliser le drapeau --input-ip-field pour spécifier une colonne autre que ip qui contient l'adresse 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"}
Par défaut, ZAnnotate lit les adresses IP délimitées par des sauts de ligne depuis l'entrée standard et affiche un objet JSON par ligne sur la sortie standard, comme ceci :
echo "1.1.1.1" | zannotate --rdns --geoasn --geoasn-database=/chemin-vers-geo-asn.mmdb
{"ip":"1.1.1.1","geoasn":{"asn":13335,"org":"CLOUDFLARENET"},"rdns":{"domain_names":["one.one.one.one"]}}
Si une adresse IP ne peut pas être annotée, soit en raison d'une erreur soit d'un manque de données, le champ correspondant sera vide. Par exemple, si une adresse IP est privée et n'a donc ni données RDNS ni ASN, la sortie ressemblera à :
echo "127.0.0.1" | zannotate --rdns --geoasn --geoasn-database=/chemin-vers-geo-asn.mmdb
{"geoasn":{},"rdns":{},"ip":"127.0.0.1"}
Le drapeau --output-annotation-field peut être utilisé pour spécifier un nom de champ différent pour les annotations au lieu de zannotate pour les entrées de fichiers CSV et JSON.
Par exemple, en utilisant la balise de sortie --output-annotation-field="info" avec une entrée 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] Les URL et les instructions peuvent changer avec le temps. Celles-ci sont à jour en mai 2026.
Censys fournit des données hôtes et réseau à l'échelle d'Internet, y compris des informations sur les services exécutés sur une IP, les certificats TLS qu'elle possède, et plus encore. Ils proposent un niveau gratuit qui permet un nombre limité de requêtes par mois, qui peut être utilisé pour enrichir les annotations IP avec les données Censys.