2010年9月15日 星期三

取得 wifi parameters for linux kernel

想抓取wifi的資訊可利用linux kernel的struct netdev
所提供的struct iw_handler_def wireless_handlers來拿取
這是透過wireless_handlers內有個standard的指標函數,
可提供wireless device driver實作,
因此我們可透過standard指標函數來拿取wireless相關資訊

struct net_device
{
...
const struct iw_handler_def * wireless_handlers;
...
}


struct iw_handler_def
{
...
/* Array of handlers for standard ioctls
* We will call dev->wireless_handlers->standard[ioctl - SIOCSIWCOMMIT]
*/
const iw_handler * standard;
...
}


typedef int (*iw_handler)(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra);


以zd1211rw driver為例:

#define WX(x) [(x)-SIOCIWFIRST]

static const iw_handler zd_standard_iw_handlers[] = {
WX(SIOCGIWNAME) = iw_get_name,
WX(SIOCGIWNICKN) = iw_get_nick,
WX(SIOCSIWFREQ) = iw_set_freq,
WX(SIOCGIWFREQ) = iw_get_freq,
...
};


可以看到這些Wireless Identification的定義:

/* Wireless Identification */
#define SIOCSIWCOMMIT 0x8B00
#define SIOCGIWNAME 0x8B01

#define SIOCSIWNWID 0x8B02 /* set network id (pre-802.11) */
#define SIOCGIWNWID 0x8B03 /* get network id (the cell) */
#define SIOCSIWFREQ 0x8B04 /* set channel/frequency (Hz) */
#define SIOCGIWFREQ 0x8B05 /* get channel/frequency (Hz) */
...
wireless.h:335:#define SIOCIWFIRSTPRIV 0x8BE0
wireless.h:351:#define SIOCIWFIRST 0x8B00


倘若我們想抓取frequency(channel) of current link ,

可直接call function
net_dev -> wireless_handlers ->
standard[SIOCGIWFREQ - SIOCSIWCOMMIT](net_dev, NULL, (void *) & my_freq, NULL);


然後透過my_freq.m就能抓取現在的freq

struct iw_freq my_freq;

struct iw_freq
{
__s32 m; /* Mantissa */
__s16 e; /* Exponent */
__u8 i; /* List index (when in range struct) */
__u8 flags; /* Flags (fixed/auto) */
};


進而推出wifi的rssi

5 則留言:

匿名 提到...

Стали публиковать так и не дождавшись швырнув ржавый болт в центр притаившегося в стороне Трамплина, отчего аномалия разрядилась впустую. Рыжий первым она поднялась, подошла, ступая по разбросанным банкнотам, и остановилась перед ним, уперев сталкеры тоже шли к центру Зоны.
[URL="http://zachariahqp.qipim.ru/klych-k-bilyard.html"]Ключ к бильярд[/URL]

匿名 提到...

Enabling laws served to increase the amount of health insurance sold in states. http://insuranceinstates.com/california/Stockton/Bertilacchi%20Insurance%3A%20Lucchesi%20Jr%20Dan%20A/95207/

匿名 提到...

Hey Guys
I've been around here for a while now, and I finally found something worth writing about: I found a great deal on custom [url=http://www.milesgershon.com/entertainment-centers.html][b] Contemporary Entertainment Centers [/b][/url]. These guys have 24/7 call-in service and they installed AND delivered my custom [url=http://www.milesgershon.com/entertainment-centers.html][b] Entertainment Center [/b][/url]all for Free!!! I just bought from them, and I've never had a more seamless internet buy -they ACTUALLY called me to confirm the order and talk about delivery time… unreal!

Peace

http://cia.vc/stats/project/gnome/bigboard

匿名 提到...

чат проститутки секс знакомства по вебкамере в запорожье шлюхи черемушки нижнего новгорода бляди интим ангарска интим услуги город рязань проститутки из г Смоленска интим знакомства санкт bb чат секс знакомств омск жирные бляди каменск секс знакомства интим знакомства в усть-илимске секс знакомства губкинский

бесплатные секс знакомства и без смс в новороссийске

匿名 提到...

top [url=http://www.001casino.com/]online casino[/url] hinder the latest [url=http://www.realcazinoz.com/]casino games[/url] manumitted no set aside perk at the leading [url=http://www.baywatchcasino.com/]bay anticipate casino
[/url].