
مولّد سريع وقابل للتخصيص لقوائم كلمات النطاقات الفرعية باستخدام DSL
الميزات • التثبيت • الاستخدام • تشغيل AlterX • انضم إلى Discord
مولّد قوائم كلمات النطاقات الفرعية سريع وقابل للتخصيص باستخدام DSL.

لتثبيت alterx، يجب أن يكون لديك Golang 1.19 مثبتًا على نظامك. يمكنك تنزيل Golang من هنا. بعد تثبيت Golang، يمكنك استخدام الأمر التالي لتثبيت alterx:
go install github.com/projectdiscovery/alterx/cmd/alterx@latest
# Clone the repository
git clone https://github.com/projectdiscovery/alterx.git
cd alterx
# Build using Makefile
make build
# Or build manually
go build ./cmd/alterx
أهداف Makefile المتاحة:
make help # Show all available targets
make build # Build the binary
make test # Run tests
make test-coverage # Run tests with coverage
make lint # Run linter
make fmt # Format code
make clean # Clean build artifacts
make install # Install to $GOPATH/bin
يمكنك استخدام الأمر التالي لعرض الأعلام والخيارات المتاحة:
Fast and customizable subdomain wordlist generator using DSL.
Usage:
./alterx [flags]
Flags:
INPUT:
-l, -list string[] subdomains to use when creating permutations (stdin, comma-separated, file)
-p, -pattern string[] custom permutation patterns input to generate (comma-seperated, file)
-pp, -payload value custom payload pattern input to replace/use in key=value format (-pp 'word=words.txt')
OUTPUT:
-es, -estimate estimate permutation count without generating payloads
-o, -output string output file to write altered subdomain list
-ms, -max-size int Max export data size (kb, mb, gb, tb) (default mb)
-v, -verbose display verbose output
-silent display results only
-version display alterx version
CONFIG:
-config string alterx cli config file (default '$HOME/.config/alterx/config.yaml')
-en, -enrich enrich wordlist by extracting words from input
-ac string alterx permutation config file (default '$HOME/.config/alterx/permutation_v0.0.1.yaml')
-limit int limit the number of results to return (default 0)
UPDATE:
-up, -update update alterx to latest version
-duc, -disable-update-check disable automatic alterx update check
alterx ؟؟ما يجعل alterx مختلفًا عن أي أدوات توليد تبديلات النطاقات الفرعية الأخرى مثل goaltdns هو ميزة البرمجة النصية الخاصة به. يأخذ alterx الأنماط كمدخلات ويولّد قائمة كلمات تبديلات النطاقات الفرعية بناءً على ذلك النمط، على غرار ما يفعله nuclei مع fuzzing-templates.
ما يجعل العد النشط للنطاقات الفرعية صعبًا هو احتمالية العثور على نطاق موجود فعلًا. إذا تم تمثيل إيجاد النطاقات الفرعية المحتملة على مقياس، فسيبدو شيئًا مثل:
Using Wordlist < generate permutations with subdomains (goaltdns) < alterx
تقريبًا جميع أدوات توليد تبديلات النطاقات الفرعية الشائعة تحتوي على أنماط مبرمجة مسبقًا (hardcoded)، وعند تشغيل هذه الأدوات فإنها تنشئ قوائم كلمات تحتوي على ملايين النطاقات الفرعية، مما يقلل من جدوى تخمينها (bruteforce) باستخدام أدوات مثل dnsx. لا توجد اصطلاحات فعلية لتسمية النطاقات الفرعية، وعادةً ما يعتمد ذلك على الشخص الذي يسجّل النطاق الفرعي. مع alterx، من الممكن إنشاء أنماط بناءً على نتائج العد السلبي للنطاقات الفرعية، مما يزيد من احتمالية العثور على نطاق فرعي وجدوى تخمينها.
يستخدم alterx صيغة تشبه المتغيرات مشابهة لـ nuclei-templates. يمكن للمستخدم كتابة أنماطه الخاصة باستخدام هذه المتغيرات. عند تمرير النطاقات كمدخلات، يقوم alterx بتقييم المدخلات واستخراج المتغيرات منها.
{{sub}} : subdomain prefix or left most part of a subdomain
{{suffix}} : everything except {{sub}} in subdomain name is suffix
{{tld}} : top level domain name (ex com,uk,in etc)
{{etld}} : also know as public suffix (ex co.uk , gov.in etc)
{{sld}} : second-level domain (ex for api.scanme.sh => {{sld}} is scanme)
{{root}} : also known as eTLD+1 i.e only root domain (ex for api.scanme.sh => {{root}} is scanme.sh)
{{subN}} : here N is an integer (ex {{sub1}} , {{sub2}} etc) .
// {{subN}} is advanced variable which exists depending on input
// lets say there is a multi level domain cloud.nuclei.scanme.sh
// in this case {{sub}} = cloud and {{sub1}} = nuclei`
يمكن اعتبار النمط بعبارات بسيطة بمثابة قالب يصف أنواع الأنماط التي يجب أن يولّدها alterx.
// Below are some of example patterns which can be used to generate permutations
// assuming api.scanme.sh was given as input and variable {{word}} was given as input with only one value prod
// alterx generates subdomains for below patterns
"{{sub}}-{{word}}.{{suffix}}" // ex: api-prod.scanme.sh
"{{word}}-{{sub}}.{{suffix}}" // ex: prod-api.scanme.sh
"{{word}}.{{sub}}.{{suffix}}" // ex: prod.api.scanme.sh
"{{sub}}.{{word}}.{{suffix}}" // ex: api.prod.scanme.sh
فيما يلي ملف تكوين أنماط مثال - https://github.com/projectdiscovery/alterx/blob/main/permutations.yaml ويمكن تخصيصه بسهولة حسب الحاجة.
يقوم ملف التكوين هذا بتوليد تبديلات النطاقات الفرعية لتقييمات الأمان أو اختبارات الاختراق باستخدام أنماط قابلة للتخصيص وحمولات ديناميكية. تتضمن الأنماط المستندة إلى الشرطة والنقطة وغيرها. يمكن للمستخدمين إنشاء أقسام حمولات مخصصة، مثل الكلمات أو معرّفات المناطق أو الأرقام، لتناسب احتياجاتهم الخاصة.
على سبيل المثال، يمكن للمستخدم تعريف قسم حمولة جديد env بقيم مثل prod و dev، ثم استخدامه في أنماط مثل {{env}}-{{word}}.{{suffix}} لتوليد نطاقات فرعية مثل prod-app.example.com و dev-api.example.com. تتيح هذه المرونة إنشاء قوائم نطاقات فرعية مخصصة لسيناريوهات اختبار فريدة وبيئات مستهدفة محددة.
يتم تخزين ملف تكوين الأنماط الافتراضي المستخدم للتوليد في دليل $HOME/.config/alterx/، ويمكن أيضًا استخدام ملف تكوين مخصص عبر خيار -ac.
مثال على تشغيل alterx على قائمة موجودة من النطاقات الفرعية السلبية لـ tesla.com ينتج لنا 10 نطاقات فرعية جديدة إضافية وصالحة تم حلها باستخدام dnsx.
$ chaos -d tesla.com | alterx | dnsx
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 8312 permutations in 0.0740s
auth-global-stage.tesla.com
auth-stage.tesla.com
digitalassets-stage.tesla.com
errlog-stage.tesla.com
kronos-dev.tesla.com
mfa-stage.tesla.com
paymentrecon-stage.tesla.com
sso-dev.tesla.com
shop-stage.tesla.com
www-uat-dev.tesla.com
وبالمثل، يمكن استخدام خيار -enrich لملء النطاقات الفرعية المعروفة كمدخلات كلمات لتوليد تبديلات مدركة للهدف.
$ chaos -d tesla.com | alterx -enrich
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 662010 permutations in 3.9989s
يمكنك تعديل الأنماط الافتراضية أثناء التشغيل باستخدام خيار سطر الأوامر -pattern.
$ chaos -d tesla.com | alterx -enrich -p '{{word}}-{{suffix}}'
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 21523 permutations in 0.7984s
من الممكن أيضًا استبدال قيم المتغيرات الموجودة باستخدام خيارات -payload في سطر الأوامر.
$ alterx -list tesla.txt -enrich -p '{{word}}-{{year}}.{{suffix}}' -pp word=keywords.txt -pp year=2023
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 21419 permutations in 1.1699s
لمزيد من المعلومات، يرجى الاطلاع على مدونة الإصدار - https://blog.projectdiscovery.io/introducing-alterx-simplifying-active-subdomain-enumeration-with-patterns/
يمكنك أيضًا الاطلاع على المشاريع مفتوحة المصدر المشابهة أدناه والتي قد تتناسب مع سير عملك:
altdns, goaltdns, gotator, ripgen, dnsgen, dmut, permdns, str-replace, dnscewl, regulator
alterx صُنع بـ ❤️ بواسطة فريق projectdiscovery ويُوزَّع بموجب رخصة MIT.
| المتغير | api.scanme.sh | admin.dev.scanme.sh | cloud.scanme.co.uk |
|---|
{{sub}} | api | admin | cloud |
{{suffix}} | scanme.sh | dev.scanme.sh | scanme.co.uk |
{{tld}} | sh | sh | uk |
{{etld}} | - | - | co.uk |
| المتغير | api.scanme.sh | admin.dev.scanme.sh | cloud.scanme.co.uk |
|---|
{{sld}} | scanme | scanme | scanme |
{{root}} | scanme.sh | scanme.sh | scanme.co.uk |
{{sub1}} | - | dev | - |
{{sub2}} | - | - | - |