Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

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

zdns

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

عرض المستودع
1.1k150منذ شهر واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
zdns — مكتبة وأداة CLI سريعة للبحث في DNS | 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.

root@kitploit:~
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.

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

root@kitploit:~
echo "censys.io" | zdns A

يعيد:

root@kitploit:~
{
   "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.

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

root@kitploit:~
echo "censys.io" | zdns mxlookup --ipv4-lookup

يعيد:

root@kitploit:~
{
   "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:

root@kitploit:~
echo "google.com\nyahoo.com" | zdns A
cat list_of_domains.txt | zdns A

من ملف

root@kitploit:~
zdns A --input-file=list_of_domains.txt

Dig-style Input

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

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

root@kitploit:~
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.

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

root@kitploit:~
echo "google.com,1.1.1.1\nfacebook.com,8.8.8.8" | zdns A

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

root@kitploit:~
$ 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 وإدخال ملف المنطقة هذا:

root@kitploit:~
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 مثال:

root@kitploit:~
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

وملف multiple.ini المقابل:

root@kitploit:~
; Specify Global Options here
[Application Options]
iterative=true
prefer-ipv6-iteration="true"
; List out modules and their respective module-specific options here. A module can only be listed once
[A]
trigger = "a-trigger"
[AAAA]
trigger = "aaaa-trigger"
[CNAME]
trigger = "cname-trigger"

سيتم البحث عن:

  • example.com باستخدام وحدة A مع خوادم الأسماء الافتراضية
  • google.com باستخدام وحدتي A + CNAME مع خوادم الأسماء الافتراضية
  • example.com باستخدام وحدة AAAA مع محلل 1.1.1.1 من Cloudflare
  • yahoo.com باستخدام جميع الوحدات المحددة وخوادم الأسماء الافتراضية
  • apnews.com باستخدام جميع الوحدات المحددة ومحلل 1.1.1.1 من Cloudflare

تشغيل الأمر:

root@kitploit:~
zdns MULTIPLE --multi-config-file="./multiple.ini" --input-file="input.csv"

Local Recursion

يمكن لـ ZDNS إما العمل ضد محلل متكرر (على سبيل المثال، خادم DNS مؤسسي) [السلوك الافتراضي] أو إجراء التكرار الخاص به داخليًا. إذا كنت تجري عددًا صغيرًا من عمليات البحث (أي الملايين) وتستخدم أقل من 10000 روتين Go، فعادةً ما يكون الأسرع هو استخدام أحد المحللين المتكررين الشائعين مثل Cloudflare أو Google. Cloudflare دائمًا تقريبًا أسرع من Google. هذا صحيح بشكل خاص إذا كنت تبحث عن أسماء شائعة لأنها مخزنة مؤقتًا ويمكن الإجابة عليها في رحلة واحدة. عند استخدام عشرات الآلاف من الخيوط المتزامنة، فكر في إجراء التكرار داخليًا لتجنب DOS/تحديد المعدل على المحلل المتكرر الخاص بك.

لإجراء التكرار المحلي، قم بتشغيل zdns مع العلم --iterative. عند استخدام هذا العلم، سيقوم ZDNS بالتناوب الدائري بين خوادم الجذر المنشورة (على سبيل المثال، 198.41.0.4). في الوضع التكراري، يمكنك التحكم في حجم ذاكرة التخزين المؤقت المحلية عن طريق تحديد --cache-size ومهلة التكرارات الفردية عن طريق تعيين --iteration-timeout. يتحكم العلم --timeout في مهلة الحل الكامل لإدخال معين (أي مجموع جميع الخطوات التكرارية).

Threads, Sockets, and Performance

يعتمد أداء ZDNS على التوازي الهائل باستخدام روتينات Go خفيفة الوزن. لهذه البنية عدة تحفظات:

  • يستخدم كل روتين Go مقبس شبكة مخصصًا خاصًا به. وبالتالي، يجب أن تكون قادرًا على فتح عدد من المقابس (من حيث الحد الأقصى لوصفات الملفات والمنافذ المؤقتة) بقدر عدد الخيوط المحددة (عبر --threads). افتراضيًا، يستخدم ZDNS 1000 خيط، وهو أقل من الحد الأقصى الافتراضي لنظام Linux البالغ 1024 واصف ملف مفتوح. ومع ذلك، فهو أكبر من الحد الافتراضي لنظام Mac OS البالغ 256. يمكنك عرض الحد الأقصى لعدد واصفات الملفات المفتوحة (وبالتالي المقابس) المسموح به عن طريق تشغيل ulimit -n. إذا كنت تريد التشغيل بعدد خيوط أكبر من هذا الرقم، فستحتاج إلى زيادة عدد الملفات المفتوحة على مستوى نظام التشغيل. إذا فشلت في القيام بذلك، فستواجه خطأً فادحًا مشابهًا لـ FATA[0000] unable to create socketlisten udp <client IP address>:0: socket: too many open files. إذا كنت تريد تشغيل خيوط أكثر من عدد المنافذ المؤقتة المتاحة، فستحتاج إلى استخدام عناوين IP متعددة للعميل: --local-addr=A,B,C.

  • افتراضيًا، يقوم ZDNS "بإعادة استخدام" مقابس UDP عن طريق إنشاء مقبس UDP غير مرتبط لكل روتين خفيف عند الإطلاق واستخدامه لجميع الاستعلامات (بغض النظر عن IP الوجهة). هذا يحسن الأداء بشكل كبير لأن ZDNS ونظام التشغيل المضيف لا يحتاجان إلى إعداد وإزالة مقبس لإرسال كل حزمة فردية (نظرًا لأن استعلامات/استجابات DNS تميل إلى أن تكون حزمة واحدة لكل منها). ومع ذلك، هذا يعني أن ZDNS سيقوم بتخصيص مقبس مسبقًا لكل خيط عند الإطلاق. قد لا يكون هذا مثاليًا إذا كنت تبحث فقط عن عدد صغير من الأسماء. على سبيل المثال، إذا كنت تحتاج فقط إلى البحث عن 100 اسم، ولكنك تستخدم الإعداد الافتراضي 1000 خيط، فستقوم بربط 900 مقبس UDP ولكنك لن تستخدمها أبدًا. بدلاً من القلق بشأن إعادة تدوير المقابس، نوصي بتحديد عدد معقول من الخيوط لحالة الاستخدام الخاصة بك (نظرًا لأن هذا يتجنب أيضًا أي عمل لبدء تلك الخيوط في المقام الأول). هذا هو السبب، مع ذلك، في أنه يمكنك الحصول على خطأ حول عدم القدرة على فتح عدد كبير من المقابس حتى لو كنت تبحث عن اسم واحد فقط. إذا كان من المهم إنشاء مقبس جديد لكل استعلام، يمكنك تعطيل إعادة الاستخدام هذه عن طريق تحديد --recycle-sockets=false.

  • Go سعيد باستخدام جميع نوى وحدة المعالجة المركزية المتاحة له، ويمكنه استخدام كمية هائلة من وحدة المعالجة المركزية إذا قمت بتحديد عدد كبير من الخيوط. يتم استخدام وحدة المعالجة المركزية بشكل أساسي للتحليل وترميز JSON. إذا كنت تريد الحد من عدد نوى وحدة المعالجة المركزية، يمكنك القيام بذلك عن طريق تضمين العلم أو تعيين متغير البيئة .

threads_vs_runtime

يعتمد الكثير من الأداء الذي ستراه على سير العمل والأجهزة وعدد خوادم الأسماء التي يتم توزيع الحمل عليها. إذا كنت تتطلع إلى تعظيم الأداء لسير العمل/الأجهزة الخاصة بك، نوصي بالبدء بـ 100 خيط والزيادة حتى تبدأ في رؤية زيادة في حالات فشل حل الأسماء. للمساعدة في ذلك، يمكنك استخدام --output-file=output.jsonl و grep -v "NOERROR" output.jsonl | wc -l لحساب عدد الأسماء التي فشلت في الحل. الأعلام التي قد تكون مفيدة في ضبط الأداء هي:

  • --timeout الحد الأقصى للوقت الذي سيقضيه ZDNS على اسم واحد
  • --iteration-timeout الحد الأقصى للوقت الذي سيقضيه ZDNS على خطوة تكرار واحدة (مثل: حل google.com في طبقة .com)
  • --network-timeout الحد الأقصى للوقت الذي سينتظره ZDNS للحصول على استجابة من خادم أسماء
  • --retries=N إذا فشل الاتصال بخادم أسماء معين في --iterative، فسيحاول ZDNS مرة أخرى مع خادم أسماء آخر لم يتم الاستعلام عنه في تلك الطبقة. يتم إعادة المحاولات لكل اسم، لذلك إذا كان --retries=1 فسيحاول ZDNS إعادة اسم ضد خادم أسماء جديد مرة واحدة أثناء عملية التكرار الكاملة. إذا تم الاستعلام عن جميع خوادم الأسماء، فسيتم اختيار خادم أسماء عشوائي.
  • --name-servers قائمة خوادم الأسماء لاستخدامها في عمليات البحث، مفيدة في الغالب مع --iterative=false

Output Verbosity

يتضمن DNS الكثير من البيانات الدخيلة التي ليست مفيدة دائمًا. هناك أربعة مستويات لتفاصيل النتائج: short و normal (افتراضي) و long و trace:

  • short: Short هو أبسط إخراج للنتائج. يحتوي فقط على معلومات حول الاستجابات
  • normal: Normal يوفر كل ما هو مضمن في short بالإضافة إلى بيانات حول الخادم المستجيب
  • long: Long يخرج كل شيء أدرجه الخادم في حزمة DNS، بما في ذلك الأعلام.
  • trace: Trace يخرج كل شيء من كل خطوة من عملية التكرار

يمكن للمستخدمين أيضًا تضمين حقول إضافية محددة باستخدام العلم --include-fields وتحديد قائمة من الحقول، على سبيل المثال، --include-fields=flags,resolver. الحقول الإضافية هي: class, protocol, ttl, resolver, flags, dnssec.

Name Server Mode

افتراضيًا، يتوقع ZDNS تلقي قائمة من الأسماء للبحث عنها على عدد صغير من خوادم الأسماء. على سبيل المثال:

echo "google.com" | zdns A --name-servers=8.8.8.8,8.8.4.4

ومع ذلك، هناك أوقات تريد فيها بدلاً من ذلك البحث عن نفس الاسم عبر عدد كبير من الخوادم. يمكن تحقيق ذلك باستخدام وضع خادم الأسماء. على سبيل المثال:

echo "8.8.8.8" | zdns A --name-server-mode --override-name="google.com"

هنا، يتم إرسال كل سطر يتم توجيهه إلى ZDNS استعلام A لـ google.com. يدعم ZDNS أيضًا خلط ومطابقة كلا الوضعين عن طريق توجيه قائمة مفصولة بفواصل من name,nameServer. على سبيل المثال:

echo "google.com,8.8.8.8" | zdns A سيرسل استعلام A لـ google.com إلى 8.8.8.8 بغض النظر عن خوادم الأسماء المحددة بواسطة العلم --name-servers=. ستستخدم الأسطر التي لا تحدد صراحةً خادم أسماء الخوادم المحددة بواسطة نظام التشغيل أو العلم --name-servers كما يحدث عادةً.

Querying all Nameservers

توجد ميزة متاحة لإجراء استعلام DNS معين ضد جميع خوادم الأسماء. على سبيل المثال، قد ترغب في الحصول على سجلات A من جميع خوادم الأسماء لنطاق معين. للقيام بذلك، يمكنك:

echo "google.com" | zdns A --all-nameservers

Multiple Lookup Modules

يدعم ZDNS استخدام وحدات بحث متعددة في استدعاء واحد. على سبيل المثال، لنفترض أنك تريد إجراء A و AAAA و MXLOOKUP لمجموعة من النطاقات وتريد إجراؤها بدقة تكرارية. ستحتاج إلى استخدام وحدة MULTIPLE وتوفير ملف تكوين يحتوي على الوحدات والأعلام الخاصة بالوحدة التي تريد استخدامها.

يرجى الاطلاع على zdns --help و zdns <MODULE_NAME> --help للخيارات العامة والخاصة بالوحدة التي يمكن استخدامها في ملف التكوين.

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

root@kitploit:~
cat 1000k_domains.txt | zdns MULTIPLE --multi-config-file="./multiple.ini"

حيث multiple.ini هو ملف يبدو كالتالي:

root@kitploit:~
; Specify Global Options here
[Application Options]
iterative=true
; List out modules and their respective module-specific options here. A module can only be listed once
[MXLOOKUP]
ipv4-lookup = true
; You can use default values and just list modules if you don't need to specify any options
[A]
[AAAA]

يتم توفير ملف multiple.ini نموذجي في src/cli/multiple.ini

Running ZDNS

افتراضيًا، سيعمل ZDNS مع 1000 روتين Go خفيف الوزن. إذا لم تكن حذرًا، فهذا سيطغى على العديد من موفري DNS النهائيين. نقترح على المستخدمين التنسيق مع مسؤولي الشبكة المحليين قبل إجراء أي عمليات مسح. يمكنك التحكم في عدد الاتصالات المتزامنة باستخدام وسيطات سطر الأوامر --threads و --go-processes. يمكن تحديد خوادم أسماء بديلة باستخدام --name-servers. سيقوم ZDNS بالتبديل بين هذه الخوادم عند تقديم الطلبات. لقد قمنا بتشغيل ZDNS بنجاح مع عشرات الآلاف من الروتينات خفيفة الوزن.

Unsupported Types

إذا واجه zdns نوع سجل لا يدعمه، فسيقوم بإنشاء سجل إخراج مع تعيين حقل type بشكل صحيح وتمثيل لهيكل البيانات الأساسي في حقل unparsed_rr. لا تعتمد على وجود أو بنية هذا الحقل. قد يتغير هذا الحقل (ووجوده) في أي وقت مع توسيع الدعم لأنواع السجلات الإضافية. إذا وجدت نفسك تستخدم هذا الحقل، فيرجى التفكير في تقديم طلب سحب لإضافة دعم المحلل.

Benchmark for ZDNS

يوجد معيار قياس أداء متاح في benchmark/ يمكن استخدامه لتشغيل ZDNS بطريقة يمكن التنبؤ بها وطباعة بعض الإحصائيات حول التشغيل. يمكن أن يكون هذا مفيدًا لمقارنة الأداء قبل وبعد إجراء تغيير على ZDNS. راجع المزيد من التفاصيل في ملف README للمعيار.

Contributing

إذا كنت مهتمًا بالمساهمة في ZDNS، فراجع CONTRIBUTING.

Contact

  • يرجى استخدام مشكلات Github للإبلاغ عن الأخطاء.

License

ZDNS حقوق الطبع والنشر 2020 Regents of the University of Michigan

مرخص بموجب ترخيص Apache، الإصدار 2.0 (الترخيص)؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على http://www.apache.org/licenses/LICENSE-2.0

ما لم يقتضيه القانون المعمول به أو يتم الاتفاق عليه كتابيًا، يتم توزيع البرنامج الموزع بموجب الترخيص على أساس "كما هو"، دون أي ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع LICENSE للحصول على اللغة المحددة التي تحكم الأذونات والقيود بموجب الترخيص.

تنزيل الأداة
--go-processes=n
GOMAXPROCS
  • من الصعب التوصية بمقدار دقيق من --threads لأنه يعتمد على عدة عوامل. يوضح الرسم البياني أدناه كيف أن سير عمل نموذجي لديه وقت تشغيل أقل ولكن معدلات فشل أعلى في حل الأسماء مع زيادة عدد الخيوط.