
أداة تعداد النطاقات الفرعية، حزم DNS غير متزامنة، تستخدم pcap لمسح 1,600,000 نطاق فرعي في ثانية واحدة.
English | العربية
KSubdomain هي أداة لاكتشاف النطاقات الفرعية تعتمد على تقنية بدون حالة، مما يوفر سرعة مسح غير مسبوقة واستهلاكاً منخفضاً جداً للذاكرة. تستخدم المقابس الأصلية (raw sockets) للتعامل المباشر مع محول الشبكة، متجاوزة مكدس بروتوكولات نواة النظام، مع آلية إعادة إرسال موثوقة تعتمد على جدول الحالة لضمان اكتمال النتائج. تدعم Windows وLinux وmacOS، وهي الأداة المفضلة لاستكشاف أصول DNS على نطاق واسع.
--interface مكرر لتحديد عدة بطاقات، مضاعفة عرض النطاق واستخدام عدة عناوين IP خروجEnumStream/VerifyStream لمعالجة النتائج في الوقت الفعلياختبار على معالج 4 أنوية، عرض نطاق 5 ميجابت، قاموس 100 ألف:
انتقل إلى Releases لتحميل أحدث إصدار لنظامك.
تثبيت التبعيات:
libpcap-devgit clone https://github.com/boy-hack/ksubdomain.git
cd ksubdomain
# يُنصح بحقن رقم الإصدار عبر ldflags
go build -ldflags "-X github.com/boy-hack/ksubdomain/v2/pkg/core/conf.Version=v2.x.y" \
-o ksubdomain ./cmd/ksubdomain
أو باستخدام go install:
go install github.com/boy-hack/ksubdomain/v2/cmd/ksubdomain@latest
ملاحظة: يتطلب تشغيله صلاحية root /
CAP_NET_RAW(لالتقاط الحزم عبر المقابس الأصلية)
الاستخدام:
ksubdomain [خيارات عامة] <أمر> [خيارات الأمر]
الأوامر:
enum, e وضع التعداد: اكتشاف النطاقات الفرعية لنطاق رئيسي
verify, v وضع التحقق: التحقق من حل النطاقات في قائمة
test اختبار السرعة القصوى لإرسال الحزم لبطاقة الشبكة المحلية
device عرض معلومات بطاقات الشبكة المتاحة
help, h عرض المساعدة
الخيارات العامة:
--help, -h عرض المساعدة
--version, -v طباعة معلومات الإصدار
التحقق مما إذا كانت القائمة المقدمة من النطاقات تحتوي على سجلات DNS.
الخيارات:
--domain, -d تحديد نطاق (قابل للتكرار)
--filename, -f قراءة قائمة النطاقات من ملف
--stdin القراءة من الإدخال القياسي
--bandwidth, -b تحديد عرض النطاق، مثل 5m، 10m، 100m (الافتراضي 3m)
--resolvers, -r تحديد خوادم DNS (الافتراضي استخدام المدمج)
--output, -o مسار ملف الإخراج
--format, -f تنسيق الإخراج: txt (الافتراضي)، json، csv، jsonl
--silent, -s وضع الصامت، إخراج النطاقات فقط (بدون banner وسجلات)
--only-domain, --od إخراج النطاقات فقط، بدون عرض IP/السجلات
--retry عدد مرات إعادة المحاولة، -1 يعني إعادة محاولة غير محدودة (الافتراضي 3)
--timeout مهلة الاستعلام الواحد بالثواني (الافتراضي 6)
--interface, -e تحديد اسم بطاقة الشبكة (قابل للتكرار، إرسال متزامن عبر عدة بطاقات)
--wildcard-filter تصفية الحلول العامة: none (الافتراضي)، basic، advanced
--predict تفعيل وضع التنبؤ بالنطاقات الفرعية
--quiet, -q عدم طباعة النتائج على الشاشة (الكتابة في ملف فقط)
--color, -c إخراج ملون
# التحقق من نطاق واحد/عدة نطاقات
./ksubdomain v -d www.example.com -d mail.example.com
# القراءة من ملف، حفظ بتنسيق txt
./ksubdomain v -f domains.txt -o output.txt
# إدخال عبر أنبوب، عرض نطاق 10M، وضع صامت للربط مع أدوات أخرى
cat domains.txt | ./ksubdomain v --stdin -b 10m -s --od | httpx -silent
# تصفية متقدمة للحلول العامة، إخراج JSONL
./ksubdomain v -f domains.txt --wildcard-filter advanced --format jsonl -o output.jsonl
# إرسال متزامن عبر عدة بطاقات (مضاعفة عرض النطاق)
./ksubdomain v -f domains.txt --interface eth0 --interface eth1
اكتشاف النطاقات الفرعية لنطاق رئيسي باستخدام قاموس وخوارزميات تنبؤ.
الخيارات:
--domain, -d النطاق الرئيسي المستهدف (قابل للتكرار)
--domain-list, --ds ملف النطاقات الرئيسية المتعددة
--filename, -f مسار ملف القاموس (الافتراضي استخدام القاموس المدمج)
--use-ns-records قراءة سجلات NS للنطاق وإضافتها إلى محلل DNS
(باقي الخيارات كما في وضع verify)
# تعداد نطاق واحد (باستخدام القاموس المدمج)
./ksubdomain e -d example.com
# تحديد ملف قاموس
./ksubdomain e -d example.com -f subdomains.txt -o result.txt
# تفعيل وضع التنبؤ + تصفية متقدمة للحلول العامة
./ksubdomain e -d example.com --predict --wildcard-filter advanced
# تعداد متعدد للنطاقات الرئيسية
./ksubdomain e --domain-list roots.txt -b 10m --format jsonl -o result.jsonl
# ربط مع httpx عبر أنبوب
./ksubdomain e -d example.com --od -s | httpx -silent
# اختبار السرعة القصوى لإرسال الحزم لبطاقة الشبكة
./ksubdomain test
# عرض بطاقات الشبكة المتاحة
./ksubdomain device
لا حاجة لتعيين --timeout يدوياً، المحرك يضبط تلقائياً حدود المهلة بناءً على RTT المقاس فعلياً (المتوسط المتحرك المرجح أسيّاً، EWMA α=0.125)، مما يقلل من الفقد مع تجنب الانتظار غير الضروري.
بتكرار --interface يمكن استخدام عدة بطاقات شبكة للإرسال في نفس الوقت، عدة goroutines تشارك نفس domainChan منافسة على الاستهلاك، مما يحقق توازن التحميل طبيعياً:
./ksubdomain e -d example.com --interface eth0 --interface eth1 -b 20m
عند تفعيل --predict، تقوم الأداة بالتنبؤ بالنطاقات الفرعية المرتبطة المحتملة بناءً على النطاقات المكتشفة بالفعل، مما يزيد من نسبة الاكتشاف.
none: لا تصفية (الافتراضي)basic: تصفية أساسية، إزالة عناوين IP الواضحة للحلول العامةadvanced: تصفية متقدمة، حكم متعدد الأبعاد# الربط مع httpx لاكتشاف مواقع الويب النشطة
./ksubdomain e -d example.com -s --od | httpx -silent
# الربط مع nuclei لفحص الثغرات
./ksubdomain e -d example.com -s --od | nuclei -l /dev/stdin
# معالجة تدفقية بتنسيق JSONL، أخذ سجلات A فقط
./ksubdomain e -d example.com --format jsonl | jq -r 'select(.type=="A") | .domain'
# تعداد متعدد للنطاقات + إزالة التكرار
./ksubdomain e --domain-list roots.txt -s --od | sort -u > all_subs.txt
macOS:
# BPF buffer صغير، يُنصح بتحديد عرض النطاق
sudo ./ksubdomain e -d example.com -b 5m
WSL/WSL2:
# عادةً استخدم eth0
./ksubdomain e -d example.com --interface eth0
Windows:
# يجب تثبيت Npcap أولاً، والتشغيل بصلاحيات المدير
.\ksubdomain.exe enum -d example.com
go get github.com/boy-hack/ksubdomain/v2/sdk
import "github.com/boy-hack/ksubdomain/v2/sdk"
scanner := sdk.NewScanner(&sdk.Config{
Bandwidth: "5m",
Retry: 3,
WildcardFilter: "advanced",
})
// الحجب وجمع كل النتائج
results, err := scanner.Enum("example.com")
// استعلام تدفقي مع دالة استدعاء للمعالجة الفورية
err = scanner.EnumStream(ctx, "example.com", func(r sdk.Result) {
fmt.Printf("%s => %v\n", r.Domain, r.Records)
})
راجع وثائق SDK و وثائق API للمزيد.
# اختبارات الوحدة (لا تحتاج root)
go test ./pkg/...
# اختبارات الانحدار (تحتاج root + شبكة)
go build -o ksubdomain ./cmd/ksubdomain
sudo go test ./test/regression/... -tags regression -v -timeout 120s
رخصة MIT — راجع LICENSE
| الأداة | الطريقة | المدة | عدد النجاحات |
|---|
| KSubdomain | إرسال عبر بطاقة الشبكة pcap | ~30 ثانية | 1397 |
| massdns | pcap/socket | ~3 دقائق و29 ثانية | 1396 |
| dnsx | socket | ~5 دقائق و26 ثانية | 1396 |
| التنسيق | الوصف | سيناريو الاستخدام |
|---|
txt | النطاق => السجل، إخراج في الوقت الفعلي | الافتراضي، للمراجعة البشرية |
json | JSON كامل، يُكتب بعد الانتهاء | التحليل البرمجي |
csv | جدول CSV، يُكتب بعد الانتهاء | تحليل البيانات |
jsonl | سطر واحد لكل JSON، إخراج في الوقت الفعلي | المعالجة التدفقية، الربط عبر الأنابيب |