
Dienstprogramm zum Annotieren von Internet-Datensätzen mit kontextuellen Metadaten (z.B. Origin AS, MaxMind GeoIP2, Reverse-DNS und WHOIS)
ZAnnotate ist ein Go-Dienstprogramm, das die Annotation großer IP-Datensätze mit Netzwerkmetadaten erleichtert. Derzeit umfasst dies:
| CLI-Flag | Beschreibung | Benötigt API-Schlüssel | Benötigt Daten-Download |
|---|---|---|---|
--censys | Censys Internet-Intelligenz (Live-API) | Ja | |
--cymru | Cymru IP-Ursprungs-/Peer-ASN und ASN-Details | ||
--geoasn | MaxMind GeoIP ASN-Daten | Ja | |
--geoip2 | MaxMind GeoIP2 Stadt- und Geolokalisierungsdaten | Ja | |
--greynoise | GreyNoise Psychic-Bedrohungsintelligenz und CVE-Daten | Ja (zum Herunterladen) | Ja |
--ipinfo | IPInfo.io ASN- und Geolokalisierungsdaten | Ja | |
--rdap | RDAP (WHOIS-Nachfolger) - Live-Abfragen | ||
--rdns | Reverse-DNS-Abfragen (live) | ||
--routing | BGP/Routing-Daten aus einer MRT-Routing-Tabelle | Ja | |
--spur | Spur-Intelligenz (ASN, Organisation, Infrastrukturklassifikation, Geolokalisierung) | Ja |
Springe zur Modul-Einrichtung: Censys · Cymru · GeoASN · GeoIP · GreyNoise · IPInfo.io · RDAP · RDNS/Reverse DNS · Routing/BGP · Spur
Sie können jede beliebige Kombination der Annotatoren verwenden, hier ist zum Beispiel eine Kombination aus Reverse-DNS- und IPInfo-Annotationen:
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"]}
}
--help enthält weitere Details zu jedem Annotator und seinen verfügbaren Flags.
zannotate --help
ZAnnotate kann mit make install installiert werden:
make install
Oder, falls make nicht installiert ist, können Sie den folgenden Befehl verwenden:
cd cmd/zannotate && go install
In beiden Fällen wird die Binärdatei zannotate in Ihrem $GOPATH/bin-Verzeichnis installiert.
Überprüfen Sie die korrekte Installation mit:
zannotate --help
Standardmäßig erwartet ZAnnotate zeilenweise getrennte IP-Adressen auf der Standardeingabe. Zum Beispiel:
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"]}}
Möglicherweise möchten Sie Daten annotieren, die bereits im JSON-Format vorliegen. Verwenden Sie dann das Flag --input-file-type=json. Dadurch wird ein zannotate-Feld in das vorhandene JSON-Objekt eingefügt. Zum Beispiel:
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"]}}}
Wenn Ihre JSON-Objekte ein anderes Feld für die IP-Adresse als das Standardfeld ip haben, können Sie dies mit dem Flag --input-ip-field angeben. Wenn Ihre JSON-Objekte beispielsweise ein ip_address-Feld haben, können Sie Folgendes verwenden:
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"]}}}
Wenn Ihre Eingabedaten im CSV-Format vorliegen, können Sie das Flag --input-file-type=csv verwenden.
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"]}}}
Analog zu JSON können Sie das Flag --input-ip-field verwenden, um eine andere Spalte als ip anzugeben, die die IP-Adresse enthält.
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"}
Standardmäßig liest ZAnnotate zeilenweise getrennte IP-Adressen von der Standardeingabe und gibt für jede Zeile ein JSON-Objekt auf der Standardausgabe aus, wie hier:
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"]}}
Wenn eine IP-Adresse nicht annotiert werden kann, sei es aufgrund eines Fehlers oder fehlender Daten, erscheint für diese Annotation ein leeres Feld. Wenn eine IP-Adresse beispielsweise privat ist und daher keine RDNS- oder ASN-Daten hat, sieht die Ausgabe wie folgt aus:
echo "127.0.0.1" | zannotate --rdns --geoasn --geoasn-database=/path-to-geo-asn.mmdb
{"geoasn":{},"rdns":{},"ip":"127.0.0.1"}
Das Flag --output-annotation-field kann verwendet werden, um einen anderen Feldnamen für die Annotationen anstelle von zannotate für CSV- und JSON-Dateieingaben anzugeben.
Beispiel mit dem Ausgabe-Tag --output-annotation-field="info" und JSON-Eingabe:
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] URLs und Anleitungen können sich im Laufe der Zeit ändern. Diese sind Stand Mai 2026 aktuell.
Censys bietet internetweite Host- und Netzwerkdaten, einschließlich Informationen darüber, welche Dienste auf einer IP ausgeführt werden, welche TLS-Zertifikate vorhanden sind und mehr. Sie bieten einen kostenlosen Tarif an, der eine begrenzte Anzahl von Abfragen pro Monat ermöglicht, mit dem IP-Annotationen mit Censys-Daten angereichert werden können.