前言:由于开放的CSI工具特别多,不同开发者的版本对应着不同linux内核环境,本博客选用linux16.04版本,不推荐使用linux14.04等其他版本的csi tool,设置很繁琐。这里我们选用性价比高的intel 5300网卡进行CSI数据的获取。在购买到5300网卡,连接至主机后,开始安装环境。
- 本文使用的是 spanev github 开发的CSI tool:
GitHub - spanev/linux-80211n-csitool: 802.11n CSI Tool based on iwlwifi and Linux
-
下载安装linux 16.04.7内核为4.15.0-112-generic的 Ubuntu系统
制作系统盘,安装ubuntu系统
ubuntu更换镜像,关闭更新
在linux里面修改镜像源,之后执行以下代码重新更新(镜像源选的aliyun,更新关闭是防止内核升级,不适配CSI tool)。sudo apt-get update;sudo apt-get upgrade
-
查看内核版本
uname -r
应该会显示 内核版本为: 4.15.0-112-generic
-
安装git包
后续需要git下载csi tool工具
sudo apt install build-essential linux-headers-$(uname -r) git-core
-
验证所需GCC、G++ 版本是否正确
ls -l /usr/bin/gcc /usr/bin/g++
大致会显示如下版本:
lrwxrwxrwx 1 root 5 Mar 27 2018 /usr/bin/g++ -> g++-5
lrwxrwxrwx 1 root 5 Mar 27 2018 /usr/bin/gcc -> gcc-5
当然,此处开发者也给出了高版本内核中gcc和g++的升级办法。高核用户可参见这里。
-
构建和安装修改的无线驱动程序
- 克隆修改后的Linux内核代码
git clone https://github.com/spanev/linux-80211n-csitool.git
cd linux-80211n-csitool
- 检查正确的发布版本
CSITOOL_KERNEL_TAG=csitool-$(uname -r | cut -d . -f 1-2)
git checkout ${CSITOOL_KERNEL_TAG}
- 为现有内核构建修改后的驱动程序
make -j `nproc` -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/intel/iwlwifi modules
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/intel/iwlwifi \
> INSTALL_MOD_DIR=updates modules_install
如报以下错误,可以忽略:
- SSL error:02001002:system library:fopen:No such file or directory: bss_file.c:175 - SSL error:2006D080:BIO routines:BIO_new_file:no such file: bss_file.c:178 sign-file: certs/signing_key.pem: No such file or directory
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
此时,安装全部完毕。
验证CSI是否工作
首先,将电脑连接至无需密码的WIFI网络中;
分别执行 关闭 和 开启 iwlwifi ,并执行log_to_file.c 将抓取的数据保存至csi.data文件中。
sudo modprobe -r iwlwifi mac80211
sudo modprobe iwlwifi connector_log=0x1
sudo linux-80211n-csitool-supplementary/netlink/log_to_file csi.dat
不要使用ifconfig查看IP,那是电脑的IP,ping自己的电脑网卡是抓不到包的。而是查找连接到的WIFI的路由器的IP地址,打开 网络连接信息即可看到。然后打开另一个终端,输入
ping #router's IP address# -i 1
如:
ping 192.168.3.1 -i 1
未来,需要抓取CSI时,仅需调用 验证CSI是否工作 的代码执行,执行后 ,数据全部存在csi.data中。
非常感谢前人的研究与分享:
主要参考:
在Ubuntu 16.04上安装Intel 5300 CSI tool的全过程_huanglianghuang的博客-CSDN博客2.根据自己需求选择合适的磁盘,我选择把I盘留给linux系统,这里我之前已经分好区了,但是做系统需要一个空磁盘,所以在I盘处右键选择删除卷,会发现它从主分区变成一个未分配的盘。2.插好U盘,重启过程中按住F12,进入启动选项界面,选择U盘,我这里是金士顿的,如图。将电脑关机,按下开机键之后立刻按住F1,直到出现如下界面:(这是联想电脑进入BIOS模式的方法)(3)看看硬盘驱动器处是不是显示出了U盘,没显示就重新插入一下,点击写入!(1)在试用ubuntu与安装ubuntu之间选择安装ubuntu,
https://blog.csdn.net/qq_41511783/article/details/127049587?spm=1001.2014.3001.5502ubuntu系统安装,配置csitool工具,收发无线数据_把夜晚都照亮的博客-CSDN博客_csitool1、Ubuntu镜像下载地址1:14.04,16.04,18.04下载地址2:12.04~19.04安装太高的版本,不行,比如20.04版本2、ubuntu系统安装步骤(各个版本都可):https://blog.csdn.net/qq_38962621/article/details/87390603?utm_source=app3、安装Linux 802.11n CSI tool安装教程:参考1:https://blog.csdn.net/u014645508/article/details
https://blog.csdn.net/m0_45150312/article/details/116949610
涉及到的开源工具: