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.
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.
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.h
wireless_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:
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://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.
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
@npcode: tamam, rica ederim. – TOC
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 –
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. –