2012-09-01 9 views
5

Geçerli kablosuz SSID'yi root izni olmadan almanın bir yolu var mı?linux: Kök izni olmadan kablosuz ssid nasıl alınır?

iwconfig, ESSID'yi anlatıyor, ancak yalnızca root olarak çalıştırıyorsam.

+0

Normal bir kullanıcı olarak çalıştırırsanız ne olur? Hangi Linux dağıtımını kullanıyorsunuz? Ayrıca, [unix.se] bu tür sorular için daha uygun bir site bulabilirsiniz. –

cevap

4

Eğer iwconfig (wireless_tools) kaynak koduna bakmak, bu çizgiyi görürsünüz:

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

Bu hat ESSID ait get (wireless.h) sorumludur. Ve sadece root'un bunu yapmak için izinleri olduğunu düşünüyorum (bu nedenle iw_get_ext (iwlib.hwireless_tools paketinden tanımlanan) ioctl numaralı çağrı EPERM (Operation not permitted) döndürecektir.

sudo chmod u+s /sbin/iwconfig

  • Ayrıca bazı ile hack yapmaya deneyebilirsiniz:

    1. kullanıcı iwconfig komutunu kullanmasına izin vermek setuid kullanın:

      /*------------------------------------------------------------------*/ 
      /* 
      * 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)); 
      } 
      

      Sen 2 çözümler var Belirli bir kullanıcıya belirli bazı yeteneklere izin veren CAP_NET_ADMIN yeteneği. CAP_NET_ADMIN hakkında İşte bazı bağlantılar:

    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/

    Son olarak tüm sistem İz strace kullanabilir ve ioctl çağrı olduğunu onaylamak için Orada Bunun için sponsible:

    $strace /sbin/iwconfig your_interface_name > strace_iwconfig_normal.log 
    

    Ve sonuçları karşılaştırmak:

    #strace /sbin/iwconfig your_interface_name > strace_iwconfig_root.log 
    

    Ve normal kullanıcı aynı:

    root olarak yapıyoruz.

  • +0

    Harika! chmod u + s veya CAP_NET_ADMIN ve CAP_NET_ADMIN ile bir şeyler yapmak çok iyi çalışıyor. Çok teşekkür ederim! – npcode

    +0

    @npcode: tamam, rica ederim. – TOC

    +0

    Eğer sistemde 'network-manager' kurulu ise bunu başarabilirsiniz. Sonra (versiyona bağlı olarak) 'nm-tool' veya 'nmctl' kullanabilirsiniz. Coğrafi konum kitaplığımın örnek kodu var: https://github.com/privatwolke/geolocation –

    İlgili konular