赞
踩
1、Linux 802.11n CSI Tool
2、从零开始的Linux 802.11WiFi CSITool(AP和monitor模式均亲测可用)
3、[原创]Linux 802.11n CSI tool Monitor模式
4、CSI Tool安装使用讲解
5、CSI Tools 工具的安装 Intel 5300 + Ubuntu14.04
非常感谢大佬的填坑。
升级内核的步骤为解压、编译、安装、重启。
首先下载精简版内核。我这里下载的是式微式昧提供的内核版本。
将文件进行解压。使用指令:
tar -xvf intel-5300-csi-github-master.tar.gz
对文件进行编译:
cd intel-5300-csi-github
make oldconfig
一直按回车确定
make menuconfig
弹出窗口,默认内核配置,先save生成.config文件再退出。
(这几个指令这里和我之前升级成4.1.10+内核的指令有所不同,没去深究)
make -j8//这一步耗时半个小时
sudo make install modules_install
sudo make install
sudo make install modules_install
替换内核并更新:
sudo mkinitramfs -o /boot/initrd.img-`cat include/config/kernel.release` `cat include/config/kernel.release`
make headers_install
sudo mkdir /usr/src/linux-headers-`cat include/config/kernel.release`
sudo update-grub
最后重启:
sudo reboot
在升级内核的基础上,使用官网的指导进行配置。
sudo apt-get install gcc make linux-headers-$(uname -r) git-core
sudo apt-get install iw
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 ..
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
make -C linux-80211n-csitool-supplementary/netlink
sudo modprobe -r iwlwifi mac80211
sudo modprobe iwlwifi connector_log=0x1
sudo killall wpa_supplicant
先开一个终端,使用ping命令联通路由器,而后执行以下指令进行日志记录。
sudo linux-80211n-csitool-supplementary/netlink/log_to_file csi.dat
这里不再赘述,我的另外一篇博文有讲到(对应的是AP模式获取数据)。
2021/12/14—搭建5300网卡获取csi数据
这里我参考的是魂灵序曲的做法,不用每次都需要执行指令“sudo modprobe iwlwifi connector_log=0x1”才可以记录数据。
cd ~/intel-5300-csi-github/drivers/net/wireless/iwlwifi/dvm
cp main.c main.bak.c
gedit main.c
使用ctrl+f功能查找到“connector_log”
将“priv->connector_log=iwlwifi_mod_params.connector_log;”修改为“priv->connector_log=1;后保存。
而后重新编译:
cd ~/intel-5300-csi-github
sudo make install modules_install
sudo make install
sudo update-grub
重点来了。
sudo apt-get install libpcap-dev
git clone https://github.com/dhalperi/lorcon-old.git
cd lorcon-old
./configure
make
sudo make install
cd ~/linux-80211n-csitool-supplementary/injection
make
由于已经改了驱动,所以我这里参考的是魂灵序曲的脚本。
发送端修改setup_inject.sh文件
cd ~/linux-supplementary/injection
cp setup_inject.sh setup_inject.bak.sh
gedit setup_inject.sh
改成以下内容:
#!/usr/bin/sudo /bin/bash service network-manager stop 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
接收端修改setup_monitor_csi.sh文件:
cd ~/linux-supplementary/injection
cp setup_monitor_csi.sh setup_monitor_csi.sh.bak.sh
gedit setup_monitor_csi.sh
修改成以下的内容:
#!/usr/bin/sudo /bin/bash service network-manager stop 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
接收端:
cd ~/linux-supplementary/injection
sudo ./setup_monitor_csi.sh wlan0 64 HT20//64表示5G频段,13表示2.4G
//wlan0这里要改成自己的网卡名称
sudo ../netlink/log_to_file test.dat
发送端:
cd ~/linux-supplementary/injection
./setup_inject.sh wlan2 64 HT20//wlan2要使用ifconfig进行查找来确定自己的网卡
sudo echo 0x4101 | sudo tee /sys/kernel/debug/ieee80211/phy0/iwlwifi/iwldvm/debug/monitor_tx_rate //这一段指令也可以加到setup_inject.sh文件中
sudo ./random_packets 100000 100 1 1000
第三步过于繁杂,可以自行写成脚本,关于0x4101的参数,如下图所示。
最后一个指令,第一个参数是包的数量;第二个是包的长度;第三个是模式,选1;第四个参数是包与包的间隔。(感谢csdn小伙伴的提醒)
1、安装内核时没有在root目录下,导致内核恐慌。
2、网卡的问题,执行.sh文件之后,会停用网卡,所以需要启动网络功能的话需要采用指令:
sudo service network-manager restart
最后来谈谈为什么两个网卡之间可以进行通信,参考以下的回答。
网卡间是怎么通信的
也许计算机网络课本里会讲得更为清楚一些,暂且先放着。
最后,预祝看着这篇文章的小伙伴都能采到理想的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。