在AP模式下ping的速度非常慢,在我们的测试中只能达到200多帧的频率,这样得到的数据非常的不稳定。
Monitor模式可以调制发送速率、发包数量、发送天线个数、HT模式、short/long guard interval等等,因此调通Monitor模式是必须的。在我们搭建之后测试中Monitor模式的帧率最高扩大到3000多帧的频率,在设置规定发包频率后发包频率非常稳定几乎没有波动!
一、准备工作(安装CSI驱动)
这部分与配AP模式类似,具体可参考AP模式配置配置到步骤4即可。
1、sudo apt-get install gcc make linux-headers-$(uname -r) git-core
2、CSITOOL_KERNEL_TAG=csitool-$(uname -r | cut -d . -f 1-2)
git clone https://github.com/dhalperi/linux-80211n-csitool.git
cd linux-80211n-csitool
git checkout ${CSITOOL_KERNEL_TAG}
make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/iwlwifi modules
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/iwlwifi INSTALL_MOD_DIR=updates \
modules_install
sudo depmod
cd ..
3、git clone https://github.com/dhalperi/linux-80211n-csitool-supplementary.git
for file in /lib/firmware/iwlwifi-5000-*.ucode; do sudo mv $file $file.orig; done
sudo cp linux-80211n-csitool-supplementary/firmware/iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/
sudo ln -s iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/iwlwifi-5000-2.ucode
4、make -C linux-80211n-csitool-supplementary/netlink
二、配置CSI tool Monitor模式
按照教程配置Monitor模型在injection文件夹下有两个重要的脚本setup_inject.sh和setup_monitor_csi.sh。在实际在配置的过程中遇到了一些问题,对这两个脚本的进行了修改,具体如下所示:
setup_inject.sh:
#!/usr/bin/sudo /bin/bash
rfkill unblock all
modprobe -r iwlwifi mac80211 cfg80211
modprobe iwlwifi debug=0x40000
ifconfig wlan5 2>/dev/null 1>/dev/null
while [ $? -ne 0 ]
do
ifconfig wlan5 2>/dev/null 1>/dev/null
done
iw dev wlan5 interface add mon0 type monitor
sudo ifconfig wlan5 down
sudo ifconfig mon0 up
iw mon0 set channel $1 $2
ifconfig mon0 up
sudo chmod 777 /sys/kernel/debug/
sudo chmod 777 /sys/kernel/debug/tracing/
echo 0x4101 | sudo tee `find /sys -name monitor_tx_rate`
setup_monitor_csi.sh:
#!/usr/bin/sudo /bin/bash
modprobe -r iwlwifi mac80211 cfg80211
modprobe iwlwifi connector_log=0x1
# Setup monitor mode, loop until it works
iwconfig wlan1 mode monitor 2>/dev/null 1>/dev/null
while [ $? -ne 0 ]
do
iwconfig wlan1 mode monitor 2>/dev/null 1>/dev/null
done
echo "1234444"
ifconfig wlan1 up
iw wlan1 set channel $1 $2
ifconfig wlan1 up
注意:上述脚本中的wlan1在不同ubuntu电脑中的是不一样的,终端下输入ifconfig查看并修改!
三、启动Monitor模式:
发射端:
./setup_inject.sh 64 HT20
echo 0x4101 | sudo tee `find /sys -name monitor_tx_rate`
sudo ./random_packets 1 100 1
接收端
./setup_monitor_csi.sh 64 HT20
sudo ../netlink/log_to_file log.dat
然后就可以接收到数据啦!
附设定发包频率
在setup_inject.sh脚本中:
命令:sudo ./random_packets 1 100 1 是用来设定发包频率的。有4个参数,第一个是包的数量,第二个
是包的长度,第三个是模式,默认1就行。最后一个是发包间隔,单位us。
命令:echo 0x4101 | sudo tee find /sys -name monitor_tx_rate
0x4101是对发送速率的选择,具体如下图所示: