
Python wrapper जो masscan और nmap के चारों ओर बनाया गया है, जो आंतरिक या बाहरी नेटवर्क पर बड़े पैमाने पर पोर्ट डिस्कवरी, होस्ट डिस्कवरी, बैनर ग्रैबिंग, और NSE-आधारित भेद्यता स्कैनिंग के लिए है।
यह स्क्रिप्ट masscan और nmap के लिए एक रैपर है। nmap होस्ट डिस्कवरी और (छोटे स्कैन के लिए) पोर्ट डिस्कवरी, सेवा बैनर ग्रैबिंग, और NSE स्क्रिप्ट्स को संभालता है। Masscan का उपयोग बड़े पैमाने की पोर्ट डिस्कवरी के लिए किया जाता है जहाँ कच्ची गति मायने रखती है। दोनों को अपने पसंदीदा पैकेज मैनेजर से या सोर्स से इंस्टॉल करें।
Python 3.8+ आवश्यक है (pyproject.toml में requires-python; CI न्यूनतम 3.8 पर है)।
SpooNMAP को सीधे चेकआउट से चलाया जा सकता है — किसी इंस्टॉलेशन चरण की आवश्यकता नहीं, नीचे "उपयोग" देखें — या uv के साथ एक स्टैंडअलोन कमांड के रूप में इंस्टॉल किया जा सकता है:
uv tool install git+https://github.com/trustedsec/spoonmap
यह आपके PATH पर एक spoonmap निष्पादन योग्य फ़ाइल रखता है, इसलिए आप रेपो को क्लोन करके ./spoonmap.py चलाने के बजाय किसी भी डायरेक्टरी से इसे spoonmap के रूप में आमंत्रित कर सकते हैं। कोई PyPI पैकेज नहीं है — इस प्रोजेक्ट ने कभी भी pypi.org पर प्रकाशित नहीं किया है, और ऊपर दिया गया कमांड सीधे git रिपॉजिटरी से इंस्टॉल करता है। ऊपर दिए गए पूर्ण git+https://... रूप का उपयोग करें, न कि केवल uv tool install spoonmap; PyPI पर वह नाम अभी या भविष्य में जो भी रिज़ॉल्व हो, वह यह प्रोजेक्ट नहीं है।
नवीनतम कमिट पर अपडेट करने के लिए:
uv tool upgrade spoonmap
इस तरह से इंस्टॉल करने पर SpooNMAP एक स्व-निहित स्कैनर नहीं बन जाता:
masscan और nmap अभी भी अलग सिस्टम टूल्स हैं जिन्हें स्वतंत्र रूप से
इंस्टॉल करना होगा (ऊपर "Dependencies" देखें), ठीक वैसे ही जैसे किसी
चेकआउट से चलाते समय — uv tool install केवल SpooNMAP के अपने Python कोड और उसके
बंडल किए गए NSE स्क्रिप्ट्स को पैकेज करता है, उन बाहरी बाइनरीज़ को नहीं जिन्हें यह शेल आउट करता है।
इस तरह से इंस्टॉल करने से पहले एक बात समझना ज़रूरी है: इंस्टॉल किए गए
spoonmap का Python मॉड्यूल वहीं रहता है जहाँ uv ने अपना प्रबंधित टूल
एनवायरनमेंट रखा है — किसी ऐसी डायरेक्टरी में नहीं जहाँ आप कभी कॉन्फ़िग फ़ाइल या
स्कैन आउटपुट के लिए देखने की सोचेंगे। यही वह परिदृश्य है जिसके बारे में नीचे
"Where Files Live" अनुभाग है — पढ़ें कि क्या आपकी वर्तमान डायरेक्टरी के सापेक्ष
रिज़ॉल्व होता है और क्यों; uv tool install के माध्यम से इंस्टॉल करना नियम को
नहीं बदलता, यह केवल नियम को मायने रखने वाला बनाता है, क्योंकि कॉन्फ़िग या
आउटपुट पथ के आदतन फ़ॉलबैक के लिए अब कोई चेकआउट डायरेक्टरी नहीं बचती।
स्क्रिप्ट को केवल निष्पादित करने पर आपसे सभी आवश्यक विकल्पों के लिए संकेत दिया जाएगा।
config.json, लक्ष्य/बहिष्करण फ़ाइलें, और स्कैन आउटपुट सभी उस डायरेक्टरी के
सापेक्ष रिज़ॉल्व होते हैं जहाँ से आप कमांड चलाते हैं — यदि आपका आउटपुट वहाँ नहीं
है जहाँ आप उम्मीद करते हैं तो नीचे "Where Files Live" देखें, विशेष रूप से यदि आप
SpooNMAP को उसकी अपनी डायरेक्टरी के बाहर से पथ द्वारा आमंत्रित करने के आदी हैं।
यदि आप uv का उपयोग करते हैं, तो आप अलग वर्चुअल एनवायरनमेंट के बिना चला सकते हैं:
uv run spoonmap.py
यदि स्क्रिप्ट निष्पादन योग्य है तो सीधे आमंत्रित करें:
# ./spoonmap.py
________ _____ _______ _________________
__ ___/______________________ | / /__ |/ /__ |__ __ \
_____ \___ __ \ __ \ __ \_ |/ /__ /|_/ /__ /| |_ /_/ /
____/ /__ /_/ / /_/ / /_/ / /| / _ / / / _ ___ | ____/
/____/ _ .___/\____/\____//_/ |_/ /_/ /_/ /_/ |_/_/
/_/
Service Categories (comma-separated numbers, default: All)
(1) Web [80, 443, 7001, 7002, 8000, 8080, 8081, 8443, 8888, 9090, 10443]
(2) Database [1433, U:1434, 1521, 3306, 5432, 6379, 9200, 27017]
(3) Remote Management [22, 23, 3389, 5900, 5901, 6129, 1723, 5985, 5986]
(4) Email [25, 110, 143, 465, 587, 993, 995]
(5) LDAP [389, 636]
(6) Network Infrastructure [53, 179, U:500, U:161, U:623, U:631, U:1194, 1194]
(7) File Transfer [21, 111]
(8) SMB [445, 135, 139, U:137]
(9) Specialized [1090, 3300, 4786, 6970, 2375, 4243, 9100, 8530, 8531]
(10) Containers & Debuggers [2377, 10250, 8001, 9229, 2345, 5005, 61616, 8009, 6000]
(11) Local LLM [11434, 1234, 7860, 5000, 5001, 1337, 3000, 8000, 8080]
(12) Full Port Scan [1-65535, TCP only — no UDP]
(c) Custom Port Scan [enter your own comma-separated ports]
(The Full Port Scan number increments automatically with the number of categories.)
**Full Port Scan is TCP only.** It sweeps TCP 1-65535 and runs no UDP discovery at
all, so every `U:` port listed in the categories above — SNMP (U:161), IKE (U:500),
IPMI (U:623), IPP (U:631), OpenVPN (U:1194), NetBIOS (U:137), SQL Browser (U:1434) —
is skipped, along with the NSE scripts and findings that depend on them. It is
*wider* than All on TCP and *narrower* on UDP. For both, run All and Full as two
passes, or use the Custom option with the UDP ports appended
(e.g. `1-65535,U:161,U:500,U:623`).
Which categories would you like to scan (e.g. 1,3 — default: All)?
Would you like to enumerate service banners for any identified services (default: Yes)?
Would you like to run NSE security scripts on identified services (default: No)?
Target Scan
(1) External
(2) Internal
Is this an internal or external scan (default: External)?
How fast would you like to scan (default: 20000 packets/second)?
Please enter the full path for the file containing target hosts (default: /opt/spoonmap/ranges.txt):
Would you like to exclude any hosts? (default: No)
Run host discovery before port scanning (default: Yes)?
Tune advanced settings (nmap threads, masscan batch size, nmap work-unit threshold)? (default: No)
आप सभी प्रॉम्प्ट्स को छोड़ने के लिए एक config.json फ़ाइल भी बना सकते हैं (config.json.sample के आधार पर):
{
"scan_categories": ["Web", "Database", "Remote Management"],
"banner_scan": "True",
"script_scan": "False",
"host_discovery": "True",
"target_scan": "Internal",
"max_rate": "2000",
"target_file": "ranges.txt",
"output_path": "./",
"exclusions_file": "exclusions.txt",
"nmap_threads": 5,
"masscan_batch_size": 5,
"nmap_threshold": 5000000
}
सभी श्रेणियों को स्कैन करने के लिए, "scan_categories": "All" सेट करें।
सभी 65535 TCP पोर्ट स्कैन करने के लिए, "scan_categories": "Full" सेट करें — ध्यान दें कि यह केवल TCP है और कोई UDP डिस्कवरी नहीं करता है।
पूरी तरह से कस्टम पोर्ट सूची के लिए, scan_categories छोड़ दें और इसके बजाय "dest_ports": ["80","443","U:53"] का उपयोग करें।
UDP पोर्ट U: उपसर्ग के साथ निर्दिष्ट किए जाते हैं (जैसे "U:53")।