
इंटरनेट डेटासेट्स को प्रासंगिक मेटाडेटा (जैसे, मूल AS, MaxMind GeoIP2, रिवर्स DNS, और WHOIS) के साथ एनोटेट करने की उपयोगिता
ZAnnotate एक Go उपयोगिता है जो बड़े IP डेटासेट को नेटवर्क मेटाडेटा के साथ एनोटेट करने की सुविधा प्रदान करती है। अभी इसमें शामिल हैं:
| CLI Flag | विवरण | API कुंजी चाहिए | डेटा डाउनलोड चाहिए |
|---|---|---|---|
--censys | Censys इंटरनेट इंटेलिजेंस (लाइव API) | हाँ | |
--cymru | Cymru IP ओरिजिन/पीयर ASN और ASN विवरण | ||
--geoasn | MaxMind GeoIP ASN डेटा | हाँ | |
--geoip2 | MaxMind GeoIP2 सिटी और जियोलोकेशन डेटा | हाँ | |
--greynoise | GreyNoise Psychic थ्रेट इंटेलिजेंस और CVE डेटा | हाँ (डाउनलोड करने के लिए) | हाँ |
--ipinfo | IPInfo.io ASN और जियोलोकेशन डेटा | हाँ | |
--rdap | RDAP (WHOIS उत्तराधिकारी) लुकअप (लाइव) | ||
--rdns | रिवर्स DNS लुकअप (लाइव) | ||
--routing | MRT रूटिंग टेबल से BGP/रूटिंग डेटा | हाँ | |
--spur | Spur इंटेलिजेंस (ASN, संगठन, इन्फ्रास्ट्रक्चर वर्गीकरण, जियोलोकेशन) | हाँ |
मॉड्यूल सेटअप पर जाएँ: Censys · Cymru · GeoASN · GeoIP · GreyNoise · IPInfo.io · RDAP · RDNS/रिवर्स DNS · रूटिंग/BGP · Spur
आप एनोटेटर्स के किसी भी संयोजन का उपयोग कर सकते हैं, उदाहरण के लिए यहाँ रिवर्स DNS और 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"]}
}
--help में प्रत्येक एनोटेटर के बारे में अधिक विवरण और उपलब्ध फ्लैग होते हैं।
zannotate --help
ZAnnotate को make install का उपयोग करके इंस्टॉल किया जा सकता है।
make install
या यदि आपके पास make इंस्टॉल नहीं है, तो आप निम्न कमांड का उपयोग कर सकते हैं:
cd cmd/zannotate && go install
किसी भी तरह से, यह zannotate बाइनरी को आपकी $GOPATH/bin निर्देशिका में इंस्टॉल करेगा।
जाँचें कि यह सही ढंग से इंस्टॉल हुआ है:
zannotate --help
डिफ़ॉल्ट रूप से, ZAnnotate मानक इनपुट पर न्यू-लाइन से सीमांकित IP पतों की अपेक्षा करता है। उदाहरण के लिए:
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"]}}
आप उस डेटा को एनोटेट करना चाह सकते हैं जो पहले से JSON प्रारूप में है। तब आपको --input-file-type=json फ्लैग का उपयोग करना होगा। यह मौजूदा JSON ऑब्जेक्ट में एक zannotate फ़ील्ड सम्मिलित करेगा। उदाहरण के लिए:
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"]}}}
यदि आपके JSON ऑब्जेक्ट्स में IP पते के लिए डिफ़ॉल्ट ip से भिन्न फ़ील्ड है, तो आप उसे --input-ip-field फ्लैग के साथ निर्दिष्ट कर सकते हैं। उदाहरण के लिए, यदि आपके JSON ऑब्जेक्ट्स में 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"]}}}
यदि आपका इनपुट डेटा CSV प्रारूप में है, तो आप --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"]}}}
JSON के समान, आप --input-ip-field फ्लैग का उपयोग करके ip के अलावा कोई अन्य कॉलम निर्दिष्ट कर सकते हैं जिसमें 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"}
डिफ़ॉल्ट रूप से, ZAnnotate मानक इनपुट से न्यू-लाइन सीमांकित IP पते पढ़ता है और मानक आउटपुट पर प्रति पंक्ति एक JSON ऑब्जेक्ट आउटपुट करता है, जैसे:
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"]}}
यदि किसी IP पते को किसी त्रुटि या डेटा की कमी के कारण एनोटेट नहीं किया जा सकता है, तो उस एनोटेशन के लिए एक खाली फ़ील्ड होगी। उदाहरण के लिए, यदि कोई IP पता निजी है और इसलिए उसके पास कोई RDNS या ASN डेटा नहीं है, तो आउटपुट इस प्रकार दिखेगा:
echo "127.0.0.1" | zannotate --rdns --geoasn --geoasn-database=/path-to-geo-asn.mmdb
{"geoasn":{},"rdns":{},"ip":"127.0.0.1"}
--output-annotation-field फ्लैग का उपयोग CSV और JSON फ़ाइल इनपुट दोनों के लिए एनोटेशन के लिए zannotate के स्थान पर एक अलग फ़ील्ड नाम निर्दिष्ट करने के लिए किया जा सकता है।
उदाहरण के लिए JSON इनपुट के साथ आउटपुट टैग --output-annotation-field="info" का उपयोग करना:
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 और निर्देश समय के साथ बदल सकते हैं। ये मई 2026 तक अद्यतन हैं।
Censys इंटरनेट-व्यापक होस्ट और नेटवर्क डेटा प्रदान करता है, जिसमें जानकारी शामिल है कि IP पर कौन सी सेवाएँ चल रही हैं, उसके पास कौन से TLS प्रमाणपत्र हैं, और भी बहुत कुछ। वे एक मुफ्त टियर प्रदान करते हैं जो प्रति माह सीमित संख्या में क्वेरी की अनुमति देता है, जिसका उपयोग Censys डेटा के साथ IP एनोटेशन को समृद्ध करने के लिए किया जा सकता है।
[!NOTE] मुफ्त खाता (अप्रैल 2026 तक) एक एकल समवर्ती अनुरोध और प्रति माह 100 अनुरोधों की अनुमति देता है। एक बार जब आप अपने सभी क्रेडिट का उपयोग कर लेते हैं, तो Censys API अगले महीने की शुरुआत में आपके क्रेडिट रीसेट होने या आप अतिरिक्त क्रेडिट खरीदने तक आगे के अनुरोधों पर एक त्रुटि लौटाएगा। यदि ऐसा होता है तो ZAnnotate मौन त्रुटियों को रोकने के लिए एक त्रुटि के साथ बाहर निकल जाएगा, इसलिए यदि आपके पास एनोटेट करने के लिए एक बड़ा डेटासेट है, तो अपने क्रेडिट उपयोग का ध्यान रखें और केवल उन IPs को एनोटेट करने को प्राथमिकता दें जिनके लिए आपके पास क्रेडिट है। चूँकि मुफ्त खाता केवल एक एकल समवर्ती अनुरोध प्रदान करता है, आप
--censys-threads=1छोड़ना चाहेंगे जब तक कि आप उच्च टियर के लिए भुगतान न करें।
echo "8.8.8.8" | zannotate --censys --censys-pat="CENSYS_PAT_HERE"
परिणाम संक्षिप्तता के लिए छोटे किए गए:
{
"ip":"8.8.8.8",
"censys": {
"whois":{
"network":{ "name":"Google LLC","cidrs":["8.8.8.0/24"],"created":"2023-12-28T00:00:00Z","updated":"2023-12-28T00:00:00Z","allocation_type":"ALLOCATION","handle":"GOGL"},
"organization":{"state":"CA","postal_code":"94043","country":"US","tech_contacts":[{"handle":"ZG39-ARIN","name":"Google LLC","email":"[email protected]"}],
"handle":"GOGL","street":"1600 Amphitheatre Parkway","abuse_contacts":[{"handle":"ABUSE5250-ARIN","name":"Abuse","email":"[email protected]"}],
"admin_contacts":[{"handle":"ZG39-ARIN","name":"Google LLC","email":"[email protected]"}],
"name":"Google LLC",
"city":"Mountain View"}},
"services":[{
"port":53,"protocol":"DNS","transport_protocol":"udp","ip":"8.8.8.8","scan_time":"2026-04-10T02:55:53Z"}]}}
Cymru IP पतों के लिए ASN और BGP पीयरिंग जानकारी प्रदान करता है। आप इस जानकारी के लिए Cymru से क्वेरी करने हेतु --cymru फ्लैग का उपयोग कर सकते हैं।
Cymru ने यह जानकारी प्रदान करने के लिए एक DNS सेवा स्थापित की है और डिफ़ॉल्ट रूप से ZAnnotate क्वेरी करने के लिए आपके सिस्टम के डिफ़ॉल्ट DNS रिज़ॉल्वर का उपयोग करेगा।
यदि आप अपने स्थानीय DNS रिज़ॉल्वर का उपयोग करके टाइमआउट देख रहे हैं, तो आप --cymru-dns-servers फ्लैग के साथ कस्टम रिज़ॉल्वर निर्दिष्ट कर सकते हैं।
--cymru-threads और --cymru-timeout भी Cymru एनोटेशन के प्रदर्शन को कॉन्फ़िगर करने के लिए उपलब्ध हैं, डिफ़ॉल्ट अधिकांश DNS रिज़ॉल्वर के साथ टाइमआउट से बचते हुए अच्छा प्रदर्शन पाने के लिए सेट किए गए हैं।
डिफ़ॉल्ट रूप से, Cymru एनोटेटर ओरिजिन और पीयर ASs' के साथ-साथ सभी ASNs पर AS विवरण प्राप्त करता है। यदि आप एक सबसेट चाहते हैं, तो निम्न फ्लैग उपलब्ध हैं:
--cymru-annotate-origin-as, --cymru-annotate-peer-as, और --cymru-annotate-as-details
printf "1.1.1.1" | ./zannotate --cymru --cymru-dns-servers=1.1.1.1,1.0.0.1
{"ip":"207.243.195.103","cymru":{"origin_asns":[7018],"peer_asns":[6939,1299,2914,3257,6461,6762],"asn_details":{"7018":{"asn":7018,"country_code":"US","registry":"arin","asn_allocation_date":"1996-07-30","asn_description":"ATT-INTERNET4 - AT&T Enterprises, LLC, US"},"6939":{"asn":6939,"country_code":"US","registry":"arin","asn_allocation_date":"1996-06-28","asn_description":"HURRICANE - Hurricane Electric LLC, US"},"1299":{"asn":1299,"country_code":"SE","registry":"ripencc","asn_allocation_date":"1993-09-01","asn_description":"TWELVE99 Arelion, fka Telia Carrier, SE"},"2914":{"asn":2914,"country_code":"US","registry":"arin","asn_allocation_date":"1998-12-07","asn_description":"NTT-DATA-2914 - NTT America, Inc., US"},"3257":{"asn":3257,"country_code":"US","registry":"ripencc","asn_allocation_date":"1994-09-30","asn_description""GTT-BACKBONE GTT, US"},"6461":{"asn":6461,"country_code":"US","registry":"arin","asn_allocation_date":"1996-04-22","asn_description":"ZAYO-6461 - Zayo Bandwidth, US"},"6762":{"asn":6762,"country_code":"IT","registry":"ripencc","asn_allocation_date":"1996-09-12","asn_description":"SEABONE-NET TELECOM ITALIA SPARKLE S.p.A., IT"}},"prefix_details":{"207.242.0.0/15":{"prefix":"207.242.0.0/15","origin_asns":[7018],"peer_asns":[1299,2914,3257,6461,6762,6939],"country_code":"US","registry":"arin","allocation_date":"1996-11-01" }}}}
GreyNoise एक IP इंटेलिजेंस फ़ीड है जो थ्रेट वर्गीकरण और संबद्ध CVEs जैसे मेटाडेटा प्रदान करता है।
उनके Psychic डेटा डाउनलोड ऑफ़लाइन डेटा एनरिचमेंट के लिए उपयुक्त डेटाबेस में उनका डेटा फ़ीड प्रदान करते हैं।
zannotate के साथ उनके डाउनलोड का उपयोग करने के लिए, आप अपनी GreyNoise API कुंजी का उपयोग करके एक .mmdb प्रारूपित फ़ाइल डाउनलोड करना चाहेंगे।
अप्रैल 2026 तक, मुफ्त खाते के साथ साइन अप करने से डेटा डाउनलोड तक पहुँच मिलती है।
mmdb फ़ाइल डाउनलोड करें। नीचे दिया गया कमांड एक एकल तिथि (7 अप्रैल, 2026) के लिए डेटा डाउनलोड करता है। आप कई दिनों की सीमा के लिए और विभिन्न स्तरों के विवरण वाले मॉडल के लिए भी डेटा डाउनलोड कर सकते हैं — अधिक विवरण के लिए GreyNoise की Psychic दस्तावेज़ीकरण देखें।curl -H "key: GREYNOISE_API_KEY_HERE" \
https://psychic.labs.greynoise.io/v1/psychic/download/2026-04-07/3/mmdb \
-o /tmp/m3.mmdb
[!NOTE] नीचे दिए गए उदाहरण उपरोक्त
curlकमांड से सटीक डेटा डाउनलोड का उपयोग करते हैं। आपको जो परिणाम दिखाई देंगे वे डाउनलोड किए गए डेटा पर निर्भर करेंगे।
echo "14.1.105.157" | zannotate --greynoise --greynoise-database=/tmp/m3.mmdb
{"greynoise":{"classification":"malicious","cves":["CVE-2015-2051","CVE-2016-20016","CVE-2018-10561","CVE-2018-10562","CVE-2016-6277","CVE-2024-12847"],"date":"2026-04-07","handshake_complete":true,"last_seen":"2026-04-07T00:00:00Z","seen":true,"tags":["Mirai TCP Scanner","Mirai","Telnet Protocol","Generic IoT Default Password Attempt","Web Crawler","Generic Suspicious Linux Command in Request","HNAP Crawler","Telnet Login Attempt","D-Link Devices HNAP SOAPAction Header RCE Attempt","MVPower CCTV DVR RCE CVE-2016-20016 Attempt","JAWS Webserver RCE","GPON CVE-2018-10561 Router Worm","Generic ${IFS} Use in RCE Attempt","CCTV-DVR RCE","NETGEAR Command Injection CVE-2016-6277","NETGEAR DGN setup.cgi CVE-2024-12847 Command Execution Attempt","CGI Script Scanner"],"actor":"unknown"},"ip":"14.1.105.157"}
ध्यान दें कि कई IPs GreyNoise डेटासेट में नहीं होंगे, इसलिए आपको निम्न जैसा आउटपुट देखने को मिल सकता है:
echo "1.1.1.1" | zannotate --greynoise --greynoise-database=/tmp/m3.mmdb
{"ip":"1.1.1.1","greynoise":{}}
IPInfo.io एक मुफ्त डेटासेट प्रदान करता है जिसमें ASN और जियोलोकेशन डेटा शामिल है, जो देश स्तर तक सीमित है। भुगतान किए गए टियर अधिक सूक्ष्म जियोलोकेशन डेटा प्रदान करते हैं।
mmdb फ़ाइल डाउनलोड करें

echo "1.1.1.1" | zannotate --ipinfo --ipinfo-database=./path-to-ipinfo-db.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"}}
MaxMind IP जियोलोकेशन और ASN डेटा के लिए डेटासेट मुफ्त (GeoLite) और भुगतान (GeoIP) दोनों संस्करणों में प्रदान करता है। इसके अतिरिक्त, GeoLite और GeoIP दोनों डेटासेट दो एक्सेस पैटर्न में आते हैं - एक डाउनलोड करने योग्य डेटाबेस फ़ाइल जिसे स्थानीय रूप से क्वेरी किया जा सकता है और एक वेब API। ZAnnotate में GeoIP मॉड्यूल GeoLite और GeoIP दोनों संस्करणों में स्थानीय डेटाबेस का समर्थन करता है।
निम्नलिखित मानता है कि आप मुफ्त GeoLite डेटासेट का उपयोग करना चाहते हैं, लेकिन भुगतान किए गए GeoIP डेटा के लिए प्रक्रिया समान है।

.mmdb फ़ाइलों को कहीं रखें और नीचे दिए गए के साथ परीक्षण करें।echo "171.67.71.209" | zannotate --geoip2 --geoip2-database=./path-to-geolite2.mmdb
{
"ip":"171.67.71.209",
"geoip2":{
"city":{"name":"Vallejo","id":5405380},
"country":{"name":"United States","code":"US","id":6252001},
"continent":{"name":"North America","code":"NA","id":6255149},
"postal":{"code":"94590"},
"latlong":{"accuracy_radius":50,"latitude":38.1043,"longitude":-122.2442,"metro_code":807,"time_zone":"America/Los_Angeles"},
"represented_country":{},
"registered_country":{"name":"United States","code":"US","id":6252001},
"metadata":{}}
}
echo "171.67.71.209" | zannotate --geoasn --geoasn-database=/path-to-asn-file.mmdb
{"ip":"171.67.71.209","geoasn":{"asn":32,"org":"STANFORD"}}
RDAP (रजिस्ट्रेशन डेटा एक्सेस प्रोटोकॉल) एक प्रोटोकॉल है जिसका उपयोग IP पतों और डोमेन नामों जैसे इंटरनेट संसाधनों के लिए पंजीकरण डेटा तक पहुँचने के लिए किया जाता है और यह WHOIS का उत्तराधिकारी है। ZAnnotate IPs के लिए पंजीकरण डेटा प्राप्त करने हेतु RDAP सर्वर से क्वेरी कर सकता है।
echo "1.1.1.1" | zannotate --rdap
परिणाम संक्षिप्तता के लिए छोटे किए गए:
{
"ip":"1.1.1.1",
"whois": {
"DecodeData": {},
"Lang": "",
"Conformance": [
"history_version_0",
"nro_rdap_profile_0",
"cidr0",
"rdap_level_0"
],
"ObjectClassName": "ip network"
}
}
यह आपको RDAP सर्वर पर सीधी क्वेरी के समान आउटपुट देगा, उदाहरण के लिए:
rdap 1.1.1.1
IP Network:
Handle: 1.1.1.0 - 1.1.1.255
Start Address: 1.1.1.0
End Address: 1.1.1.255
IP Version: v4
Name: APNIC-LABS
Type: ASSIGNED PORTABLE
...<further output truncated for brevity>
ZAnnotate प्रत्येक IP पते के लिए रिवर्स DNS लुकअप कर सकता है। कोई डेटा डाउनलोड आवश्यक नहीं है, --rdns सीधे लाइव DNS सर्वर से क्वेरी करता है।
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"]}}
यदि किसी IP के पास PTR रिकॉर्ड नहीं है, तो rdns फ़ील्ड खाली होगी:
echo "127.0.0.1" | zannotate --rdns
{"ip":"127.0.0.1","rdns":{}}
2025.09)RIBS/ निर्देशिका चुनेंrib.20250923.1200.bz2)bzip2 -d ./path-to-downloaded-file/rib.20250923.1200.bz2
echo "1.1.1.1" | zannotate --routing --routing-mrt-file=/tmp/rib.20250923.1200
{"ip":"1.1.1.1","routing":{"prefix":"1.1.1.0/24","asn":13335,"path":[3561,209,3356,13335]}}
spur.us ASN और संगठन, इन्फ्रास्ट्रक्चर वर्गीकरण (जैसे, डेटासेंटर, CDN, मोबाइल), और जियोलोकेशन मेटाडेटा जैसी प्रति-IP इंटेलिजेंस प्रदान करता है। हम एनोटेशन को समृद्ध करने और डेटासेंटर/Anycast तैनाती, CDN और ISP स्वामित्व की पहचान करने में मदद करने के लिए अन्य स्रोतों के साथ spur.us से क्वेरी कर सकते हैं।
export SPUR_API_KEY=your_api_key_here
(यदि आप इसे स्थायी बनाना चाहते हैं, तो उपरोक्त पंक्ति को अपनी शेल प्रोफ़ाइल में जोड़ें, जैसे ~/.bashrc या ~/.zshrc)
echo "1.1.1.1" | zannotate --spur
{"ip":"1.1.1.1","spur":{"as":{"number":13335,"organization":"Cloudflare, Inc."},"infrastructure":"DATACENTER","ip":"1.1.1.1","location":{"city":"Anycast","country":"ZZ","state":"Anycast"},"organization":"Taguchi Digital Marketing System"}}