最新Linux CSI Tools安装教程(两台主机,一发一收)(监控模式)

目录

一、Linux CSI Tools安装教程

1、硬件设备

2、Linux系统安装

3、CSI Tools安装

(1)检测ubuntu 系统的内核

(2)安装所需包

(3)支持 retpoline 的编译器 

(5)构建并安装修改后的无线驱动程序

(6)安装修改后的固件

 4 具体收发操作

(1)收发端共同执行

(2)发送端

(3)接收端
​​​​​​​​​​​​​​


一、Linux CSI Tools安装教程

1、硬件设备

        本人使用两台戴尔台式机,采集CSI不怎么耗电脑性能,参考网上的教程发现有同志笔记本也成功采到了数据,所以硬件设备不是重要的,主要有两点需要注意,

       (1)不管是笔记本还是台式机都应配备inter 5300网卡,而两种电脑的网卡是不一样的,台式机的网卡是全高,笔记本的网卡是半高。

       (2)inter 5300接口是mini-pcie, 现在笔记本很多是ngff接口的,虽然网上可以买到mini-pcie转ngff的转换卡,但是似乎还需要天线,而且转换卡可能也不好塞进笔记本里。

2、Linux系统安装

        本人使用的是ubuntu18.04.6,使用rufus工具制作系统盘,本文所有用到的文件均在此链接中:本文附件资源 ,rufus下载链接:Rufus - 轻松创建 USB 启动盘Rufus: Create bootable USB drives the easy wayicon-default.png?t=N7T8https://rufus.ie/zh/

准备一个空U盘,打开rufus工具,选择下载好的镜像文件,如下图所示:佩里科

        U盘制作好之后,插入电脑,进入电脑bios,选择U盘启动,等待片刻,系统安装成功。

3、CSI Tools安装

        本人参考的是Github上适用于较新内核的Linux 802.11n CSI工具,参考链接,认真,细心跟着下面的步骤肯定能成功,亲测成功。GitHub - spanev/linux-80211n-csitool: 802.11n CSI Tool based on iwlwifi and Linux802.11n CSI Tool based on iwlwifi and Linux. Contribute to spanev/linux-80211n-csitool development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/spanev/linux-80211n-csitool

(1)检测ubuntu 系统的内核

        要求必须是4.15才能进行后续的操作

uname -r

(2)安装所需包

sudo apt install build-essential linux-headers-$(uname -r) git-core

(3)支持 retpoline 的编译器 

        较新的内核需要具有 retpoline 支持的编译器。GCC 和 G++ 7.3 及更高版本支持该功能。下面的示例显示了如何安装 GCC/G++ 版本 8:

$ sudo add-apt-repository ppa:ubuntu-toolchain-r/test
$ sudo apt update
$ sudo apt install gcc-8 g++-8

         您需要确保该make命令使用正确版本的编译器。可以使用下面的指令查询。您可以使用这两种方式之一

(4)将系统范围的链接重定向到编译器可执行文件

         下面的指令检查当前链接指向的位置。

$ 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

         当前链接指向版本 5。因此需要将它们重定向到版本 8。为此,请删除当前链接。

$ sudo rm /usr/bin/gcc
$ sudo rm /usr/bin/g++

         并创建新的

$ sudo ln -s /usr/bin/gcc-8 /usr/bin/gcc
$ sudo ln -s /usr/bin/g++-8 /usr/bin/g++

(5)构建并安装修改后的无线驱动程序

        克隆修改后的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 签名。这不会干扰驱动程序的安装。因此,只需忽略这些消息并继续安装过程即可。

- 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 ..

(6)安装修改后的固件

        获取 CSI 工具补充材料:

$ git clone https://github.com/dhalperi/linux-80211n-csitool-supplementary.git

         重新定位 Intel Wi-Fi Link 5000 系列适配器的任何现有固件:

$ 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

         至此CSI Tools工具就安装成功了。

 4 具体收发操作

(1)收发端共同执行

        在终端顺序执行如下代码,安装lorcon

cd ~
sudo apt-get install libpcap-dev
git clone https://github.com/dhalperi/lorcon-old.git
cd lorcon-old
./configure
make
sudo make install

(2)发送端

        1、编译发送代码

cd ~
cd linux-80211n-csitool-supplementary/injection/
make

        2、执行初始化脚本 inject.sh(压缩包内:inject.sh)在执行之前建议先查看无线网卡接口名称,一般情况下是 wlan0,但是我的网卡确实wlp2s0和wlp3s0

iwconfig

         如下图所示,网卡是wlan0,还有网卡的其他参数,模式必须是monitor,其他的参数参考下图

         执行脚本参数配置,脚本下载链接在链接https://pan.baidu.com/s/1Tc5q_URerh9sLJ-bWe3caw?pwd=rstd 提取码:rstd:

sudo bash ./inject.sh wlan0 64 HT20

         参数解释:第一个参数是无线网卡接口名称,一般是wlan0,第二个参数是信道编号,建议64,第三个是OFDM下的HT20模式

        3、发送数据

echo 0x1c113 | sudo tee `sudo find /sys -name monitor_tx_rate`
cd ~
cd linux-80211n-csitool-supplementary/injection/
sudo ./random_packets 1000000000 100 1 1000

         第一行的参数配置如果有个人需求可以参考:沃一德

        random_packets的参数解释:第一个参数是累计发包数量,第二个参数是包的大小,第三个参数1代表injection MAC,用1就可以了,最后一个参数代表每隔1000微秒发一次包,即一秒发1000个包。

(3)接收端

         1、编译接收代码

cd ~
cd linux-80211n-csitool-supplementary/netlink/
make

         2、执行初始化脚本 monitor.sh 

        初始化脚本链接:本文附件资源

        注意:一定要采用这个脚本,其他博客上的脚本基本缺少了第2、3行内容,否则收不到包的!我尝试了好几次,才找到办法。如果发现此脚本运行后提示找不到对应的wlan接口也可尝试另外一个,注意切换路径到injection文件夹下面,每个人的电脑的用户名不同,没办法提供通用的指令,都做这个方向了,我相信大家都懂。

sudo bash ./monitor.sh wlan0 64 HT20

         其中信道编号要和发送端的一样

        3、执行收包程序

cd ~
cd linux-80211n-csitool-supplementary/netlink/
sudo ./log_to_file temp.dat # temp是保存数据的文件名,temp.dat前面可以加想要将文件保存在哪里路径,如果不加路径,默认在netlink文件夹下

         其中,temp.dat是要保存CSI数据文件的名字,并且temp.dat前面可以指定路径,代表将CSI数据保存在指定的路径下,默认数据在netlink文件夹下。

由于原生的代码只能不停的收包,因此参考Genshin_Doge提供的log_to_file.c文件可以实现收包n秒后自动停止,log_to_file.c的文件的链接:本文附件资源

使用方法如下:

​cd ~
cd linux-80211n-csitool-supplementary/netlink/
sudo ./log_to_file temp.dat 4

         参数解释:temp.dat是保存数据的文件名,4代表从检测到CSI包之后收3秒,然后退出程序。如果发送端每秒发送1000个包,那么在不丢包的情况下可以收到3000个包。如下图:

        参考优质博客:Genshin_Doge

        编写不易,请不要吝啬各位亲手中的赞,有任何问题欢迎评论区留言交流,我看到都会回复。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值