2013-11-02 61 views
3

我在內核3.12.rc5上使用Debian 7上的AR9271芯片組usb WiFi設備。我使用ath9k_htcnl80211驅動程序。獲取相鄰設備的接收信號強度

我通過wpa_supplicant 2.0創建一個ad-hoc WLAN,我想在C程序中獲得鄰近設備的接收信號強度。

我可以使用什麼函數或API來獲取該信息?

回答

1

編輯:沒有注意到第一次特設部分.. 對於特設,我不知道。

對於它的價值和基礎設施的連接:

如果你已經使用wpa_supplicant,你也應該有wpa_cli。

命令:

wpa_cli signal_poll 

應該給你的屏幕scrapeable輸出。

可以(也)有通過C的wpa_supplicant接口,使用wpa_ctrl_open()和wpa_ctrl_request():在線路

東西:

#include "wpa_ctrl.h" 
<needed declarations and definitions> 
ctrl = wpa_ctrl_open(path); 
wpa_ctrl_request(ctrl, "SIGNAL_POLL", 11, buf, &len, NULL); 
2

這對於libpcap非常有用,可以監控原始數據包的無線局域網,包括802.11頭,它包含RSSI以及原始MAC地址。有關解碼底層數據包結構的提示和技巧,請參閱this question

最簡單的做法是偵聽來自鄰近設備的數據包,以便讀取其RSSI。來自wlan設備的原始流量往往是瘋狂嘈雜 - 你必須過濾它只有你感興趣的設備。

該信息只能通過自己閱讀,但沒有什麼爲你收集數據;如果網絡上有一臺安靜的設備,你必須找出一些方法讓它通話,這樣你才能從中讀取RSSI。

+0

我一直在研究libpcap的,你能告訴我是否需要使用LINKTYPE_IEEE802_11或LINKTYPE_IEEE802_11_RADIOTAP獲取每個設備的RSSI信息? – Angs

+0

使用RADIOTAP標頭。 – Petesh

相關問題