[原创]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电脑收到了数据,之后就可以解析了。

猜你喜欢

转载自blog.csdn.net/u014645508/article/details/82993718