linux:如何在没有root权限的情况下获得无线ssid?

linux:如何在没有root权限的情况下获得无线ssid?,第1张

概述有没有办法在没有root权限的情况下获得当前的无线SSID? iwconfig告诉我ESSID,但前提是我以root身份运行它. 如果你看一下iwconfig( wireless_tools)的源代码,你会看到这一行: iwconfig.c:639: if(iw_get_ext(skfd, ifname, SIOCGIWESSID, &wrq) < 0) 该行负责获取ESSID(wireless. 有没有办法在没有root权限的情况下获得当前的无线SSID?

iwconfig告诉我ESSID,但前提是我以root身份运行它.

解决方法 如果你看一下iwconfig( wireless_tools)的源代码,你会看到这一行:

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

该行负责获取ESSID(wireless.h).我认为只有root才有权限(开箱即用)来执行此 *** 作,因此调用ioctl的函数iw_get_ext(在wireless_tools包的iwlib.h中定义)将返回EPERM(不允许 *** 作).

/*------------------------------------------------------------------*//* * Wrapper to extract some Wireless Parameter out of the driver */static inline intiw_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,IFNAMSIZ);  /* Do the request */  return(ioctl(skfd,request,pwrq));}

你有2个解决方案:

>使用setuID允许用户使用iwconfig命令:

sudo chmod u s / sbin / iwconfig
>您还可以尝试使用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

并比较结果.

总结

以上是内存溢出为你收集整理的linux:如何在没有root权限的情况下获得无线ssid?全部内容,希望文章能够帮你解决linux:如何在没有root权限的情况下获得无线ssid?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1025683.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存