[原创]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打开终端窗口,运行:
- cd linux-80211n-csitool-supplementary/injection
- ./setup_monitor_csi.sh wlan0 13 HT20 //首先需覆盖原脚本,参数wlan0是网卡名称,可运行iwconfig命令查看;13为2.4G频段信道编号,如果只填了网卡名称,信道编号和HT模式会使用默认值64+HT20(5G频段)。
- sudo linux-80211n-csitool-supplementary/netlink/log_to_file log.dat //等待接收数据
注意:第二步里,我修改了原版脚本内容。因为之前在装CSI Tool的时候改过驱动,所以脚本有些内容是没必要再执行的。另外,网上看到的脚本,基本都是把网卡名称写死为wlan0(除了github上的lgtm项目),实际可能并不相符,这会导致运行不成功的情况。因此我把网卡名称也作为了输入参数。运行脚本的三个参数分别是网卡名称、信道编号、HT模式。
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内容:
#!/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运行。
运行截图: