2012-09-01 10 views
5

क्या रूट अनुमति के बिना मौजूदा वायरलेस एसएसआईडी प्राप्त करने का कोई तरीका है?लिनक्स: रूट अनुमति के बिना वायरलेस एसएसआईडी कैसे प्राप्त करें?

iwconfig मुझे ईएसएसआईडी बताता है, लेकिन केवल अगर मैं इसे रूट के रूप में चलाता हूं।

+0

यदि आप इसे नियमित उपयोगकर्ता के रूप में चलाते हैं तो क्या होता है? आप किस लिनक्स वितरण का उपयोग करते हैं? साथ ही, आप [unix.se] ऐसे प्रश्नों के लिए एक और उपयुक्त साइट पा सकते हैं। –

उत्तर

4

आप iwconfig (wireless_tools) के स्रोत कोड पर एक नज़र डालें, तो आप इस लाइन देखेंगे:

iwconfig.c:639: if(iw_get_ext(skfd, ifname, SIOCGIWESSID, &wrq) < 0) 

इस लाइन ESSID की बात (wireless.h) के लिए जिम्मेदार है। और मुझे लगता है कि केवल रूट को ऐसा करने के लिए अनुमति (बॉक्स से बाहर) है, इसलिए iw_get_ext (iwlib.h में wireless_tools पैकेज से परिभाषित किया गया है) जो ioctl पर कॉल करता है EPERM (Operation not permitted) वापस करेगा।

sudo chmod u+s /sbin/iwconfig

  • तुम भी साथ कुछ हैकिंग करने की कोशिश कर सकते हैं:

    1. setuid का उपयोग उपयोगकर्ता iwconfig आदेश का उपयोग करने की अनुमति:

      /*------------------------------------------------------------------*/ 
      /* 
      * Wrapper to extract some Wireless Parameter out of the driver 
      */ 
      static inline int 
      iw_get_ext(int     skfd,   /* Socket to the kernel */ 
            const char *   ifname,   /* Device name */ 
            int     request,  /* WE ID */ 
            struct iwreq *  pwrq)   /* Fixed part of the request */ 
      { 
          /* Set device name */ 
          strncpy(pwrq->ifr_name, ifname, IFNAMSIZ); 
          /* Do the request */ 
          return(ioctl(skfd, request, pwrq)); 
      } 
      

      आप 2 समाधान है CAP_NET_ADMIN क्षमता जो कुछ विशिष्ट क्षमताओं को किसी विशिष्ट उपयोगकर्ता को अनुमति देती है। CAP_NET_ADMIN के बारे में ये कुछ लिंक:

    http://packetlife.net/blog/2010/mar/19/sniffing-wireshark-non-root-user/

    http://peternixon.net/news/2012/01/28/configure-tcpdump-work-non-root-user-opensuse-using-file-system-capabilities/

    http://www.lids.org/lids-howto/node48.html

    http://lwn.net/Articles/430462/

    अंत में आप strace उपयोग कर सकते हैं सभी सिस्टम कॉल ट्रेस करने के लिए और ioctl कॉल है कि पुष्टि करने के लिए क्या आप वहां मौजूद हैं इस के लिए जिम्मेदार:

    रूप root ऐसा करते हैं:

    #strace /sbin/iwconfig your_interface_name > strace_iwconfig_root.log 
    

    और सामान्य उपयोगकर्ता के रूप में ही:

    $strace /sbin/iwconfig your_interface_name > strace_iwconfig_normal.log 
    

    और परिणामों की तुलना।

  • +0

    ग्रेट! chmod u + s या CAP_NET_ADMIN और CAP_NET_ADMIN दोनों के साथ कुछ भी बहुत अच्छा काम करते हैं। आपका बहुत बहुत धन्यवाद! – npcode

    +0

    @npcode: ठीक है धन्यवाद, आपका स्वागत है। – TOC

    +0

    यदि आप सिस्टम पर 'नेटवर्क-मैनेजर' स्थापित हैं तो आप इस तरह के आसपास हो सकते हैं। फिर आप (संस्करण के आधार पर) 'एनएम-टूल' या' एनएमटीसीएल 'का उपयोग कर सकते हैं। मेरी भौगोलिक स्थान पुस्तकालय में उदाहरण कोड है, देखें: https://github.com/privatwolke/geolocation –

    संबंधित मुद्दे