
एक पायथन टूल जो किसी लक्ष्य के लिए एंडपॉइंट, संभावित पैरामीटर, लक्ष्य-विशिष्ट वर्डलिस्ट और रहस्यों की खोज करने के लिए उपयोग किया जाता है।
यह एक उपकरण है जो किसी दिए गए लक्ष्य के लिए समापन बिंदु (endpoints) खोजने, संभावित पैरामीटर खोजने, लक्ष्य-विशिष्ट शब्द सूची (wordlist) उत्पन्न करने और गुप्त जानकारी (secrets) खोजने के लिए उपयोग किया जाता है। यह उन्हें निम्नलिखित तरीकों से खोज सकता है:
waymore -mode R से संग्रहीत प्रतिक्रिया फ़ाइलें खोजना और waymore.txt से URL तथा waymore_index.txt से मूल URL का अनुरोध करना - waymore README.md देखें)यह पायथन स्क्रिप्ट मेरे Burp एक्सटेंशन GAP की लिंक खोजने की क्षमताओं पर आधारित है। शुरुआती बिंदु के रूप में, मैंने Gerben Javado द्वारा बनाया गया अद्भुत टूल LinkFinder लिया, और लिंक खोजने के लिए Regex का उपयोग किया, लेकिन और अधिक खोजने के लिए अतिरिक्त सुधार किए।
xnLinkFinder Python 3 का समर्थन करता है।
xnLinkFinder को डिफ़ॉल्ट (ग्लोबल) पायथन वातावरण में स्थापित करें।```bash
pip install xnLinkFinder
या```bash
pip install git+https://github.com/xnl-h4ck3r/xnLinkFinder.git -v
आप अपग्रेड कर सकते हैं```bash pip install --upgrade xnLinkFinder
### pipx
त्वरित सेटअप पृथक पायथन वातावरण में [pipx](https://pypa.github.io/pipx/) का उपयोग करके```bash
pipx install git+https://github.com/xnl-h4ck3r/xnLinkFinder.git
नोट: PDF फ़ाइलों से लिंक निकालने के लिए, आप अपने सिस्टम पर pdftotext इंस्टॉल कर सकते हैं। आप इसे Linux पर sudo apt install -y poppler-utils या macOS पर brew install poppler का उपयोग करके इंस्टॉल कर सकते हैं। यदि आपके पास pdftotext इंस्टॉल नहीं है, तो xnLinkFinder pypdf Python लाइब्रेरी का उपयोग करने का विकल्प चुनेगा। यदि कोई टेक्स्ट नहीं मिलता है (जैसे स्कैन किए गए PDF के लिए), तो यह ocrmypdf का उपयोग करने का प्रयास करेगा यदि वह इंस्टॉल है (उदा. sudo apt install -y ocrmypdf)। सामान्यतः pdftotext और ocrmypdf का उपयोग करना अकेले pypdf की तुलना में बहुत बेहतर परिणाम देता है।
| ----------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| -i | --input | इनपुट: URL, URL की टेक्स्ट फ़ाइल, खोजने के लिए फ़ाइलों की एक निर्देशिका, Burp XML आउटपुट फ़ाइल, ZAP आउटपुट फ़ाइल, Caido CSV फ़ाइल, 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 | आउटपुट लिंक को केवल तभी शामिल करने के लिए फ़िल्टर करेगा यदि लिंक का डोमेन निर्दिष्ट दायरे में है। यदि पास किया गया मान एक मान्य फ़ाइल नाम है, तो उस फ़ाइल का उपयोग किया जाएगा, अन्यथा स्ट्रिंग शाब्दिक का उपयोग किया जाएगा। यह तर्क अब अनिवार्य है यदि इनपुट कोई डोमेन/URL (या डोमेन/URL की फ़ाइल) है ताकि दायरे में न आने वाली साइटों को क्रॉल करने से रोका जा सके और भ्रामक परिणामों को भी रोका जा सके। |
| -c | --cookies † | HTTP अनुरोधों के साथ भेजने के लिए कुकीज़ जोड़ें। प्रारूप में पास करें |
| -H | --headers † | HTTP अनुरोधों के साथ भेजने के लिए कस्टम हेडर जोड़ें। प्रारूप में पास करें |
| -ra | --regex-after | आउटपुट से पहले पाए गए एंडपॉइंट के विरुद्ध फ़िल्टरिंग उद्देश्यों के लिए RegEx (जैसे )। यदि यह मेल खाता है, तो लिंक आउटपुट होता है। |
| -d | --depth † | खोजने के लिए गहराई का स्तर। उदाहरण के लिए, यदि मान 2 पास किया जाता है, तो शुरू में मिले सभी लिंक को फिर अधिक लिंक के लिए खोजा जाएगा (डिफ़ॉल्ट: 1)। Burp फ़ाइलों, ZAP फ़ाइलों, Caido फ़ाइलों, और HAR फ़ाइलों के लिए यह विकल्प अनदेखा किया जाता है क्योंकि वे बहुत बड़ी हो सकती हैं और बहुत अधिक मेमोरी ले सकती हैं। यह सलाह दी जाती है कि () तर्क का उपयोग करें ताकि यह सुनिश्चित हो सके कि बिना डोमेन वाले लिंक पर अनुरोध किया जा सके। |
| -p | --processes † | URL या URL की फ़ाइल (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 † | किस User Agent के लिए लिंक प्राप्त करें, जैसे । संभावित मान हैं , , और । साथ ही , और हैं जो के उपसमूह हैं लेकिन अलग-अलग उपयोग किए जा सकते हैं। |
| -uc | --user-agent-custom † | सभी अनुरोधों के लिए उपयोग करने के लिए एक कस्टम User Agent स्ट्रिंग। यह / तर्क को ओवरराइड करेगा। इसका उपयोग तब किया जा सकता है जब किसी प्रोग्राम को आपकी पहचान के लिए एक विशिष्ट User Agent हेडर की आवश्यकता हो। |
| -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 MB)। 0 पर सेट करने का मतलब है कि कोई भी फ़ाइल अनदेखा नहीं की जाएगी, चाहे आकार कुछ भी हो। |
| -mrs | --max-response-size † | डाउनलोड करने के लिए अधिकतम प्रतिक्रिया आकार (MB में)। इससे बड़ी प्रतिक्रियाओं को छोड़ दिया जाएगा (डिफ़ॉल्ट: 100 MB)। |
| -fp | --forward-proxy † | URL (या URL की फ़ाइल) के साथ सक्रिय लिंक खोज के लिए, अनुरोधों को 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 | लक्ष्य-विशिष्ट शब्दसूची से शब्दों को बाहर करने के लिए उपयोग किए जाने वाले अतिरिक्त स्टॉप वर्ड्स की फ़ाइल (YML कॉन्फ़िग फ़ाइल में "stopWords" के अतिरिक्त)। स्टॉप वर्ड्स का उपयोग प्राकृतिक भाषा प्रसंस्करण में किया जाता है और विभिन्न पुस्तकालयों में विभिन्न सूचियाँ पाई जा सकती हैं। आप अपने लक्ष्य के आधार पर विभिन्न भाषाओं में शब्द जोड़ना चाह सकते हैं। |
| -brt | --burpfile-remove-tags | जब के साथ पास किया गया इनपुट Burp फ़ाइल है, तो उपयोगकर्ता से इंटरैक्टिव रूप से पूछा जाता है कि क्या वे उस फ़ाइल से अनावश्यक टैग हटाना चाहते हैं (कभी-कभी Burp XML फ़ाइलों में समस्या होती है जिसे अनावश्यक टैग हटाकर हल किया जा सकता है जिससे फ़ाइल छोटी भी हो जाएगी)। यदि आप xnLinkFinder को स्क्रिप्ट में उपयोग कर रहे हैं, तो आप उपयोगकर्ता इनपुट के लिए नहीं रुकना चाहते हैं, इसलिए आप इस तर्क को या के साथ पास करके सेट कर सकते हैं। नोट: यह फ़ाइल में स्थायी परिवर्तन है |
| -all | --all-tlds | सभी पाए गए लिंक वापस किए जाएंगे, भले ही TLD सामान्य न हो। इसके परिणामस्वरूप कई गलत सकारात्मक परिणाम हो सकते हैं जहां चर नाम आदि भी संभावित वास्तविक डोमेन हो सकते हैं। डिफ़ॉल्ट रूप से, केवल उन लिंक को वापस किया जाएगा जिनमें सामान्य TLDs ( में ) में से कोई TLD है। |
| -cl | --content-length | क्रॉल करते समय प्रतिक्रिया का Content-Length दिखाएं। |
| -nb | --no-banner | टूल बैनर छिपाएं। |
| -v | --verbose | विस्तृत आउटपुट |
| -vv | --vverbose | बढ़ा हुआ विस्तृत आउटपुट |
| | --version | वर्तमान संस्करण संख्या दिखाएं। |
| -h | --help | सहायता संदेश दिखाएं और बाहर जाएं |† निर्देशिका, बर्प XML फ़ाइल, ZAP फ़ाइल, कैडो CSV फ़ाइल, या HAR फ़ाइल के इनपुट के लिए प्रासंगिक नहीं
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 आदि) द्वारा अलग किए गए फ़ाइल प्रकारों की एक सूची। इनका उपयोग लिंक फाइंडिंग रेगेक्स में किया जाता है जब ऐसी खोजें हों जो स्पष्ट लिंक नहीं हैं, लेकिन दिलचस्प फ़ाइल प्रकार हैं जिन्हें आप चुनना चाहते हैं। यदि आप इस सूची में जोड़ते हैं, तो सुनिश्चित करें कि सही रेगेक्स के लिए किसी भी बिंदु को एस्केप करें, उदाहरण के लिए † यदि ये कॉन्फ़िग फ़ाइल में नहीं पाए जाते हैं, तो ये डिफ़ॉल्ट रूप से True हो जाएंगे
xnLinkFinder -i target.com -sf target.com
### किसी विशिष्ट लक्ष्य से लिंक खोजें - विस्तृत
आदर्श रूप से, प्राथमिक डोमेन (स्कीमा सहित) के साथ स्कोप उपसर्ग (`-sp`) प्रदान करें, और परिणामों को केवल प्रासंगिक डोमेन तक फ़िल्टर करने के लिए एक स्कोप फ़िल्टर (`-sf`) प्रदान करें (यह एक फ़ाइल या इन-स्कोप डोमेन हो सकता है)। साथ ही, आप कुकीज़ और कस्टम हेडर पास कर सकते हैं ताकि यह सुनिश्चित हो सके कि आपको केवल अधिकृत उपयोगकर्ताओं के लिए उपलब्ध लिंक मिलें।
उपयोगकर्ता एजेंट (`-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
यदि आपके पास उदाहरण के लिए JS फ़ाइल URLs की एक फ़ाइल है, तो आप उनमें लिंक्स खोज सकते हैं:``` xnLinkFinder -i target_js.txt -sf target.com
नोट: यदि किसी फ़ाइल की पहली पंक्ति `//` या `http` से शुरू होती है या वह डोमेन का प्रारूप है (जैसे `example.com`, `sub.example.co.uk`), तो उस फ़ाइल को URL की सूची मान लिया जाता है, अन्यथा इसे उस फ़ाइल के रूप में माना जाता है जिसकी सामग्री में खोज की जानी है (जब तक कि वह 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
NOTE: उप-निर्देशिकाओं की भी जाँच की जाती है। फ़ाइलों को एक निश्चित आकार से अधिक छोड़ने के लिए `-mfs` विकल्प निर्दिष्ट किया जा सकता है।
### Burp प्रोजेक्ट से लिंक खोजें - बुनियादी
Burp में, आप जिन आइटम को खोजना चाहते हैं, उन्हें चुनें। उदाहरण के लिए, स्कोप को हाइलाइट करके, राइट-क्लिक करें और `Save selected items` का चयन करें। सुनिश्चित करें कि सेव करने से पहले `base64-encode requests and responses` विकल्प चेक किया गया हो।
फ़ाइल से सभी लिंक प्राप्त करने के लिए (बहुत बड़ी फ़ाइलों के साथ भी, आप सभी लिंक प्राप्त करने में सक्षम होंगे):```
xnLinkFinder -i target_burp.xml
नोट: xnLinkFinder मान लेता है कि यदि -i के साथ पास की गई फ़ाइल की पहली पंक्ति <?xml से शुरू होती है, तो आप Burp फ़ाइल को प्रोसेस करने का प्रयास कर रहे हैं।
आदर्श रूप से, प्राथमिक डोमेन (स्कीमा सहित) के साथ स्कोप प्रीफ़िक्स (-sp) और केवल प्रासंगिक डोमेन पर परिणामों को फ़िल्टर करने के लिए स्कोप फ़िल्टर (-sf) प्रदान करें।```
xnLinkFinder -i target_burp.xml -o target_burp.txt -sp https://www.target.com -sf target.* -ow -spo -inc -vv
### ZAP प्रोजेक्ट से लिंक खोजें - बुनियादी
ZAP में, उदाहरण के लिए History को हाइलाइट करके, मेनू `Export` पर क्लिक करके और `Save Messages...` (या पुराने संस्करणों में `Export Messages to File...`) चुनकर आप जिन आइटम्स को खोजना चाहते हैं उन्हें चुनें। इससे आप उन सभी अनुरोधों और प्रतिक्रियाओं की एक ASCII टेक्स्ट फ़ाइल सहेज सकेंगे जिन्हें आप खोजना चाहते हैं।
फ़ाइल से सभी लिंक प्राप्त करने के लिए (बड़ी फ़ाइलों के साथ भी, आप सभी लिंक प्राप्त करने में सक्षम होंगे):```
xnLinkFinder -i target_zap.txt
नोट: xnLinkFinder यह धारणा बनाता है कि यदि -i के साथ पास की गई फ़ाइल की पहली पंक्ति प्रारूप में है ==== 99 ========== या ===99 ========== उदाहरण के लिए, तो आप एक ZAP ASCII टेक्स्ट फ़ाइल को प्रोसेस करने का प्रयास कर रहे हैं।
Caido में, History अनुभाग पर जाएं और Export विकल्प चुनें।
यदि आप Caido Pro या Enterprise संस्करण का उपयोग कर रहे हैं, तो Export current rows विकल्प चुनें और As CSV चुनें। Exports अनुभाग पर जाएं और CSV फ़ाइल डाउनलोड करें। फिर इनपुट के रूप में पास करें:``` xnLinkFinder -i 2023-03-18-010332_csv_requests.csv
अगर आप 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 प्रारूप में है, तो आप एक Caido निर्यात CSV फ़ाइल को प्रोसेस करने का प्रयास कर रहे हैं।
HAR फ़ाइल एक JSON फ़ाइल है जिसमें HTTP अनुरोधों और प्रतिक्रियाओं की एक सूची होती है। यह HTTP ट्रैफ़िक को संग्रहीत करने का एक सामान्य प्रारूप है। आप अधिकांश वेब ब्राउज़रों से, सामान्यतः Developer Tools में Network टैब से, HAR फ़ाइल निर्यात कर सकते हैं। फ़ाइल को इनपुट के रूप में पास करें:``` xnLinkFinder -i browser.har
NOTE: xnLinkFinder यह मानता है कि यदि फ़ाइल का नाम `.har` पर समाप्त होता है या फ़ाइल की पहली पंक्ति में `"log"` है और `{` से शुरू होता है, तो आप एक HAR फ़ाइल को प्रोसेस करने का प्रयास कर रहे हैं।
### Waymore परिणाम निर्देशिका से लिंक खोजें
The [waymore](https://github.com/xnl-h4ck3r/waymore) टूल का उपयोग विभिन्न तृतीय-पक्ष API से URL प्राप्त करने और विभिन्न स्रोतों से संग्रहीत प्रतिक्रियाएँ डाउनलोड करने के लिए किया जा सकता है। `xnLinKFinder` को एक waymore परिणाम निर्देशिका पास करने से संग्रहीत प्रतिक्रियाओं की सामग्री खोजी जाएगी, और `waymore.txt` से URL और `waymore_index.txt` (या पुराने संस्करणों के लिए `index.txt`) से संग्रहीत URL का अनुरोध किया जाएगा और उन प्रतिक्रियाओं से अधिक लिंक प्राप्त होंगे। यदि `-d`/`--depth` शून्य है, तो `waymore_index.txt` से URL केवल लौटाए जाएँगे, लेकिन अनुरोध नहीं किए जाएँगे।```
xnLinkFinder -i ~/Tools/waymore/results/target.com
नोट: यह एक सामान्य निर्देशिका के रूप में पास किया जाता है, लेकिन xnLinkFinder यह निर्धारित करेगा कि यह एक waymore परिणाम निर्देशिका है और तदनुसार प्रक्रिया करेगा। यह URLs फ़ाइल के डिफ़ॉल्ट नामकरण सम्मेलन पर निर्भर करता है कि फ़ाइल का नाम waymore.txt है और वह फ़ाइल संग्रहीत फ़ाइलों के समान निर्देशिका में है (जो डिफ़ॉल्ट रूप से ऐसा ही है)।
आप xnLinkFinder को अन्य उपकरणों में पाइप कर सकते हैं। कोई भी त्रुटि stderr पर भेजी जाती है और कोई भी लिंक stdout पर भेजा जाता है। आउटपुट फ़ाइल अभी भी बनाई जाती है, इसके अलावा लिंक अगले प्रोग्राम में पाइप किए जाते हैं। हालांकि, संभावित पैरामीटर अगले प्रोग्राम में पाइप नहीं किए जाते हैं, लेकिन वे अभी भी फ़ाइल में लिखे जाते हैं। उदाहरण के लिए:
xnlinkfinder -i example.com -o results.html | tee output.txt
xnLinkFinder -i redbull.com -sp https://redbull.com -sf rebbull.* -d 3 | unfurl keys | sort -u
आप इनपुट को `-i` के बजाय `stdin` के माध्यम से भी पास कर सकते हैं।```
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
यदि कोई लिंक बिना डोमेन के मिलता है, जैसे /path/to/example.js, तो -sp http://www.target.com पास करने से आउटपुट http://www.target.com/path/to/example.js होगा और यदि Depth (-d) >1 है, तो उस URL पर अधिक लिंक खोजने के लिए एक अनुरोध किया जा सकेगा।
-sp का उपयोग करते हैं लेकिन फिर भी मूल लिंक /path/to/example.js (बिना डोमेन के) को अतिरिक्त रूप से आउटपुट में वापस करना चाहते हैं, तो -spo तर्क पास करें।-sf का उपयोग करें। यह सुनिश्चित करेगा कि आउटपुट में केवल प्रासंगिक डोमेन लौटाए जाएं, और अधिक महत्वपूर्ण बात यह है कि यदि Depth (-d) >1 है, तो स्कोप से बाहर के लक्ष्यों पर लिंक या पैरामीटर खोजे नहीं जाएंगे। यह एक स्कोप डोमेन हो सकता है, या कई स्कोप डोमेन वाली एक फ़ाइल हो सकती है। नीचे उपयोग किए गए प्रारूप के उदाहरण दिए गए हैं (कोई स्कीमा या पथ शामिल नहीं होना चाहिए): ```
target.*
target-payments.com
static.target-cdn.com
THIS IS FOR FILTERING THE LINKS DOMAIN ONLY.
-ra. It's always a good idea to use https://regex101.com/ to check your Regex expression is going to do what you expect.-v option to have a better idea of what the tool is doing.-vv option which may show errors that are occurring, which can possibly be resolved, or you can raise as an issue on github.-c), headers (-H) and regex (-ra) values within single quotes, e.g. -ra '/api/v[0-9]\.[0-9]\*'-o option to give a specific output file name for Links, rather than the default of output.txt. If you plan on running a large depth of searches, start with 2 with option -v to check what is being returned. Then you can increase the Depth, and the new output will be appended to the existing file, unless you pass -ow.-op option to give a specific output file name for Potential Parameters, rather than the default of . Any output will be appended to the existing file, unless you pass .If you come across any problems at all, or have ideas for improvements, please feel free to raise an issue on Github. If there is a problem, it will be useful if you can provide the exact command you ran and a detailed description of the problem. If possible, run with -vv to reproduce the problem and let me know about any error messages that are given.
Active link finding for a domain:
...
Piped input and output:
Good luck and good hunting! If you really love the tool (or any others), or they helped you find an awesome bounty, consider BUYING ME A COFFEE! ☕ (I could use the caffeine!)
🤘 /XNL-h4ck3r
cli/-sp/-spkf'name1=value1; name2=value2;''Header1: value1; Header2: value2;'/api/v[0-9]\.[0-9]\*-sp--scope-prefixconfig.ymlcareers,forumLINK-URL [ORIGIN-URL](PREFIXED)./../-i-u desktop mobiledesktopmobileset-top-boxesgame-consolemobile-applemobile-androidmobile-windowsmobile-u--user-agenthttp://127.0.0.1:8080http://user:[email protected]:8000socks5://host:port<script><style><noscript><template>config.yml~/.config/xnLinkFinderrespParamPathWords True है तो यह तर्क तब तक प्रभावी नहीं होगा जब तक कि -nwlpm/--no-wordlist-parameters भी पास न किया जाए।-itruefalseconfig.ymlcommonTLDsjs\.maprespParamLinksFound † - प्रतिक्रियाओं में मिले लिंक से संभावित पैरामीटर प्राप्त करने हेतु: True या FalserespParamPathWords † - प्राप्त लिंक में पथ शब्दों को संभावित पैरामीटर के रूप में जोड़ने हेतु: True या FalserespParamJSON † - यदि प्रतिक्रिया का MIME प्रकार JSON है, तो JSON कुंजी मानों को संभावित पैरामीटर के रूप में जोड़ने हेतु: True या FalserespParamJSVars † - क्या var, let या const के साथ सेट किए गए जावास्क्रिप्ट चर को संभावित पैरामीटर के रूप में जोड़ा जाए: True या FalserespParamXML † - यदि प्रतिक्रिया का MIME प्रकार XML है, तो XML विशेषता मानों को संभावित पैरामीटर के रूप में जोड़ने हेतु: True या FalserespParamInputField † - यदि प्रतिक्रिया का MIME प्रकार HTML या JAVASCRIPT है (क्योंकि HTML में HTML बनाया जा सकता है), तो किसी भी INPUT (या TEXTAREA/SELECT/BUTTON) फ़ील्ड के NAME और ID विशेषताओं को संभावित पैरामीटर के रूप में जोड़ने हेतु: True या FalserespParamMetaName † - यदि प्रतिक्रिया का MIME प्रकार HTML है, तो किसी भी META टैग की NAME विशेषताओं को संभावित पैरामीटर के रूप में जोड़ने हेतु: True या FalsewordsContentTypes - स्ट्रिंग्स की एक अल्पविराम से अलग की गई सूची (जैसे text/html,text/plain) यह निर्दिष्ट करने के लिए कि कौन से प्रतिक्रिया सामग्री प्रकारों में लक्ष्य-विशिष्ट शब्दसूची में जाने वाले शब्दों की खोज की जाएगी।stopWords - स्ट्रिंग्स की एक अल्पविराम से अलग की गई सूची (जैसे then,this,that) यह निर्दिष्ट करने के लिए कि कौन से शब्द लक्ष्य-विशिष्ट शब्दसूची से बाहर रखे गए हैं। यह डिफ़ॉल्ट सूची शुरू में अंग्रेजी निर्धारकों, समन्वय संयोजकों और पूर्वसर्गों के साथ-साथ स्किकिट-लर्न, एक पायथन मशीन लर्निंग लाइब्रेरी, से स्टॉप शब्दों की सूची से बनी है।commonTLDs - सबसे सामान्य TLDs की एक अल्पविराम से अलग की गई सूची। जब तक -all/--all-tlds तर्क पारित नहीं किया जाता है, केवल उन डोमेन वाले लिंक वापस किए जाते हैं जिनके TLD इस सूची में हैं।parameters.txt-ow-d) be wary of some sites using dynamic links so will it will just keep finding new ones. If no new links are being found, then xnlLinkFinder will stop searching. Providing the Stop flags (s429, s403, sTO, sCE) should also be considered.-d value) is high, and have limited resources, the program will stop when it reaches the memory Threshold (-m) value and end gracefully with data intact before getting killed.Ctrl-C) in the middle of running, be patient and any gathered data will be saved before ending gracefully.-orig option will show the URL where the link was found. This can mean you have duplicate links in the output if the same link was found on multiple sources, but it will suffixed with the origin URL in square brackets.desktop (unless the -uc/--user-agent-custom argument is used). If you have a target that could have different links for different user agent groups, then specify -u desktop mobile for example (separate with a space). The mobile user agent option is an combination of mobile-apple, mobile-android and mobile-windows. Possible values are desktop, mobile, set-top-boxes and game-console.-i has been set to a directory, the contents of the files in the root of that directory will be searched for links. Files in sub-directories are not searched. Any files that are over the size set by -mfs (default: 500 MB) will be skipped.-replay-proxy option, sometimes requests can take longer. If you start seeing more Request Timeout errors (you'll see errors if you use -v or -vv options) then consider using -t to raise the timeout limit.-ascii-only. This can eliminate a number of false positives that can sometimes get returned from binary data.-d/--depth argument to search any extra links found from URL requests and also the -u/--user-agent if you think there could be different content found, e.g. -u desktop mobile.-owl/--output-wordlist filename to save the target specific wordlist. This list can be very useful when fuzzing a target.wordsContentTypes section are searched. The defaults are text/html,application/xml,application/json,text/plain<meta> tag content where:
Property is og:title or og:descriptionName is description,keywords,twitter:title or twitter:descriptionalt attribute of `` tags<style>, <script> and <link>-swf/--stopwords-file option. You may want to include stop words in another language, depending on the target. Stop words are used in Natural Language Processing (NLP) and many stop word lists can be found online to suit different needs.