
Knock उपडोमेन स्कैन
✅ तेज़ और एसिंक्रोनस • 🔐 रिकॉन + ब्रूट • 🔧 विस्तार में आसान
KnockPy एक मॉड्यूलर Python 3 टूल है जो निष्क्रिय टोही (passive reconnaissance) और ब्रूटफोर्स के माध्यम से उपडोमेन की गणना करता है, अब async/await सपोर्ट, बेहतर प्रदर्शन और आधुनिक HTTP/TLS हैंडलिंग के साथ।
httpx और DNS रिज़ॉल्यूशन के साथ--verbose (DNS/TCP/TLS/रीडायरेक्ट चेन/अनुरोध त्रुटियाँ + सुरक्षा जाँच)show/delete/export/search) के साथ SQLite रिपोर्टgit clone https://github.com/guelfoweb/knockpy.git
cd knockpy
# अनुशंसित: वर्चुअल एनवायरनमेंट में स्थापित करें
python3 -m venv .venv
. .venv/bin/activate
python3 -m pip install -U pip
pip install .
# वैकल्पिक: वर्तमान उपयोगकर्ता के लिए स्थापित करें (venv के बिना)
# python3 -m pip install --user .
⚠️ अनुशंसित Python संस्करण: 3.9+
कोडबेस जिम्मेदारी के अनुसार संगठित है, जिसमें पिछड़े संगतता के लिए स्थिर facades हैं:
knockpy/
cli.py # CLI प्रवेश बिंदु (facade/ऑर्केस्ट्रेशन)
cli_parts/
status.py # रनटाइम/स्थिति पैनल रेंडरिंग
setup.py # इंटरैक्टिव सेटअप और स्थायी रनटाइम डिफ़ॉल्ट
report.py # इंटरैक्टिव रिपोर्ट मोड
scan_flow.py # बहिष्करण नियम, टोही-परीक्षण, वाइल्डकार्ड सहायक
core.py # सार्वजनिक कोर facade (संगतता)
engine/
runtime.py # स्कैनिंग इंजन कार्यान्वयन
storage.py # सार्वजनिक स्टोरेज facade (संगतता)
storage_parts/
db.py # SQLite स्थिरता/सेटिंग्स
export.py # रिपोर्ट निर्यात ऑर्केस्ट्रेशन
html_report.py # HTML रिपोर्ट रेंडरिंग
output.py # टर्मिनल आउटपुट रेंडरिंग
server_versions.py # वेब-सर्वर संस्करण कैटलॉग
knockpy.py # संगतता मॉड्यूल निर्यात
संगतता नोट:
import knockpy या from knockpy import KNOCKPY।engine/, cli_parts/, और storage_parts/ में विभाजित हैं।केवल तब जब स्थिर संस्करण GitHub पर जारी हो
pip install knock-subdomains
knockpy -d domain.com [options]
--threads और --timeoutये दो विकल्प बड़े स्कैन के रनटाइम पर सबसे अधिक प्रभाव डालते हैं।
--threads समवर्तीता को नियंत्रित करता है (कितने लक्ष्य समानांतर में संसाधित होते हैं)--timeout नियंत्रित करता है कि प्रत्येक नेटवर्क चरण हार मानने से पहले कितनी देर प्रतीक्षा करता हैव्यापार-बंद:
threads = तेज़ स्कैन, लेकिन CPU/नेटवर्क/DNS पर अधिक भार और दूरस्थ दर-सीमाओं का अधिक जोखिमtimeout = तेज़ स्कैन, लेकिन धीमे लेकिन वैध लक्ष्यों को खोने का अधिक जोखिम (गलत नकारात्मक)अनुशंसित प्रोफ़ाइल:
--threads 50 --timeout 5--threads 150 --timeout 4--threads 250 --timeout 3 से शुरू करेंयदि आपको बहुत बड़ी सूचियों पर गति और पूर्णता दोनों की आवश्यकता है, तो 2-पास रणनीति का उपयोग करें:
--threads 250 --timeout 3--threads 80 --timeout 5 (या अधिक)नोट:
--setup) बिल्ट-इन डिफ़ॉल्ट को ओवरराइड करते हैंthreads=250, timeout=3knockpy -d example.com --recon --bruteforce
knockpy -d example.com --recon --test
knockpy --update-versions
knockpy --check-update
पहली बार चलने पर, KnockPy बनाता है:
~/.knockpy/recon_services.json
आप services ऐरे को संपादित करके स्रोत जोड़/अक्षम कर सकते हैं।
आप कोड बदले बिना कस्टम फ़ाइल पथ पर भी इंगित कर सकते हैं:
export KNOCK_RECON_SERVICES=/path/to/recon_services.json
प्रत्येक सेवा समर्थन करती है:
nameenabled (true/false)parserurl_template ({domain}, {virustotal_key}, {shodan_key} का समर्थन करता है)requires_api (virustotal या shodan, वैकल्पिक)समर्थित पार्सर:
csv_first_columnrapiddns_html_tdjson_listvirustotal_subdomainsshodan_subdomainsecho "example.com" | knockpy -d
export API_KEY_VIRUSTOTAL=your-virustotal-api-key
export API_KEY_SHODAN=your-shodan-api-key
आप .env फ़ाइल का उपयोग कर सकते हैं:
API_KEY_VIRUSTOTAL=your-virustotal-api-key
API_KEY_SHODAN=your-shodan-api-key
knockpy -d example.com --recon --bruteforce
knockpy --report list
knockpy --report latest
knockpy --report
इंटरैक्टिव रिपोर्ट मेनू:
1 show2 delete3 export4 search0 reset db (स्पष्ट पुष्टि मांगता है)रिपोर्ट मोड से बाहर निकलें:
Enter दबाएंCTRL+C दबाएंknockpy -d forum.example.com --verbose
knockpy -d example.com --wildcard
KnockPy का उपयोग Python मॉड्यूल के रूप में किया जा सकता है:
import knockpy
result = knockpy.KNOCKPY("example.com", timeout=5.0, threads=20)
print(result["domain"], result["ip"])
या:
from knockpy import KNOCKPY
domain = 'example.com'
results = KNOCKPY(
domain,
dns="8.8.8.8",
useragent="Mozilla/5.0",
timeout=5,
threads=10,
recon=True,
bruteforce=True,
wordlist=None,
silent=False
)
for entry in results:
print(entry['domain'], entry['ip'], entry['http'], entry['cert'])
एक डिफ़ॉल्ट वर्डलिस्ट knockpy/wordlist/wordlist.txt में शामिल है।
आप --wordlist के साथ अपनी स्वयं की आपूर्ति कर सकते हैं।
python3 -m pytest
# (वैकल्पिक) उदाहरण स्क्रिप्ट का धुआँ-चलान
python3 examples/poc.py
GPLv3 लाइसेंस के अंतर्गत लाइसेंस प्राप्त।
Gianni Amato (@guelfoweb)
| फ़्लैग | विवरण |
|---|
-d, --domain | लक्ष्य डोमेन (या stdin यदि बिना मान के उपयोग किया जाए) |
-f, --file | डोमेन की सूची वाली फ़ाइल |
--recon | निष्क्रिय टोही सक्षम करें |
--bruteforce, --brute | वर्डलिस्ट का उपयोग करके ब्रूटफोर्स सक्षम करें |
--exclude TYPE VALUE | मिलान को बहिष्कृत करें (status, length/lenght, body) |
--verbose | केवल एकल-डोमेन स्कैन के लिए गहन डायग्नोस्टिक्स |
--wildcard | वाइल्डकार्ड DNS का परीक्षण करें और बाहर निकलें |
--test | --recon के साथ, प्रत्येक टोही स्रोत का परीक्षण करें (विफल/खाली/डेटा) |
--setup | इंटरैक्टिव सेटअप (डेटाबेस में रनटाइम डिफ़ॉल्ट + API कुंजियाँ) |
--update-versions | स्थानीय नवीनतम वेब-सर्वर संस्करण कैटलॉग अपडेट करें |
--report [ID|latest|list] | रिपोर्ट मोड (इंटरैक्टिव show/delete/export/search/reset db, निर्यात HTML) |
--check-update | ऑनलाइन जाँचें कि क्या PyPI पर कोई नया Knockpy रिलीज़ उपलब्ध है |
--wordlist | वर्डलिस्ट के लिए रनटाइम ओवरराइड |
--dns | DNS रिज़ॉल्वर के लिए रनटाइम ओवरराइड |
--useragent | HTTP उपयोगकर्ता-एजेंट के लिए रनटाइम ओवरराइड |
--timeout | टाइमआउट (सेकंड) के लिए रनटाइम ओवरराइड |
--threads | एक साथ काम करने वाले वर्कर्स के लिए रनटाइम ओवरराइड |
--silent | प्रगति पट्टी छुपाएं |
--json | केवल JSON आउटपुट (--silent को बाध्य करता है) |
--status | रनटाइम स्थिति प्रिंट करें और जारी रखें |
-h, --help | सहायता संदेश दिखाएं |