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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
xnLinkFinder — أداة Python تُستخدم لاكتشاف نقاط النهاية، المعاملات المحتملة، قائمة كلمات مخصصة للهدف لهدف معين والأسرار. | Kitploit
أدوات/GitHubGitHub/xnl-h4ck3r/xnlinkfinder
الاستطلاعجمع المعلوماتأمن الويباختبار الاختراقكشف الأسرارزاحف الويب
GitHubxnl-h4ck3r/xnlinkfinder

xnLinkFinder

أداة Python تُستخدم لاكتشاف نقاط النهاية، المعاملات المحتملة، قائمة كلمات مخصصة للهدف لهدف معين والأسرار.

عرض المستودع
1.6k186منذ 5 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

حول - v8.2

هذه أداة تُستخدم لاكتشاف نقاط النهاية (endpoints)، واكتشاف المعاملات المحتملة (parameters)، وإنشاء قائمة كلمات خاصة بالهدف (target-specific wordlist)، والعثور على الأسرار (secrets) لهدف معين. يمكنها العثور عليها من خلال:

  • الزحف (crawling) على هدف (تمرير نطاق/رابط URL)
  • الزحف على أهداف متعددة (تمرير ملف يحتوي على نطاقات/روابط URL)
  • البحث في ملفات داخل دليل معين (تمرير اسم الدليل)
  • البحث في محتويات ملف واحد
  • الحصول عليها من مشروع Burp (تمرير موقع ملف Burp XML)
  • الحصول عليها من مشروع ZAP (تمرير موقع ملف رسائل ZAP ASCII)
  • الحصول عليها من مشروع Caido (تمرير موقع ملف CSV مُصدّر من Caido)
  • الحصول عليها من ملف HAR (أرشيف HTTP) (تمرير موقع ملف HAR بصيغة JSON)
  • معالجة دليل نتائج waymore (البحث في ملفات الردود المؤرشفة من waymore -mode R وكذلك طلب عناوين URL من waymore.txt وعناوين URL الأصلية من waymore_index.txt - انظر README.md الخاص بـ waymore)

يعتمد هذا السكربت بلغة بايثون على قدرات اكتشاف الروابط الموجودة في إضافة Burp الخاصة بي GAP. كنقطة بداية، أخذت الأداة الرائعة LinkFinder من إعداد Gerben Javado، واستخدمت التعبير المنتظم (Regex) لاكتشاف الروابط، ولكن مع تحسينات إضافية للعثور على المزيد.

التثبيت

يدعم xnLinkFinder Python 3.

قم بتثبيت xnLinkFinder في بيئة بايثون الافتراضية (العامة).```bash pip install xnLinkFinder

root@kitploit:~
أو```bash
pip install git+https://github.com/xnl-h4ck3r/xnLinkFinder.git -v

يمكنك الترقية باستخدام```bash pip install --upgrade xnLinkFinder

root@kitploit:~
### pipx

الإعداد السريع في بيئة بايثون معزولة باستخدام [pipx](https://pypa.github.io/pipx/)```bash
pipx install git+https://github.com/xnl-h4ck3r/xnLinkFinder.git

ملاحظة: لاستخراج الروابط من ملفات PDF، يمكنك تثبيت pdftotext على نظامك. يمكنك تثبيته باستخدام sudo apt install -y poppler-utils على لينكس أو brew install poppler على macOS. إذا لم يكن pdftotext مثبتًا، فسيستخدم xnLinkFinder مكتبة pypdf Python كبديل. إذا لم يتم العثور على نص (مثل ملفات PDF الممسوحة ضوئيًا)، فسيحاول استخدام ocrmypdf إذا كان مثبتًا (مثل sudo apt install -y ocrmypdf). استخدام pdftotext و ocrmypdf يعطي نتائج أفضل بكثير من استخدام pypdf وحده.

الاستخدام| Arg | Long Arg | الوصف |

| ----------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | -i | --input | الإدخال: رابط، ملف نصي يحتوي على روابط، مجلد ملفات للبحث، ملف إخراج Burp XML، ملف إخراج ZAP، ملف CSV من Caido، ملف HAR JSON، أو ملف واحد للبحث في محتوياته. | | -o | --output | الملف لحفظ مخرجات الروابط إليه، متضمناً المسار إذا لزم الأمر (الافتراضي: output.txt). إذا تم تعيينه إلى cli فإن المخرجات تُكتب فقط إلى STDOUT. إذا كان الملف موجوداً بالفعل فسيتم الإضافة إليه (مع إزالة التكرار) ما لم يتم تمرير الخيار -ow. | | -op | --output-params | الملف لحفظ مخرجات المعاملات المحتملة إليه، متضمناً المسار إذا لزم الأمر (الافتراضي: parameters.txt). إذا تم تعيينه إلى cli فإن المخرجات تُكتب فقط إلى STDOUT (ولكن لا يتم توجيهها إلى برنامج آخر). إذا كان الملف موجوداً بالفعل فسيتم الإضافة إليه (مع إزالة التكرار) ما لم يتم تمرير الخيار -ow. | | -owl | --output-wordlist | الملف لحفظ مخرجات قائمة الكلمات الخاصة بالهدف إليه، متضمناً المسار إذا لزم الأمر (الافتراضي: لا يوجد مخرجات قائمة كلمات). إذا تم تعيينه إلى cli فإن المخرجات تُكتب فقط إلى STDOUT (ولكن لا يتم توجيهها إلى برنامج آخر). إذا كان الملف موجوداً بالفعل فسيتم الإضافة إليه (مع إزالة التكرار) ما لم يتم تمرير الخيار -ow. | | -oo | --output-oos | الملف لحفظ مخرجات الروابط خارج النطاق إليه، متضمناً المسار إذا لزم الأمر (الافتراضي: لا يوجد مخرجات OOS). إذا تم تعيينه إلى فإن المخرجات تُكتب فقط إلى STDOUT (ولكن لا يتم توجيهها إلى برنامج آخر). إذا كان الملف موجوداً بالفعل فسيتم الإضافة إليه (مع إزالة التكرار) ما لم يتم تمرير الخيار -ow. | | -os | --output-secrets | الملف لحفظ أي أسرار يتم العثور عليها في الاستجابات (بتنسيق JSON)، متضمناً المسار إذا لزم الأمر (الافتراضي: لا يوجد مخرجات أسرار). إذا كان الملف موجوداً بالفعل، سيتم دمج الأسرار ما لم يتم تمرير الخيار -ow. يتم تجميع الأسرار حسب النوع والقيمة مع مصفوفة من المصادر التي تم العثور عليها فيها. | | -ow | --output-overwrite | إذا كان ملف المخرجات موجوداً بالفعل، فسيتم استبداله بدلاً من الإضافة إليه. | | -sp | --scope-prefix | أي روابط تبدأ بـ سيتم إضافة بادئة بنطاقات النطاق إليها في المخرجات بدلاً من الرابط الأصلي. إذا كانت القيمة المُمررة اسم ملف صالح، فسيتم استخدام ذلك الملف، وإلا سيتم استخدام النص الحرفي. | | -spo | --scope-prefix-original | إذا تم تمرير الوسيطة ، فإن هذا يحدد ما إذا كان الرابط الأصلي الذي يبدأ بـ سيتم تضمينه أيضاً في المخرجات (الافتراضي: false) | | -spkf | --scope-prefix-keep-failed | إذا تم تمرير الوسيطة ، فإن هذا يحدد ما إذا كان الرابط المُسبوق سيبقى في المخرجات إذا كان خطأ 404 أو حدث RequestException (الافتراضي: false) | | -sf | --scope-filter | سيقوم بتصفية روابط المخرجات لتشمل فقط تلك التي يكون نطاق الرابط ضمن النطاق المحدد. إذا كانت القيمة المُمررة اسم ملف صالح، فسيتم استخدام ذلك الملف، وإلا سيتم استخدام النص الحرفي. هذه الوسيطة أصبحت إلزامية إذا كان الإدخال نطاق/رابط (أو ملف نطاقات/روابط) لمنع الزحف إلى المواقع غير الموجودة في النطاق وكذلك لمنع النتائج المضللة. | | -c | --cookies † | أضف ملفات تعريف الارتباط لتمريرها مع طلبات HTTP. مررها بالتنسيق | | -H | --headers † | أضف ترويسات مخصصة لتمريرها مع طلبات HTTP. مررها بالتنسيق | | -ra | --regex-after | تعبير عادي لأغراض التصفية ضد نقاط النهاية الموجودة قبل المخرجات (مثل ). إذا تطابق، يتم إخراج الرابط. | | -d | --depth † | مستوى العمق للبحث. على سبيل المثال، إذا تم تمرير قيمة 2، فسيتم البحث في جميع الروابط التي تم العثور عليها أولاً عن المزيد من الروابط (الافتراضي: 1). هذا الخيار يتم تجاهله لملفات Burp و ZAP و Caido و HAR لأنها قد تكون ضخمة وتستهلك الكثير من الذاكرة. يُنصح أيضاً باستخدام الوسيطة () لضمان إمكانية محاولة الطلب للروابط التي تم العثور عليها بدون نطاق. | | -p | --processes † | يتم تعدد العمليات الأساسي عند إجراء الطلبات لرابط أو ملف روابط (وليس ملف Burp أو ZAP أو Caido أو HAR). تحدد هذه الوسيطة عدد العمليات (الخيوط) المستخدمة (الافتراضي: 25) | | -rl | --rate-limit † | الحد الأقصى لعدد الطلبات المرسلة في الثانية (الافتراضي: 0، بدون تحديد معدل). يساعد ذلك في منع إغراق الخادم الهدف. | | -x | --exclude | استثناءات روابط إضافية (من القائمة في ) في قائمة مفصولة بفواصل، مثل | | -orig | --origin | هل تريد أن يكون مصدر الرابط في المخرجات. يُعرض كـ في المخرجات (الافتراضي: false) | | -prefixed | | هل تريد رؤية أي الروابط تمت إضافة بادئة لها في المخرجات. يُعرض بعد الرابط والمصدر في المخرجات (الافتراضي: false) | | -xrel | --exclude-relative-links | افتراضياً، إذا كانت أي روابط في النتائج تبدأ بـ أو ، فسيتم تضمينها. إذا تم استخدام هذه الوسيطة، فلن تتم إضافة هذه الروابط النسبية. | | -t | --timeout † | عدد الثواني التي تنتظرها حتى يرسل الخادم البيانات قبل الاستسلام (الافتراضي: 10 ثوانٍ) | | -r | --retries † | عدد مرات إعادة محاولة الطلب بعد الفشل (مثل انتهاء المهلة، خطأ في الاتصال، إلخ). هذا محدود بـ 5 محاولات (الافتراضي: 0) | | -inc | --include | قم بتضمين روابط الإدخال () في المخرجات (الافتراضي: false) | | -u | --user-agent † | ما هي وكلاء المستخدم للحصول على الروابط، مثل . القيم الممكنة هي ، ، و . أيضاً هناك ، و التي هي مجموعات فرعية من ولكن يمكن استخدامها بشكل منفصل. | | -uc | --user-agent-custom † | سلسلة وكيل مستخدم مخصصة لاستخدامها في جميع الطلبات. ستتجاوز هذه الوسيطة /. يمكن استخدامها عندما يتطلب برنامج ما ترويسة وكيل مستخدم محددة لتعريفك على سبيل المثال. | | -insecure | † | ما إذا كان يجب تعطيل فحوصات شهادة TLS عند إجراء الطلبات (الافتراضي: false) | | -s429 | † | توقف عندما يكون أكثر من 95% من الاستجابات تُرجع 429 Too Many Requests (الافتراضي: false) | | -s403 | † | توقف عندما يكون أكثر من 95% من الاستجابات تُرجع 403 Forbidden (الافتراضي: false) | | -sTO | † | توقف عندما يكون أكثر من 95% من الطلبات تنتهي مهلة (الافتراضي: false) | | -sCE | † | توقف عندما يكون أكثر من 95% من الطلبات بها أخطاء اتصال (الافتراضي: false) | | -m | --memory-threshold | نسبة عتبة الذاكرة. إذا تجاوزت ذاكرة الجهاز العتبة، فسيتم إيقاف البرنامج وإنهاؤه بشكل أنيق قبل نفاد الذاكرة (الافتراضي: 95) | | -mfs | --max-file-size † | الحد الأقصى لحجم الملف (بالبايت) للملف الذي سيتم فحصه إذا كان -i مجلد. إذا كان حجم الملف أكبر، فسيتم تجاهله (الافتراضي: 500 ميجابايت). تعيين القيمة على 0 يعني عدم تجاهل أي ملف بغض النظر عن الحجم. | | -mrs | --max-response-size † | الحد الأقصى لحجم الاستجابة (بالميجابايت) للتنزيل. سيتم تخطي الاستجابات الأكبر من ذلك (الافتراضي: 100 ميجابايت). | | -fp | --forward-proxy † | للعثور النشط على الروابط باستخدام رابط (أو ملف روابط)، أعد تشغيل الطلبات عبر وكيل مثل Burp أو Caido، مثل . | | -rp | --request-proxy | وكيل الطلب للاستخدام. يمكن أن يكون سلسلة وكيل (مثل ، ) أو ملف يحتوي على قائمة وكلاء (واحد لكل سطر، اختيار عشوائي). | | | --heap | ما إذا كنت تريد التقاط لقطة كومة من عناوين URL التي تمت زيارتها واستخراج الروابط من ذاكرة المتصفح. سيستغرق هذا وقتاً أطول ولكن قد يكتشف روابط ديناميكية تم إنشاؤها قد تفوتها التحليلات الثابتة القياسية (يتطلب تثبيت Playwright). | | -ro | --readable-only | إذا تم تمريرها، فسيتم استخراج النص القابل للقراءة فقط من استجابات/ملفات HTML باستخدام BeautifulSoup قبل البحث عن الروابط. يستثني ذلك المحتوى من علامات و و و . | | -ascii-only | | ما إذا كانت الروابط والمعاملات ستتم إضافتها فقط إذا كانت تحتوي على أحرف ASCII فقط. يمكن أن يكون هذا مفيداً عندما تعلم أن الهدف من المحتمل أن يستخدم أحرف ASCII وتحصل على عدد من الإيجابيات الخاطئة من الملفات الثنائية لسبب ما. | | -mtl | --max-time-limit | الحد الأقصى للوقت (بالدقائق) للتشغيل قبل التوقف (الافتراضي: 0). إذا تم تمرير 0، فلا يوجد حد. | | | --config | مسار ملف التكوين YML. إذا لم يتم تمريره، فإنه يبحث عن ملف في الدليل الافتراضي، عادةً . | | -nwlpl | --no-wordlist-plurals | عند العثور على كلمات لقائمة كلمات خاصة بالهدف، افتراضياً تتم إضافة كلمات جديدة إذا كانت هناك كلمة مفردة من جمع، والعكس صحيح. إذا تم استخدام هذه الوسيطة، لا تتم هذه العملية. | | -nwlpw | --no-wordlist-pathwords | افتراضياً، سيتم معالجة أي كلمات مسار موجودة في الروابط لقائمة الكلمات الخاصة بالهدف. إذا تم استخدام هذه الوسيطة، فلن تتم معالجتها. | | -nwlpm | --no-wordlist-parameters | افتراضياً، سيتم معالجة أي معاملات موجودة في الروابط لقائمة الكلمات الخاصة بالهدف. إذا تم استخدام هذه الوسيطة، فلن تتم معالجتها. | | -nwlc | --no-wordlist-comments | افتراضياً، سيتم معالجة أي تعليقات في الصفحات لقائمة الكلمات الخاصة بالهدف. إذا تم استخدام هذه الوسيطة، فلن تتم معالجتها. | | -nwlia | --no-wordlist-imgalt | افتراضياً، سيتم معالجة أي سمات 'alt' للصور لقائمة الكلمات الخاصة بالهدف. إذا تم استخدام هذه الوسيطة، فلن تتم معالجتها. | | -nwld | --no-wordlist-digits | استبعاد أي كلمات من قائمة الكلمات الخاصة بالهدف تحتوي على أرقام. | | -nwll | --no-wordlist-lowercase | افتراضياً، أي كلمة تُضاف بها أي أحرف كبيرة ستضاف أيضاً الكلمة بالأحرف الصغيرة. إذا تم استخدام هذه الوسيطة، فلن تتم إضافة الكلمات الصغيرة. | | -wlml | --wordlist-maxlen | الحد الأقصى لطول الكلمات لإضافتها إلى قائمة الكلمات الخاصة بالهدف، باستثناء الجموع (الافتراضي: 0 - بدون حد) | | -swf | --stopwords-file | ملف يحتوي على كلمات توقف إضافية (بالإضافة إلى "stopWords" في ملف YML Config) تُستخدم لاستبعاد الكلمات من قائمة الكلمات الخاصة بالهدف. تُستخدم كلمات التوقف في معالجة اللغة الطبيعية ويمكن العثور على قوائم مختلفة في مكتبات مختلفة. قد ترغب في إضافة كلمات بلغات مختلفة، حسب هدفك. | | -brt | --burpfile-remove-tags | عندما يكون الإدخال المُمرر مع ملف Burp، يُطلب من المستخدم تفاعلياً ما إذا كان يريد إزالة العلامات غير الضرورية من ذلك الملف (أحياناً تكون هناك مشكلة في ملفات Burp XML التي يمكن حلها غالباً عن طريق إزالة العلامات غير الضرورية مما سيجعل الملف أصغر حجماً). إذا كنت تستخدم xnLinkFinder في سكريبت، فأنت لا تريد التوقف لإدخال المستخدم، لذا يمكنك تعيين ذلك عن طريق تمرير هذه الوسيطة بقيمة أو . ملاحظة: هذا تغيير دائم في الملف | | -all | --all-tlds | سيتم إرجاع جميع الروابط الموجودة، حتى لو لم يكن TLD شائعاً. يمكن أن يؤدي هذا إلى عدد من الإيجابيات الخاطئة حيث قد تكون أسماء المتغيرات، إلخ، نطاقاً حقيقياً محتملاً. افتراضياً، سيتم إرجاع الروابط التي تحتوي فقط على TLD في قائمة TLDs الشائعة ( في ). | | -cl | --content-length | إظهار طول المحتوى للاستجابة عند الزحف. | | -nb | --no-banner | إخفاء شعار الأداة. | | -v | --verbose | مخرجات مفصلة | | -vv | --vverbose | مخرجات مفصلة جداً | | | --version | إظهار رقم الإصدار الحالي. | | -h | --help | إظهار رسالة المساعدة والخروج |† غير ذي صلة لمدخل الدليل، ملف XML من Burp، ملف ZAP، ملف CSV من Caido، أو ملف HAR

config.yml

ملف config.yml (عادةً في ~/.config/xnLinkFinder/) يحتوي على المفاتيح التي يمكن تحديثها لتناسب احتياجاتك:

  • linkExclude - قائمة مفصولة بفواصل من السلاسل النصية (مثل .css,.jpg,.jpeg إلخ) يتم فحص جميع الروابط مقابلها. إذا تضمن الرابط أيًا من هذه السلاسل، فسيتم استبعاده من المخرجات. إذا كان الإدخال دليلاً، فسيتم فحص أسماء الملفات مقابل هذه القائمة.
  • contentExclude - قائمة مفصولة بفواصل من السلاسل النصية (مثل text/css,image/jpeg,image/jpg إلخ) يتم فحص جميع رؤوس Content-Type للاستجابات مقابلها. سيتم استبعاد أي استجابات تحتوي على أنواع المحتوى هذه ولن يتم فحصها بحثًا عن الروابط.
  • fileExtExclude - قائمة مفصولة بفواصل من السلاسل النصية (مثل .zip,.gz,.tar إلخ) يتم فحص جميع الملفات في وضع الدليل مقابلها. إذا كان للملف أحد هذه الامتدادات، فلن يتم البحث فيه عن روابط. أيضًا، في الوضع العادي، إذا لم يكن للاستجابة نوع محتوى لفحصه لاستبعاد، فسيتم فحص هذه الامتدادات في نهاية عنوان URL لتحديد ما إذا كان سيتم البحث عن روابط أم لا.
  • regexFiles - قائمة بأنواع الملفات مفصولة بحرف الأنبوب (مثل php|php3|php5 إلخ). تُستخدم هذه في تعبير التعبير المنتظم للبحث عن الروابط عند وجود نتائج ليست روابط واضحة ولكنها أنواع ملفات مثيرة للاهتمام تريد استخراجها. إذا أضفت إلى هذه القائمة، فتأكد من وضع شرطة مائلة عكسية لأي نقاط لضمان صحة التعبير المنتظم، مثل js\.map

† إذا لم يتم العثور على هذه المفاتيح في ملف التكوين، فستكون القيمة الافتراضية True

أمثلة

البحث عن روابط من هدف محدد - أساسي```

xnLinkFinder -i target.com -sf target.com

root@kitploit:~
### العثور على روابط من هدف محدد - تفصيلي

من الناحية المثالية، قم بتوفير بادئة النطاق (`-sp`) مع النطاق الأساسي (بما في ذلك المخطط)، ومرشح نطاق (`-sf`) لتصفية النتائج إلى النطاقات ذات الصلة فقط (يمكن أن يكون هذا ملفًا أو نطاقات داخل النطاق). كما يمكنك تمرير ملفات تعريف الارتباط (cookies) ورؤوس مخصصة لضمان العثور على روابط متاحة فقط للمستخدمين المصرح لهم.
تحديد وكيل المستخدم (`-u desktop mobile`) سيبحث أولاً عن جميع الروابط باستخدام وكلاء مستخدم لأجهزة الكمبيوتر المكتبية، ثم يحاول مرة أخرى باستخدام وكلاء مستخدم للأجهزة المحمولة. قد تكون هناك نقاط نهاية محددة مرتبطة بوكيل المستخدم المعطى. إعطاء قيمة للعمق (`-d`) سيواصل إرسال الطلبات إلى الروابط التي تم العثور عليها في بحث العمق السابق للعثور على المزيد من الروابط.```
xnLinkFinder -i target.com -sp target_prefix.txt -sf target_scope.txt -spo -inc -vv -H 'Authorization: Bearer XXXXXXXXXXXXXX' -c 'SessionId=MYSESSIONID' -u desktop mobile -d 10

العثور على روابط من قائمة عناوين URL - أساسي

إذا كان لديك ملف يحتوي على عناوين URLs لملفات JS على سبيل المثال، يمكنك البحث عن روابط فيها:``` xnLinkFinder -i target_js.txt -sf target.com

root@kitploit:~
ملاحظة: يُفترض أن الملف المُمرَّر هو قائمة عناوين URL إذا كان السطر الأول يبدأ بـ `//` أو `http` أو كان بصيغة نطاق (مثل `example.com`، `sub.example.co.uk`)، وإلا يُعتبر ملفًا للبحث في محتوياته (ما لم يكن ملف Burp أو Zap أو Caido أو HAR).

### البحث عن الروابط من محتويات ملف - أساسي

إذا كان لديك رد محفوظ مثلاً، يمكنك البحث عن الروابط فيه:```
xnLinkFinder -i response.txt -sf target.com

ملاحظة: يُفترض أن الملف المُمرَّر هو قائمة عناوين URL إذا كان السطر الأول يبدأ بـ // أو http أو كان بصيغة نطاق (مثل example.com، sub.example.co.uk)، وإلا يُعتبر ملفاً للبحث في محتوياته (ما لم يكن ملف Burp أو Zap أو Caido أو HAR).

العثور على روابط من ملفات في دليل - أساسي

إذا كان لديك ملفات، مثل ملفات JS، استجابات HTTP، إلخ، فيمكنك البحث عن الروابط في تلك:``` xnLinkFinder -i ~/.config/waymore/results/target.com

root@kitploit:~
ملاحظة: يتم فحص المجلدات الفرعية أيضًا. يمكن تحديد الخيار `-mfs` لتخطي الملفات التي تتجاوز حجمًا معينًا.

### العثور على الروابط من مشروع Burp - أساسي

في Burp، حدد العناصر التي تريد البحث عنها من خلال تمييز النطاق مثلاً، ثم النقر بزر الماوس الأيمن واختيار `Save selected items`. تأكد من تحديد خيار `base64-encode requests and responses` قبل الحفظ.
للحصول على جميع الروابط من الملف (حتى مع الملفات الضخمة، ستتمكن من الحصول على جميع الروابط):```
xnLinkFinder -i target_burp.xml

ملاحظة: يفترض xnLinkFinder أنه إذا كان السطر الأول من الملف الذي تم تمريره مع -i يبدأ بـ <?xml فأنت تحاول معالجة ملف Burp.

العثور على الروابط من مشروع Burp - تفصيلي

من الأفضل توفير بادئة النطاق (-sp) مع النطاق الأساسي (بما في ذلك المخطط)، ومرشح النطاق (-sf) لتصفية النتائج فقط إلى النطاقات ذات الصلة.``` xnLinkFinder -i target_burp.xml -o target_burp.txt -sp https://www.target.com -sf target.* -ow -spo -inc -vv

root@kitploit:~
### البحث عن الروابط من مشروع ZAP - أساسي

في ZAP، حدد العناصر التي تريد البحث عنها عن طريق تمييز سجل History مثلاً، ثم النقر على القائمة `Export` واختيار `Save Messages...` (أو `Export Messages to File...` في الإصدارات الأقدم). سيسمح لك ذلك بحفظ ملف نصي ASCII لجميع الطلبات والاستجابات التي ترغب في البحث فيها.
للحصول على جميع الروابط من الملف (حتى مع الملفات الضخمة، ستتمكن من الحصول على جميع الروابط):```
xnLinkFinder -i target_zap.txt

ملاحظة: يفترض xnLinkFinder أنه إذا كان السطر الأول من الملف الذي تم تمريره باستخدام -i بتنسيق ==== 99 ========== أو ===99 ========== على سبيل المثال، فإنك تحاول معالجة ملف نصي ASCII لـ ZAP.

العثور على روابط من ملف CSV تصدير من Caido - أساسي

في Caido، انتقل إلى قسم السجل واختر خيار التصدير.

إذا كنت تستخدم إصدار Caido Pro أو Enterprise، فاختر خيار تصدير الصفوف الحالية واختر بتنسيق CSV. اذهب إلى قسم الصادرات وقم بتنزيل ملف CSV. ثم مرره كمدخل:``` xnLinkFinder -i 2023-03-18-010332_csv_requests.csv

root@kitploit:~
إذا كنت تستخدم إصدار Caido Community، فسيتعين عليك اختيار خيار **Export all** واختيار **As CSV**. انتقل إلى قسم **Exports** وقم بتنزيل ملف CSV. نظرًا لأن لديك السجل الكامل، فستحتاج إلى إزالة أي شيء غير ذي صلة من ملف CSV. استخدم المثال أدناه، حيث `redbull` هو الجزء الرئيسي من النطاقات المستهدفة التي تبحث عنها.```
cat 2023-03-18-010332_csv_requests.csv | grep -E '^id|^[0-9]+,[^,]*redbull' > caido_redbull.csv
xnLinkFinder -i caido_redbull.csv

ملاحظة: يفترض xnLinkFinder أنه إذا كان السطر الأول من الملف المُمرَّر مع -i بتنسيق id,host,method، فإنك تحاول معالجة ملف CSV مُصدَّر من Caido.

العثور على روابط من ملف HAR (أرشيف HTTP) بتنسيق JSON - أساسي

ملف HAR هو ملف JSON يحتوي على قائمة من طلبات HTTP والاستجابات. وهو تنسيق شائع لتخزين حركة مرور HTTP. يمكنك تصدير ملف HAR من معظم متصفحات الويب، عادةً من علامة التبويب "الشبكة" في أدوات المطور. مرِّر الملف كمدخل:``` xnLinkFinder -i browser.har

root@kitploit:~
NOTE: يفترض xnLinkFinder أنه إذا كان اسم الملف ينتهي بـ `.har` أو كان السطر الأول من الملف يحتوي على `"log"` ويبدأ بـ `{` فإنك تحاول معالجة ملف HAR.

### البحث عن روابط من دليل نتائج Waymore

يمكن استخدام أداة [waymore](https://github.com/xnl-h4ck3r/waymore) للحصول على عناوين URL من واجهات برمجة تطبيقات طرف ثالث مختلفة، وتنزيل الردود المؤرشفة من مصادر متعددة. سيؤدي تمرير دليل نتائج waymore إلى `xnLinKFinder` إلى البحث في محتويات الردود المؤرشفة، وكذلك طلب عناوين URL من `waymore.txt` وعناوين URL المؤرشفة من `waymore_index.txt` (أو `index.txt` للإصدارات الأقدم من `waymore`) والحصول على المزيد من الروابط من تلك الردود. إذا كانت `-d`/`--depth` تساوي صفرًا، فسيتم إرجاع عناوين URL من `waymore_index.txt` فقط دون طلبها.```
xnLinkFinder -i ~/Tools/waymore/results/target.com

ملاحظة: يتم تمريره كدليل عادي، لكن xnLinkFinder سيحدد أنه دليل نتائج waymore ويعالجه وفقًا لذلك. يعتمد هذا على اصطلاح التسمية الافتراضي لملف عناوين URL الذي يكون waymore.txt وأن ذلك الملف موجود في نفس الدليل مع الملفات المؤرشفة (وهو الافتراضي).

التوجيه إلى أدوات أخرى

يمكنك توجيه xnLinkFinder إلى أدوات أخرى. يتم إرسال أي أخطاء إلى stderr وأي روابط يتم العثور عليها تُرسل إلى stdout. لا يزال ملف الإخراج يتم إنشاؤه بالإضافة إلى الروابط التي يتم توجيهها إلى البرنامج التالي. ومع ذلك، لا يتم توجيه المعلمات المحتملة إلى البرنامج التالي، ولكنها تظل مكتوبة في الملف. على سبيل المثال:``` xnLinkFinder -i redbull.com -sp https://redbull.com -sf rebbull.* -d 3 | unfurl keys | sort -u

root@kitploit:~
يمكنك أيضًا تمرير الإدخال عبر `stdin` بدلاً من `-i`.```
cat redbull_subs.txt | xnLinkFinder -sp https://redbull.com -sf rebbull.* -d 3

ملاحظة: لا يمكنك تمرير ملف Burp أو ZAP أو Caido أو HAR عبر الأنابيب، بل يجب تمريرها باستخدام -i.

التوصيات والملاحظات

  • استخدم دائمًا وسيطة بادئة النطاق -sp. يمكن أن يكون هذا نطاق نطاق واحد، أو ملفًا يحتوي على نطاقات نطاق متعددة. فيما يلي أمثلة على التنسيق المستخدم (لا يجب تضمين مسار، ولا استخدام أحرف بدل. المخطط اختياري، لكن سيكون الافتراضي هو http): ``` http://www.target.com https://target-payments.com https://static.target-cdn.com
    root@kitploit:~

إذا تم العثور على رابط ليس له نطاق، على سبيل المثال /path/to/example.js فإن تمرير -sp http://www.target.com سينتج عنه المخرجات http://www.target.com/path/to/example.js وإذا كان العمق (-d) أكبر من 1، فيمكن تقديم طلب إلى ذلك الرابط للبحث عن المزيد من الروابط. إذا تم تمرير ملف من النطاقات باستخدام -sp فإن المخرجات ستتضمن كل نطاق متبوعًا بـ /path/to/example.js وزيادة فرصة العثور على المزيد من الروابط.

  • إذا كنت تستخدم -sp ولكنك لا تزال ترغب في إرجاع الرابط الأصلي لـ /path/to/example.js (بدون نطاق) بالإضافة إلى ذلك في المخرجات، فمرر الوسيطة -spo.
  • استخدم دائمًا وسيطة تصفية النطاق -sf. سيضمن ذلك إرجاع النطاقات ذات الصلة فقط في المخرجات، والأهم من ذلك إذا كان العمق (-d) أكبر من 1، فلن يتم البحث عن الأهداف خارج النطاق عن الروابط أو المعلمات. يمكن أن يكون هذا نطاقًا واحدًا، أو ملفًا يحتوي على نطاقات متعددة. فيما يلي أمثلة على التنسيق المستخدم (لا يجب تضمين مخطط أو مسار): ``` target.* target-payments.com static.target-cdn.com
    root@kitploit:~

هذا مخصص لتصفية نطاق الروابط فقط.

  • إذا كنت تريد تصفية المخرجات النهائية بأي شكل، استخدم -ra. من الجيد دائمًا استخدام https://regex101.com/ للتحقق من أن تعبير Regex الخاص بك سيفعل ما تتوقعه.
  • استخدم الخيار -v للحصول على فكرة أفضل عما تفعله الأداة.
  • إذا واجهت مشكلات، استخدم الخيار -vv الذي قد يُظهر الأخطاء التي تحدث، والتي يمكن حلها، أو يمكنك رفعها كمشكلة على github.
  • قم بتمرير قيم ملفات تعريف الارتباط (-c)، والرؤوس (-H) والتعبير العادي (-ra) داخل علامات اقتباس مفردة، على سبيل المثال -ra '/api/v[0-9]\.[0-9]\*'
  • عيّن الخيار -o لتحديد اسم ملف إخراج محدد للروابط، بدلاً من الاسم الافتراضي output.txt. إذا كنت تخطط لتشغيل عمق كبير من عمليات البحث، ابدأ بالعمق 2 مع الخيار -v للتحقق مما يتم إرجاعه. ثم يمكنك زيادة العمق، وسيتم إلحاق المخرجات الجديدة بالملف الموجود، إلا إذا قمت بتمرير -ow.
  • عيّن الخيار -op لتحديد اسم ملف إخراج محدد للمعلمات المحتملة، بدلاً من الاسم الافتراضي . سيتم إلحاق أي مخرجات بالملف الموجود، إلا إذا قمت بتمرير .

المشكلات

إذا واجهت أي مشاكل على الإطلاق، أو كانت لديك أفكار للتحسينات، فلا تتردد في رفع مشكلة على Github. إذا كانت هناك مشكلة، سيكون من المفيد أن تقدم الأمر الدقيق الذي قمت بتشغيله ووصفًا تفصيليًا للمشكلة. إذا أمكن، قم بتشغيل الأمر مع -vv لإعادة إنتاج المشكلة وأخبرني عن أي رسائل خطأ تظهر.

المهام المستقبلية

  • إضافة فحص تعبير عادي محدد للطلبات (Requests) عند تمرير ملف وكيل كمدخل. حاليًا، يستخدم نفس التعبير العادي المستخدم للطلبات، ولكن هذا ليس مثاليًا.
  • الحصول على أسماء ملفات تعريف الارتباط (Cookie) لإضافتها إلى قائمة المعلمات المحتملة.

مثال للإخراج

العثور النشط على الروابط لنطاق:

...

الإدخال والإخراج عبر الأنابيب (Piped):

حظًا سعيدًا وصيدًا موفقًا! إذا كنت حقًا تحب الأداة (أو أي أدوات أخرى)، أو ساعدتك في العثور على مكافأة رائعة، فكر في شراء قهوة لي! ☕ (يمكنني استخدام الكافيين!)

🤘 /XNL-h4ck3r

اشترِ لي قهوة على ko-fi.com

تنزيل الأداة
cli
/
-sp
/
-spkf
'name1=value1; name2=value2;'
'Header1: value1; Header2: value2;'
/api/v[0-9]\.[0-9]\*
-sp
--scope-prefix
config.yml
careers,forum
LINK-URL [ORIGIN-URL]
(PREFIXED)
./
../
-i
-u desktop mobile
desktop
mobile
set-top-boxes
game-console
mobile-apple
mobile-android
mobile-windows
mobile
-u
--user-agent
http://127.0.0.1:8080
http://user:[email protected]:8000
socks5://host:port
<script>
<style>
<noscript>
<template>
config.yml
~/.config/xnLinkFinder
ملاحظة: إذا كانت قيمة YAML config respParamPathWords هي True فلن يكون لهذه الوسيطة أي تأثير ما لم يتم تمرير -nwlpm/--no-wordlist-parameters أيضاً.
-i
true
false
commonTLDs
config.yml
  • respParamLinksFound † - ما إذا كان سيتم الحصول على معاملات محتملة من الروابط الموجودة في الردود: True أو False
  • respParamPathWords † - ما إذا كان سيتم إضافة كلمات المسار في الروابط المستردة كمعاملات محتملة: True أو False
  • respParamJSON † - إذا كان نوع MIME للاستجابة يحتوي على JSON، فهل سيتم إضافة قيم مفاتيح JSON كمعاملات محتملة: True أو False
  • respParamJSVars † - ما إذا كانت متغيرات JavaScript المعرفة بـ var أو let أو const ستُضاف كمعاملات محتملة: True أو False
  • respParamXML † - إذا كان نوع MIME للاستجابة يحتوي على XML، فهل سيتم إضافة قيم سمات XML كمعاملات محتملة: True أو False
  • respParamInputField † - إذا كان نوع MIME للاستجابة يحتوي على HTML أو JAVASCRIPT (لأن HTML قد يكون مبنيًا في HTML)، فهل سيتم إضافة سمات NAME و ID لأي حقول INPUT (أو TEXTAREA/SELECT/BUTTON) كمعاملات محتملة: True أو False
  • respParamMetaName † - إذا كان نوع MIME للاستجابة يحتوي على HTML، فهل سيتم إضافة سمات NAME لأي وسوم META كمعاملات محتملة: True أو False
  • wordsContentTypes - قائمة مفصولة بفواصل من السلاسل النصية (مثل text/html,text/plain) لتحديد أنواع محتوى الاستجابة التي سيتم البحث فيها عن كلمات لتضمينها في قائمة الكلمات الخاصة بالهدف.
  • stopWords - قائمة مفصولة بفواصل من السلاسل النصية (مثل then,this,that) لتحديد الكلمات المستثناة من قائمة الكلمات الخاصة بالهدف. تتكون هذه القائمة الافتراضية في البداية من أدوات التعريف الإنجليزية، وحروف العطف المنسقة، وحروف الجر، بالإضافة إلى قائمة كلمات التوقف من مكتبة Scikit-Learn، وهي مكتبة تعلم آلة بلغة بايثون.
  • commonTLDs - قائمة مفصولة بفواصل من نطاقات المستوى الأعلى الأكثر شيوعًا. ما لم يتم تمرير الوسيطة -all/--all-tlds، يتم فقط إرجاع الروابط ذات النطاقات التي تحتوي على نطاق مستوى أعلى مدرج في هذه القائمة.
  • parameters.txt
    -ow
  • إذا كنت تستخدم عمقًا عاليًا (-d)، فاحذر من بعض المواقع التي تستخدم روابط ديناميكية لذا ستستمر في العثور على روابط جديدة. إذا لم يتم العثور على روابط جديدة، فسيتوقف xnLinkFinder عن البحث. يُنصح أيضًا بتوفير علامات الإيقاف (s429، s403، sTO، sCE).
  • إذا كنت تعثر على عدد كبير من الروابط، خاصة إذا كان العمق (قيمة -d) مرتفعًا، وكانت الموارد محدودة، فسيتوقف البرنامج عند الوصول إلى حد الذاكرة (-m) وينتهي بشكل أنيق مع بقاء البيانات سليمة قبل أن يتم قتله.
  • إذا قررت إلغاء xnLinkFinder (باستخدام Ctrl-C) في منتصف التشغيل، فكن صبورًا وسيتم حفظ أي بيانات تم جمعها قبل الانتهاء بشكل أنيق.
  • استخدام الخيار -orig سيُظهر عنوان URL حيث تم العثور على الرابط. قد يعني هذا وجود روابط مكررة في المخرجات إذا تم العثور على نفس الرابط في مصادر متعددة، ولكن سيتم إلحاقه بعنوان URL المصدر بين قوسين مربعين.
  • عند إجراء الطلبات، سيستخدم xnLinkFinder وكيل مستخدم عشوائيًا من المجموعة الحالية، والتي تكون افتراضية على desktop (ما لم يتم استخدام الوسيط -uc/--user-agent-custom). إذا كان لديك هدف قد يكون له روابط مختلفة لمجموعات وكيل مستخدم مختلفة، فحدد -u desktop mobile على سبيل المثال (افصل بينها بمسافة). خيار وكيل المستخدم mobile هو مزيج من mobile-apple وmobile-android وmobile-windows. القيم الممكنة هي desktop، mobile، set-top-boxes وgame-console.
  • عندما يتم تعيين -i إلى دليل، سيتم البحث عن الروابط في محتويات الملفات الموجودة في جذر ذلك الدليل. لا يتم البحث في الملفات الموجودة في الدلائل الفرعية. سيتم تخطي أي ملفات يتجاوز حجمها الحجم المحدد بواسطة -mfs (افتراضي: 500 ميجابايت).
  • عند استخدام الخيار -replay-proxy، قد تستغرق الطلبات وقتًا أطول في بعض الأحيان. إذا بدأت في رؤية المزيد من أخطاء Request Timeout (سترى الأخطاء إذا استخدمت الخيارات -v أو -vv)، ففكر في استخدام -t لرفع حد المهلة.
  • إذا كنت تعلم أن الهدف سيحتوي فقط على أحرف ASCII في الروابط والمعلمات، ففكر في تمرير -ascii-only. يمكن أن يؤدي ذلك إلى إزالة عدد من النتائج الإيجابية الخاطئة التي قد يتم إرجاعها أحيانًا من البيانات الثنائية.
  • إذا قمت بتمرير دليل نتائج waymore، فمن الجيد تمرير الوسيطة -d/--depth للبحث عن أي روابط إضافية تم العثور عليها من طلبات URL وأيضًا -u/--user-agent إذا كنت تعتقد أنه قد يكون هناك محتوى مختلف تم العثور عليه، على سبيل المثال -u desktop mobile.
  • قم دائمًا بتمرير اسم ملف -owl/--output-wordlist لحفظ قائمة الكلمات الخاصة بالهدف. يمكن أن تكون هذه القائمة مفيدة جدًا عند فحص الهدف بالتخمين.
  • يتم أخذ الكلمات الخاصة بقائمة كلمات الهدف من المصادر التالية (أي كلمة مكونة من 3 أحرف أو أكثر)، ولكن يتم تحديدها أيضًا بواسطة وسيطات قائمة الكلمات الأخرى (راجع قسم الاستخدام أعلاه):
    • جميع الاستجابات ذات الشروط المعينة:
      • يتم البحث فقط في الاستجابات ذات أنواع المحتوى المحددة في قسم wordsContentTypes في ملف تكوين YML. الإعدادات الافتراضية هي text/html،application/xml،application/json،text/plain
      • الكلمات من محتوى علامة <meta> حيث:
        • Property هي og:title أو og:description
        • Name هي description،keywords،twitter:title أو twitter:description
      • الكلمات من تعليقات HTML
      • الكلمات من سمة alt لعلامات ``
      • الكلمات من باقي HTML الداخلي للصفحة، باستثناء العلامات <style> و<script> و<link>
    • الكلمات الموجودة من كلمات المسار في الروابط التي تم العثور عليها.
    • المعلمات الموجودة من الاستجابات والروابط.
    • ستتم أيضًا إضافة النسخة المفردة/الجمع من جميع الكلمات الصالحة إلى قائمة الكلمات إذا أمكن.
    • إذا كانت الكلمة الأصلية تحتوي على أي أحرف كبيرة، فستتم أيضًا إضافة نسخة صغيرة.
  • إذا كانت "كلمات الإيقاف" الافتراضية لقائمة كلمات الهدف ليست جيدة بما فيه الكفاية، فإما قم بتغييرها في ملف تكوين YML، أو قم بتوفير كلمات إيقاف إضافية باستخدام الخيار -swf/--stopwords-file. قد ترغب في تضمين كلمات إيقاف بلغة أخرى، اعتمادًا على الهدف. تُستخدم كلمات الإيقاف في معالجة اللغة الطبيعية (NLP) ويمكن العثور على العديد من قوائم كلمات الإيقاف عبر الإنترنت لتناسب الاحتياجات المختلفة.