2009-05-29 16 views
5

मैं जानना चाहता हूं कि iwlist कमांड कैसे लिनक्स में उपलब्ध वायरलेस नेटवर्क स्कैन करता है। मैंने अपना सोर्स कोड पढ़ा और स्कैन परिणामों को प्राप्त करने के लिए स्कैन और SIOCGIWSCAN को ट्रिगर करने के लिए SIOCSIWSCAN का उपयोग करके एक ioctl कॉल था। लेकिन इन सिस्टम कॉल द्वारा बीकन फ्रेम कैप्चर और विश्लेषण कैसे किया जाता है?iwlist() कमांड वायरलेस नेटवर्क स्कैन कैसे करता है?

उत्तर

10

iwlist(8) और अन्य वायरलेस उपकरण Linux Wireless Extensions (WEXT) का समर्थन करने वाले विभिन्न वायरलेस डिवाइस ड्राइवरों के लिए एक आम फ्रंट एंड प्रदान करते हैं। प्रत्येक ड्राइवर WEXT के साथ हैंडलर पंजीकृत करेगा जो इस इंटरफेस द्वारा परिभाषित डिवाइस विशिष्ट संचालन को लागू करेगा। स्कैनिंग के लिए, दो हैंडलर स्कैन ट्रिगर (कमांड SIOCSIWSCAN) हैं और स्कैन परिणाम प्राप्त करते हैं (कमांड SIOCGIWSCAN)। डिवाइस स्कैन पूरा करने के बाद, यह netlink इंटरफेस के माध्यम से एक SIOCGIWSCAN ईवेंट WEXT भेजता है। इस सॉकेट को सुनकर एक एप्लिकेशन डिवाइस से स्कैन परिणाम प्राप्त करने के लिए SIOCGIWSCAN आदेश जारी कर सकता है। ध्यान दें कि यह डिवाइस स्कैन को लागू करने के लिए स्वतंत्र है, जिसे कभी भी चुनता है। उदाहरण के लिए, यह बीकन के लिए निष्क्रिय रूप से सुन सकता है या जांच अनुरोध भेजकर सक्रिय रूप से स्कैन कर सकता है।

उपरोक्त उपकरण को आदेश भेजने के यांत्रिकी पर जानबूझकर अस्पष्ट है क्योंकि पारंपरिक तरीका (ioctl) और नया तरीका (नेटलिंक - cfg80211) है। लेकिन एक ठोस उदाहरण लेने के लिए, पारंपरिक तरीके पर विचार करें। Iioctl कॉल WEXT मॉड्यूल में कार्यान्वित किए जाते हैं लेकिन यह आदेश जो इस आदेश को संभालता है उसे डिवाइस ड्राइवर में लागू किया जाता है। जब कोई उपयोगकर्ता स्पेस एप्लिकेशन ioctl बनाता है, तो WEXT डिवाइस ड्राइवर के हैंडलर को देखता है और इसे चलाता है।

+0

समझ गया .... ioctl कॉल ड्राइवर के मॉड्यूल में लागू किए गए हैं, इसलिए SIOCGIWSCAN का उपयोग करके ioctl के लिए वास्तविक फ़ंक्शन कॉल ड्राइवर के मॉड्यूल में परिभाषित फ़ंक्शन का आह्वान करेगा। –