2012-09-01 9 views
5

rootの許可なしに現在のワイヤレスSSIDを取得する方法はありますか?linux:root権限を持たない無線ssidを取得するには?

iwconfigは私にESSIDを通知しますが、ルートとして実行する場合に限ります。

+0

通常のユーザーとして実行するとどうなりますか?どのLinuxディストリビューションを使用していますか?また、あなたは[unix.se]がそのような質問に対してより適切なサイトを見つけるかもしれません。 –

答えて

4

あなたはiwconfigwireless_tools)のソースコードを見てみる場合は、この行が表示されます:

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

この行は、ESSID(wireless.h)の取得のために責任があります。そして、私はrootだけがこれを行うための権限を持っていると思うので、(iwlib.hからwireless_toolsパッケージまで)で(Operation not permitted)を呼び出します。

sudo chmod u+s /sbin/iwconfig

  • あなたはまた、いくつかにハッキングをしようとすることができます:

    1. は、ユーザーがiwconfigコマンドを使用できるようにsetuidを使用します。

      /*------------------------------------------------------------------*/ 
      /* 
      * 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呼び出しがあることを確認しますそここのためsponsible:

    #strace /sbin/iwconfig your_interface_name > strace_iwconfig_root.log 
    

    そして通常のユーザーと同じ:

    $strace /sbin/iwconfig your_interface_name > strace_iwconfig_normal.log 
    

    、結果を比較

    rootとしては、これを行います。

  • +0

    素晴らしい! chmod u + sやCAP_NET_ADMINとCAP_NET_ADMINで何かするのはとてもうまくいきます。どうもありがとうございました! – npcode

    +0

    @npcode:ありがとう、よろしいですか? – TOC

    +0

    'network-manager'がシステムにインストールされていれば、これを回避することができます。次に、(バージョンに応じて) 'nm-tool'または' nmctl'を使用することができます。私のジオロケーションライブラリにはサンプルコードがあります。https://github.com/privatwolke/geolocation –

    関連する問題