
🖖 तेज़, आधुनिक, उपयोग में आसान नेटवर्क स्कैनर
sx कमांड-लाइन नेटवर्क स्कैनर है जो UNIX दर्शन का पालन करने के लिए डिज़ाइन किया गया है।
इस परियोजना का लक्ष्य स्वच्छ और सरल कोड के साथ सबसे तेज़ नेटवर्क स्कैनर बनाना है।
सबसे सरल तरीका है GitHub Releases से डाउनलोड करना और निष्पादन योग्य फ़ाइल को अपने PATH में रखना।
आवश्यकताएँ:
macOS पर, पहले Xcode कमांड लाइन टूल्स इंस्टॉल करें ताकि CGO सिस्टम libpcap से लिंक कर सके:
xcode-select --install
स्रोत ट्री के रूट से, चलाएँ:
go build
यहाँ कुछ त्वरित उदाहरण दिए गए हैं जो दिखाते हैं कि आप sx के साथ नेटवर्क को कैसे स्कैन कर सकते हैं।
अपने स्थानीय नेटवर्क को स्कैन करें और कनेक्टेड उपकरणों का IP पता, MAC पता और संबंधित हार्डवेयर विक्रेता प्रदर्शित करें:
sx arp 192.168.0.1/24
नमूना आउटपुट:
192.168.0.1 b0:be:76:40:05:8d TP-LINK TECHNOLOGIES CO.,LTD.
192.168.0.111 80:c5:f2:0b:02:e3 AzureWave Technology Inc.
192.168.0.171 88:53:95:2d:3c:af Apple, Inc.
JSON आउटपुट के साथ:
sx arp --json 192.168.0.1/24
नमूना आउटपुट:
{"ip":"192.168.0.1","mac":"b0:be:76:40:05:8d","vendor":"TP-LINK TECHNOLOGIES CO.,LTD."}
{"ip":"192.168.0.111","mac":"80:c5:f2:0b:02:e3","vendor":"AzureWave Technology Inc."}
{"ip":"192.168.0.171","mac":"88:53:95:2d:3c:af","vendor":"Apple, Inc."}
बाहर निकलने से पहले विलंबित रिप्लाई पैकेट प्राप्त करने के लिए 5 सेकंड प्रतीक्षा करें, डिफ़ॉल्ट रूप से sx 300 मिलीसेकंड प्रतीक्षा करता है:
sx arp --exit-delay 5s 192.168.0.1/24
लाइव स्कैन मोड जो हर 10 सेकंड में नेटवर्क को फिर से स्कैन करता है:
sx arp 192.168.0.1/24 --live 10s
nmap और अन्य स्कैनरों के विपरीत जो वास्तविक स्कैन से पहले IP पतों को MAC पतों में हल करने के लिए ARP अनुरोधों को अंतर्निहित रूप से करते हैं, sx स्पष्ट रूप से ARP cache अवधारणा का उपयोग करता है। ARP cache फ़ाइल एक सरल टेक्स्ट फ़ाइल है जिसमें प्रत्येक पंक्ति में JSON स्ट्रिंग होती है (JSONL फ़ाइल), जिसमें वही JSON फ़ील्ड हैं जो ऊपर ARP स्कैन JSON आउटपुट में वर्णित हैं। TCP और UDP जैसे उच्च-स्तरीय प्रोटोकॉल के स्कैन stdin से ARP cache फ़ाइल पढ़ते हैं और फिर वास्तविक स्कैन शुरू करते हैं।
यह न केवल प्रोग्राम के डिज़ाइन को सरल बनाता है, बल्कि स्कैनिंग प्रक्रिया को भी गति देता है, क्योंकि हर बार ARP स्कैन करना आवश्यक नहीं है।
मान लें कि वास्तविक ARP cache arp.cache फ़ाइल में है। हम इसे मैन्युअल रूप से बना सकते हैं या नीचे दिखाए अनुसार ARP स्कैन का उपयोग कर सकते हैं:
sx arp 192.168.0.1/24 --json | tee arp.cache
एक बार ARP cache फ़ाइल हो जाने पर, हम उच्च-स्तरीय प्रोटोकॉल जैसे TCP SYN स्कैन चला सकते हैं:
cat arp.cache | sx tcp -p 1-65535 192.168.0.171
नमूना आउटपुट:
192.168.0.171 22
192.168.0.171 443
इस स्थिति में हम पाते हैं कि पोर्ट 22 और 443 खुले हैं।
यदि बड़े स्कैन के दौरान send: No buffer space available दिखाई देता है, तो इसका मतलब आमतौर पर भेजने वाला कर्नेल/रॉ-सॉकेट बफ़र्स से आगे निकल रहा है। पहला समाधान है --rate जोड़ना और भेजने के बर्स्ट को कम करना, उदाहरण के लिए -r 100000/s या आवश्यकतानुसार कम। कुछ सिस्टम पर, OS सॉकेट/बफ़र सीमाओं को ट्यून करने से भी मदद मिल सकती है, लेकिन रेट लिमिटिंग प्राथमिक समाधान है।
JSON आउटपुट के साथ स्कैन:
cat arp.cache | sx tcp --json -p 1-65535 192.168.0.171
नमूना आउटपुट:
{"scan":"tcpsyn","ip":"192.168.0.171","port":22}
{"scan":"tcpsyn","ip":"192.168.0.171","port":443}
एकाधिक पोर्ट रेंज स्कैन करें:
cat arp.cache | sx tcp -p 1-23,25-443 192.168.0.171
या व्यक्तिगत पोर्ट:
cat arp.cache | sx tcp -p 22,443 192.168.0.171
या स्कैन करने के लिए पोर्ट या पोर्ट रेंज निर्दिष्ट करने के लिए --ports-file विकल्प का उपयोग करें, प्रति पंक्ति एक।
फ़ाइल से ip/port जोड़ियों को JSON आउटपुट के साथ स्कैन करें:
cat arp.cache | sx tcp --json -f ip_ports_file.jsonl
इनपुट फ़ाइल की प्रत्येक पंक्ति एक json स्ट्रिंग है, जिसमें ip और port फ़ील्ड होने चाहिए।
नमूना इनपुट फ़ाइल:
{"ip":"10.0.1.1","port":1080}
{"ip":"10.0.2.2","port":1081}
-a या --arp-cache विकल्पों का उपयोग करके ARP cache फ़ाइल निर्दिष्ट करना संभव है:
sx tcp -a arp.cache -p 22,443 192.168.0.171
या stdin रीडायरेक्ट:
sx tcp -p 22,443 192.168.0.171 < arp.cache
आप tcp के बजाय tcp syn उप-कमांड का भी उपयोग कर सकते हैं:
cat arp.cache | sx tcp syn -p 22 192.168.0.171
tcp उप-कमांड केवल tcp syn उप-कमांड का संक्षिप्त रूप है जब तक कि --flags विकल्प पारित नहीं किया जाता है, नीचे देखें।
sx वर्चुअल नेटवर्क इंटरफेस (wireguard, openvpn, आदि) के साथ स्कैनिंग का समर्थन करता है और इस मामले में ARP cache का उपयोग करना आवश्यक नहीं है, क्योंकि इन इंटरफेस को इनपुट के रूप में Ethernet फ्रेम के बजाय कच्चे IP पैकेट की आवश्यकता होती है। उदाहरण के लिए, vpn नेटवर्क पर एक IP पते को स्कैन करना:
sx tcp 10.1.27.1 -p 80 --json
अधिकांश नेटवर्क स्कैनर स्कैन के परिणामों की व्याख्या करने का प्रयास करते हैं। उदाहरण के लिए वे कहते हैं "यह पोर्ट बंद है" इसके बजाय "मुझे एक RST प्राप्त हुआ"। कभी-कभी वे सही होते हैं। कभी-कभी नहीं। यह शुरुआती लोगों के लिए आसान है, लेकिन जब आप जानते हैं कि आप क्या कर रहे हैं, तो आप विशेष रूप से उन्नत स्कैन तकनीकों के लिए कार्यक्रम की व्याख्या से वास्तव में क्या हुआ, यह निकालने की कोशिश करते रहते हैं।
sx उन समस्याओं को दूर करने का प्रयास करता है। यह TCP FIN, NULL, Xmas और कस्टम TCP स्कैन के लिए सभी रिप्लाई पैकेटों के बारे में जानकारी लौटाता है। जानकारी में IP पता, TCP पोर्ट और रिप्लाई पैकेट में सेट सभी TCP फ़्लैग शामिल हैं।
TCP FIN स्कैन और इसके अन्य रूपांतर (NULL और Xmas) RFC793 धारा 3.9 का शोषण करते हैं: