[原創]Linux 802.11n CSI tool Monitor模式

Linux 802.11n CSI tool Monitor模式

使用AP模式的缺陷在於ping 命令速度比較慢,且不能精確控制發送的參數,比如接收的包數量是不可控的。Monitor模式可以調製發送速率、發包數量、發送天線個數、HT模式、short/long guard interval等等,因此調通Monitor模式是必須的。期間參考了博主沃一德的CSI Tool安裝使用講解,對他的工作表示感謝。

特別說明:本文使用的腳本適配於改過驅動的CSI Tool。如果未改過驅動,還需對腳本進行一些修改。

CSI tool的安裝教程、開啓AP模式、改驅動部分均可參考我之前的博客Linux 802.11n CSI tool安裝終極教程

如需轉載請註明出處。

共同的準備工作

啓用Monitor模式需要兩臺安裝CSI tool工具的電腦。令A電腦爲接收端,B電腦爲發送端。A和B電腦均需安裝lorcon,那麼均需在A和B電腦上執行下列流程:

ctrl+alt+T打開終端窗口,運行:

1. sudo apt-get install libpcap-dev

2. git clone https://github.com/dhalperi/lorcon-old.git

3. cd lorcon-old

4. ./configure

5. make

6. sudo make install

7. 另外,首次運行linux-80211n-csitool-supplementary下的injection需要make,那麼 執行

1) cd ~

2) cd linux-80211n-csitool-supplementary/injection

3) make

接收端操作

A電腦作爲接收端,ctrl+alt+T打開終端窗口,運行:

1. cd linux-80211n-csitool-supplementary/injection

 2. ./setup_monitor_csi.sh wlan0 13 HT20 //首先下載後需覆蓋原腳本,參數wlan0是網卡名稱,可運行iwconfig命令查看;13爲2.4G頻段信道編號,如果只填了網卡名稱,信道編號和HT模式會使用默認值64+HT20(5G頻段)。

3. sudo linux-80211n-csitool-supplementary/netlink/log_to_file log.dat   //等待接收數據

注意:第二步裏,我修改了原版腳本內容。因爲之前在裝CSI Tool的時候改過驅動,所以腳本有些內容是沒必要再執行的。另外,網上看到的腳本,基本都是把網卡名稱寫死爲wlan0(除了github上的lgtm項目),實際可能並不相符,這會導致運行不成功的情況。因此我把網卡名稱也作爲了輸入參數。運行腳本的三個參數分別是網卡名稱、信道編號、HT模式。

setup_monitor_csi.sh下載地址

setup_monitor_csi.sh內容:

#!/usr/bin/sudo /bin/bash
SLEEP_TIME=2
WLAN_INTERFACE=$1
if [ "$#" -ne 3 ]; then
    echo "Going to use default settings!"
    chn=64
    bw=HT20
else
    chn=$2
    bw=$3
fi
echo "Bringing $WLAN_INTERFACE down....."
ifconfig $WLAN_INTERFACE down
while [ $? -ne 0 ]
do
    ifconfig $WLAN_INTERFACE down
done
sleep $SLEEP_TIME
echo "Set $WLAN_INTERFACE into monitor mode....."
iwconfig $WLAN_INTERFACE mode monitor
while [ $? -ne 0 ]
do
    iwconfig $WLAN_INTERFACE mode monitor
done
sleep $SLEEP_TIME
echo "Bringing $WLAN_INTERFACE up....."
ifconfig $WLAN_INTERFACE up
while [ $? -ne 0 ]
do
    ifconfig $WLAN_INTERFACE up
done
sleep $SLEEP_TIME
echo "Set channel $chn $bw....."
iw $WLAN_INTERFACE set channel $chn $bw

運行截圖:

 

發送端操作

B電腦/發送端:

1. cd linux-80211n-csitool-supplementary/injection/

2. ./setup_inject.sh wlan0 13 HT20      //下載後需覆蓋原腳本,wlan0爲你的網卡名稱,13爲信道編號

setup_inject.sh也是基於類似的理念修改的:添加運行說明;添加網卡名爲參數;

再次聲明:該腳本適配改過驅動的CSI tool

setup_inject.sh下載地址

setup_inject.sh內容:

#!/usr/bin/sudo /bin/bash
WLAN_INTERFACE=$1
SLEEP_TIME=2
modprobe iwlwifi debug=0x40000
if [ "$#" -ne 3 ]; then
    echo "Going to use default settings!"
    chn=64
    bw=HT20
else
    chn=$2
    bw=$3
fi
sleep $SLEEP_TIME
ifconfig $WLAN_INTERFACE 2>/dev/null 1>/dev/null
while [ $? -ne 0 ]
do
    ifconfig $WLAN_INTERFACE 2>/dev/null 1>/dev/null
done
sleep $SLEEP_TIME
echo "Add monitor mon0....."
iw dev $WLAN_INTERFACE interface add mon0 type monitor
sleep $SLEEP_TIME
echo "Bringing $WLAN_INTERFACE down....."
ifconfig $WLAN_INTERFACE down
while [ $? -ne 0 ]
do
    ifconfig $WLAN_INTERFACE down
done
sleep $SLEEP_TIME
echo "Bringing mon0 up....."
ifconfig mon0 up
while [ $? -ne 0 ]
do
    ifconfig mon0 up
done
sleep $SLEEP_TIME
echo "Set channel $chn $bw....."
iw mon0 set channel $chn $bw



 

 

3. sudo echo 0x4101 | sudo tee /sys/kernel/debug/ieee80211/phy0/iwlwifi/iwldvm/debug/monitor_tx_rate //這一步可以寫成腳本

0x4101這部分參數設置具體參見下圖,該圖引自CSI Tool安裝使用講解

比如0x1c101表示支持選擇三根天線發送、OFDM下的HT20模式,不過Rate Selection部分對應速率尚不明。

4. sudo ./random_packets 100000 100 1  第一個參數:包的數量 第二個參數:包的長度 第三個參數:包與包間delay(微秒)。

可能出現問題 Error opening LORCON interface,這是因爲沒有sudo運行。

運行截圖:

執行了上述所有操作後,我們可在接收端看到A電腦收到了數據,之後就可以解析了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章