Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
zdns — مكتبة وأداة CLI سريعة للبحث في DNS | Kitploit
أدوات/GitHubGitHub/zmap/zdns
الاستطلاعجمع المعلوماتأمن الشبكاتالأدوات والمكوناتتحليل DNS
GitHubzmap/zdns

zdns

مكتبة وأداة CLI سريعة للبحث في DNS

عرض المستودع
1.1k15041منذ 2 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

ZDNS

Go Report Card

ZDNS هو محلل DNS عالي السرعة وأداة سطر أوامر لإجراء قياسات DNS على نطاق واسع. ZDNS مكتوب بلغة Go ويحتوي على كود حل متكرر خاص به وذاكرة تخزين مؤقت محسّنة لإجراء عمليات البحث عن مجموعة متنوعة من الأسماء. نستخدم https://github.com/zmap/dns لبناء وتحليل حزم DNS الأولية. لمزيد من المعلومات حول بنية ZDNS وأدائه، راجع الورقة البحثية التالية التي ظهرت في مؤتمر قياس الإنترنت '22 التابع لـ ACM.

[!TIP] يحتوي ويكي ZDNS على معلومات إضافية حول ZDNS ويشرح حالات الاستخدام والأمثلة.

Install

يمكن تثبيت ZDNS عن طريق استنساخ المستودع وتشغيل make install.

git clone https://github.com/zmap/zdns.git
cd zdns
make install

Usage

يتكون ZDNS من مكتبة محلل متكرر وغلاف CLI.

تتكون المكتبة من بنية ResolverConfig التي ستحتوي على جميع خيارات التكوين لجميع عمليات البحث التي تتم. يتم استخدام ResolverConfig لإنشاء بنية (بُنى) Resolver واحدة أو أكثر والتي ستقوم بجميع عمليات البحث. يجب أن يقوم Resolver بإجراء بحث واحد فقط في كل مرة (ليس آمنًا للخيوط) ويجب استخدام بُنى Resolver متعددة للتوازي. راجع الأمثلة لكيفية استخدام المكتبة. تُستخدم الوحدات النمطية لتحديد سلوك عمليات البحث.

يوفر ZDNS عدة أنواع من الوحدات النمطية:

  • وحدات DNS الأولية توفر استجابة DNS الأولية من الخادم المشابهة لـ dig، ولكن بصيغة JSON. توجد وحدة نمطية لكل نوع تقريبًا من سجلات DNS

  • وحدات البحث توفر استجابات أكثر فائدة عندما تكون هناك حاجة إلى استعلامات متعددة (على سبيل المثال، إكمال بحث A إضافي لعناوين IP إذا تم استلام NS في NSLOOKUP)

  • وحدات متنوعة توفر وسائل إضافية أخرى لاستعلام الخوادم (على سبيل المثال، bind.version)

نفصل الوحدات النمطية أدناه:

Raw DNS Modules

توفر الوحدات النمطية A, AAAA, AFSDB, ANY, ATMA, AVC, AXFR, BINDVERSION, CAA, CDNSKEY, CDS, CERT, CNAME, CSYNC, DHCID, DMARC, DNSKEY, DS, EID, EUI48, EUI64, GID, GPOS, HINFO, HIP, HTTPS, ISDN, KEY, KX, L32, L64, LOC, LP, MB, MD, MF, MG, MR, MX, NAPTR, NID, NINFO, NS, NSAPPTR, NSEC, NSEC3, NSEC3PARAM, NSLOOKUP, NULL, NXT, OPENPGPKEY, PTR, PX, RP, RRSIG, RT, SVCBS, MIMEA, SOA, SPF, SRV, SSHFP, TALINK, TKEY, TLSA, TXT, UID, UINFO, UNSPEC, URI استجابة DNS الأولية بصيغة JSON، على غرار dig.

على سبيل المثال، الأمر:

echo "censys.io" | zdns A

يعيد:

{
   "name": "censys.io",
   "results": {
      "A": {
         "data": {
            "additionals": [
               {
                  "flags": "",
                  "type": "EDNS0",
                  "udpsize": 512,
                  "version": 0
               }
            ],
            "answers": [
               {
                  "answer": "104.18.10.85",
                  "class": "IN",
                  "name": "censys.io",
                  "ttl": 300,
                  "type": "A"
               },
               {
                  "answer": "104.18.11.85",
                  "class": "IN",
                  "name": "censys.io",
                  "ttl": 300,
                  "type": "A"
               }
            ],
            "protocol": "udp",
            "resolver": "[2603:6013:9d00:3302::1]:53"
         },
         "duration": 0.285295416,
         "status": "NOERROR",
         "timestamp": "2024-08-23T13:12:43-04:00"
      }
   }
}

Lookup Modules

غالبًا لا توفر استجابات DNS الأولية البيانات التي تريدها. على سبيل المثال، قد لا تتضمن استجابة MX سجلات A المرتبطة في القسم الإضافي مما يتطلب بحثًا إضافيًا. لمعالجة هذه الفجوة وتوفير واجهة أكثر سهولة، نقدم أيضًا عدة وحدات بحث: alookup و mxlookup و nslookup.

alookup تعمل بشكل مشابه لـ nslookup وسوف تتبع سجلات CNAME. mxlookup ستقوم أيضًا بإجراء بحث A لعناوين IP التي تتوافق مع سجل التبادل. nslookup ستقوم أيضًا بإجراء بحث A/AAAA لعناوين IP التي تتوافق مع سجل NS.

على سبيل المثال،

echo "censys.io" | zdns mxlookup --ipv4-lookup

يعيد:

{
   "name": "censys.io",
   "results": {
      "MXLOOKUP": {
         "data": {
            "exchanges": [
               {
                  "class": "IN",
                  "ipv4_addresses": [
                     "209.85.202.27"
                  ],
                  "name": "alt1.aspmx.l.google.com",
                  "preference": 5,
                  "ttl": 300,
                  "type": "MX"
               },
               {
                  "class": "IN",
                  "ipv4_addresses": [
                     "142.250.31.26"
                  ],
                  "name": "aspmx.l.google.com",
                  "preference": 1,
                  "ttl": 300,
                  "type": "MX"
               }
            ]
         },
         "duration": 0.154786958,
         "status": "NOERROR",
         "timestamp": "2024-08-23T13:10:11-04:00"
      }
   }
}

Other DNS Modules

يدعم ZDNS أيضًا استعلامات DNS خاصة "للتصحيح". تشمل الوحدات: BINDVERSION.

Input Formats

يدعم ZDNS توفير الإدخال بعدة تنسيقات اعتمادًا على السلوك المطلوب.

Basic Input

أبسط إدخال هو قائمة بالأسماء مفصولة بأسطر جديدة. على سبيل المثال:

من stdin:

echo "google.com\nyahoo.com" | zdns A
cat list_of_domains.txt | zdns A

من ملف

zdns A --input-file=list_of_domains.txt

Dig-style Input

إذا كنت لا تحتاج إلى حل العديد من النطاقات، فإن توفير النطاق كوسيطة CLI، على غرار dig، مدعوم لسهولة الاستخدام.

على سبيل المثال:

zdns A google.com --name-servers=1.1.1.1

ما يعادل dig -t A google.com @1.1.1.1

Name Servers per-domain

عادةً، سيختار ZDNS خادم أسماء عشوائيًا لكل بحث عن نطاق من --name-servers. إذا كنت بدلاً من ذلك تريد تحديد خادم أسماء مختلف لكل نطاق، يمكنك القيام بذلك عن طريق توفير أزواج domainName,nameServerIP مفصولة بأسطر جديدة. سيؤدي هذا إلى تجاوز أي خوادم أسماء مقدمة مع --name-servers.

على سبيل المثال:

echo "google.com,1.1.1.1\nfacebook.com,8.8.8.8" | zdns A

يمكنك رؤية أن resolver هو كما هو محدد لكل نطاق في المخرجات (تم حذف الإضافات/الإجابات للاختصار):

$ echo "google.com,1.1.1.1\nfacebook.com,8.8.8.8" | zdns A
{"name":"google.com","results":{"A":{"data":{"additionals":...,"answers":[...],"protocol":"udp","resolver":"1.1.1.1:53"},"duration":0.030490042,"status":"NOERROR","timestamp":"2024-09-13T09:51:34-04:00"}}}
{"name":"facebook.com","results":{"A":{"data":{"additionals":[...],"answers":[...],"protocol":"udp","resolver":"8.8.8.8:53"},"duration":0.061365459,"status":"NOERROR","timestamp":"2024-09-13T09:51:34-04:00"}}}

Zone Files

يمكن استخدام ملفات المنطقة (من ICANN CZDS أو ما شابه) كمصدر إدخال لـ ZDNS مع العلم --zone-file. يتيح ذلك تحليل ملفات المنطقة إما من stdin (الافتراضي) أو من ملف مع العلم --input-file.

افتراضيًا، سيقوم ZDNS باستخراج الاسم فقط من كل سجل ملف منطقة. إذا كنت ترغب أيضًا في حل الأسماء المشار إليها في قسم الإجابة من أنواع السجلات مثل CNAMEs أو NS records، يمكنك استخدام علم CLI --zone-file-include-targets.

على سبيل المثال، مع --zone-file-include-targets وإدخال ملف المنطقة هذا:

example.com. 3600 IN NS ns1.example.com

سيتم حل كل من example.com و ns1.example.com.

Per-Module Triggers

يدعم ZDNS أيضًا تمرير "مشغلات" لكل سطر إدخال تقوم بتعيين أسطر الإدخال إلى وحدات نمطية محددة. باستخدام هذه، يمكنك تحديد أن يتم البحث عن نطاقات معينة باستخدام وحدات نمطية محددة.

تنسيق الإدخال هو: domain_name,name_server,trigger,trigger_2,etc، حيث يمكن أن يكون nameServer فارغًا لاستخدام خوادم الأسماء الافتراضية ويمكن تحديد مشغل واحد أو أكثر.

ملف input.csv مثال:

example.com,,a-trigger
google.com,,a-trigger,cname-trigger
example.com,1.1.1.1,aaaa-trigger
yahoo.com
apnews.com,1.1.1.1
تنزيل الأداة