CSI Tool 安装及配置记录
一、Ubuntu安装
1.下载Ubuntu
首先安装Ubuntu 14.04 LTS
64位下载地址(页面中第一个链接)
2.制作启动盘(注意备份)
可以使用官方的工具Rufus,下载地址:https://rufus.ie/
打开Rufus,先备份好原来U盘里的文件,SELECT刚刚下载的iso文件,点击START就可以了。
3.打开新电脑的BIOS设置
把刚刚做好的启动盘插入电脑,然后打开按住Del键打开BIOS的界面,默认的都是从硬盘 boot的,这里需要设置优先级,首先从USB boot。不同的电脑打开BIOS的方法不同,我的是用Del键。
4.继续开机,安装Ubuntu
从u盘boot后,按需选择安装的方式,这里建议直接覆盖安装,以免不同版本文件混淆。当然安装前如果有电脑里有重要的文件记得备份好。大概几分钟就好了。
完了首先打开安装终端(热键:Ctrl + Alt + T),先检查一下内核版本是否内核3.2-4.2版本之间。
查看内核版本命令:
cat /proc/version
然后再检查一下无线网卡是否能够正常使用,命令:
ifconfig
5.换apt源
apt默认是外国的源,会比较慢,替换为国内的镜像源,速度会快一些。
5.1 备份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
5.2 编辑list文件:
sudo gedit /etc/apt/sources.list
5.3 将source.list中的内容替换
清华源 ubuntu版本:14.04 LTS
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
5.4 更新apt:
sudo apt-get update
二、CSI Tool安装
接下来安装CSI Tool,按顺序依次执行就行。
1.安装依赖
sudo apt-get -y install git-core kernel-package fakeroot build-essential ncurses-dev
sudo apt-get -y install libnl-dev libssl-dev
sudo apt-get -y install iw
2.下载编译内核
2.1 下载精简版内核
精简版内核:intel-5300-csi-github-master.tar.gz
下载地址:https://download.csdn.net/download/u014645508/10579514
2.2 解压
将上一步下载的压缩包利用U盘拷贝到Ubuntu系统Home目录下,准备在Ubuntu上解压。解压命令:
tar -xvf intel-5300-csi-github-master.tar.gz
2.3 编译
cd intel-5300-csi-github
make oldconfig
一直按回车确定
make menuconfig
弹出窗口,生成一个.config文件,先选择save,再exit即可
make -j3
整个流程中最为耗时的一步,我的机器大约需要运行半小时。3这个参数可以理解为编译的速度,机器性能比较优良的话可以使用 make -j5。
sudo make install modules_install
安装相关模块,耗时十五分钟左右。这一步执行以后刚开始可能会弹出couldn‘t load 等字样,这是因为还没有执行下一步,加载不出是正常的。
sudo make install
sudo make install modules_install
2.4 替换内核并更新
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
这两步是操作和移动release的内核
备注:
在灵魂的博客中,命令有所不同,需确认
sudo mkdir /usr/src/linux-headers-`cat include/config/kernel.release`
sudo cp -rf usr/include /usr/src/linux-headers-`cat include/config/kernel.release`/include
这里可能会遇到一个问题:内核编译后不显示新添加的启动项选项,可按照如下方式使之显示出来。
cd /etc/default
sudo gedit grub
注释下面一行
#GRUB_HIDDEN_TIMEOUT=0
然后保存。
sudo update-grub
2.5 重启
sudo reboot
重启之后进入4.2.0的内核 可以通过 cat /proc/version确认
以后每次都进该版本内核,否则收不到数。
3.替换固件
git clone git://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/
sudo ln -s iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/iwlwifi-5000-2.ucode
替换固件工作完成。
4.编译收数文件
切换至netlink目录,准备编译
cd ~/linux-80211n-csitool-supplementary/netlink
make
这一步是编译生成log_to_file等文件。log_to_file可以实现收数功能。如果这一步报错可能是前面make_headers步骤出了错。我们有需要的话可以自行修改log_to_file.c文件,但之后需要在该目录下重新编译,即执行
make clean
make
5.修改驱动
cd ~/intel-5300-csi-github/drivers/net/wireless/iwlwifi/dvm
cp main.c main.bak.c
gedit main.c
打开main.c文件,按Ctrl+F搜索“connector_log”
将“priv->connector_log=iwlwifi_mod_params.connector_log;”注释掉,修改为“priv->connector_log=1;后保存
6.重新编译
cd ~/intel-5300-csi-github
sudo make install modules_install
sudo make install
sudo update-grub
备注:
在灵魂的博客中,第二个sudo make install modules_install前需要先进行sudo make -j3 (待验证)
三、AP模式收数
1.电脑连上路由器
我将安装好的电脑作为client,连接一台没有密码的路由器(有密码的是连不上的)。还有方案是利用create ap生成软AP的方法。
2.ping 路由器
在终端输入:
ping 101.6.69.105 -i 0.5
101.6.69.105是路由的ip地址,-i 0.5表示发送间隔0.5s,如果间隔小于0.5s需要加上sudo。
3.收数
新建终端,在新终端中输入:
cd ~/linux-supplementary/netlink
sudo ./log_to_file test.dat
四、monitor模式收数
monitor模式可以设定信道和发送的参数:如信道编号,信道带宽,发包数量,发包长度,发包模式以及发包间隔,相比AP模式有诸多优点。硬件上,也需要两台装有5300网卡的电脑。
1.安装Iorcon
sudo apt-get install libpcap-dev
git clone https://github.com/dhalperi/lorcon-old.git
若已手动下载lorcon-old, 放在HOME文件夹,跳过上一步。
cd lorcon-old
./configure
make
sudo make install
cd ~/linux-80211n-csitool-supplementary/injection
make
2.替换脚本
原本injection文件夹里的脚本可能会存在一些问题,可以用这里的脚本替换原来的脚本。发送端替换setup_inject.sh,接收端替换setup_monitor_csi.sh就可以了。如果两台电脑互相发就把两台电脑的setup_inject.sh和setup_monitor_csi.sh都分别替换掉。
2.1 接收端 setup_monitor_csi.sh
A电脑作为接收端,ctrl+alt+T打开终端窗口,运行
cd ~/linux-supplementary/injection
cp setup_monitor_csi.sh setup_monitor_csi.bak.sh
gedit setup_monitor_csi.sh
打开setup_monitor_csi.sh,将其中的内容替换为以下内容:
setup_monitor_csi.sh
#!/usr/bin/sudo /bin/bash
service network-manager stop
SLEEP_TIME=2
WLAN_INTERFACE=$1
if [ "$#" -ne 3 ]; thenecho "Going to use default settings!"chn=64bw=HT20
elsechn=$2bw=$3
fi
echo "Bringing $WLAN_INTERFACE down....."
ifconfig $WLAN_INTERFACE down
while [ $? -ne 0 ]
doifconfig $WLAN_INTERFACE down
done
sleep $SLEEP_TIME
echo "Set $WLAN_INTERFACE into monitor mode....."
iwconfig $WLAN_INTERFACE mode monitor
while [ $? -ne 0 ]
doiwconfig $WLAN_INTERFACE mode monitor
done
sleep $SLEEP_TIME
echo "Bringing $WLAN_INTERFACE up....."
ifconfig $WLAN_INTERFACE up
while [ $? -ne 0 ]
doifconfig $WLAN_INTERFACE up
done
sleep $SLEEP_TIME
echo "Set channel $chn $bw....."
iw $WLAN_INTERFACE set channel $chn $bw
注意,每个段落的空格必须是一个tab,若不是需手动修改。否则会在运行bash时报错。
修改后执行
./setup_monitor_csi.sh wlan0 13 HT20
参数wlan0是网卡名称,可运行iwconfig命令查看;13为2.4G频段信道编号,如果只填了网卡名称,信道编号和HT模式会使用默认值64+HT20(5G频段)
cd ~/linux-80211n-csitool-supplementary/netlink/
sudo ./log_to_file test.dat

2.1发送端:setup_inject.sh
打开发送端电脑,进行操作:
cd ~/linux-supplementary/injection
cp setup_inject.sh setup_inject.bak.sh
gedit setup_inject.sh
打开setup_inject.sh,将其中的内容替换为以下内容:
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 ]; thenecho "Going to use default settings!"chn=64bw=HT20
elsechn=$2bw=$3
fi
sleep $SLEEP_TIME
ifconfig $WLAN_INTERFACE 2>/dev/null 1>/dev/null
while [ $? -ne 0 ]
doifconfig $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 ]
doifconfig $WLAN_INTERFACE down
done
sleep $SLEEP_TIME
echo "Bringing mon0 up....."
ifconfig mon0 up
while [ $? -ne 0 ]
doifconfig mon0 up
done
sleep $SLEEP_TIME
echo "Set channel $chn $bw....."
iw mon0 set channel $chn $bw
3.
./setup_inject.sh wlan0 13 HT20
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(微秒)。

执行了上述所有操作后,我们可在接收端看到A电脑收到了数据,之后就可以解析了
4.可能出现的问题
4.1可能收不到数的原因
可能原因:
1.硬件原因:调整好天线的角度和方向,确保发送机和接收机在一个平面上。
2.软件原因:①如果用灵魂序曲的教程(指路:https://blog.csdn.net/u014645508/article/details/82993718?utm_source=blogxgwz1),软件安装完了收不到数,可能是因为驱动没改好,可以改驱动也可以直接用这篇文章的脚本替换灵魂序曲的教程里的脚本。
②monitor_tx_rate参数是否配置正确,上图中的每个比特的含义仔细检查。
若接收不到,看wlan用802.11 n 模式
参考灵魂:https://blog.csdn.net/u014645508/article/details/81359409
Linux CSI Tool 完整使用说明(一发一收,monitor模式)(权威版 已成功测试)_Leming Shen的博客-CSDN博客_csi tool
华为:https://huaweicloud.csdn.net/63563932d3efff3090b5b24b.html?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-3-112338240-blog-117101853.pc_relevant_aa2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-3-112338240-blog-117101853.pc_relevant_aa2&utm_relevant_index=4#1_265?login=from_csdn
https://huaweicloud.csdn.net/63563932d3efff3090b5b24b.html?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-3-112338240-blog-117101853.pc_relevant_aa2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~activity-3-112338240-blog-117101853.pc_relevant_aa2&utm_relevant_index=4#1_265?login=from_csdn
相关文章:
CSI Tool 安装及配置记录
一、Ubuntu安装 1.下载Ubuntu 首先安装Ubuntu 14.04 LTS 64位下载地址(页面中第一个链接) 2.制作启动盘(注意备份) 可以使用官方的工具Rufus,下载地址:https://rufus.ie/ 打开Rufus,先备份…...
华为OD机试 - 最低位排序(Python)| 真题+思路+代码
最低位排序 题目 给定一个非空数组(列表),起元素数据类型为整型, 请按照数组元素十进制最低位从小到大进行排序, 十进制最低位相同的元素,相对位置保持不变, 当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位。 输入 给定一个非空数组(列表) 其…...
C#开发的OpenRA使用TrimExcess方法
C#开发的OpenRA使用TrimExcess方法 当你在细看OpenRA的代码,就会发现在下面这段代码添加了一个方法: foreach (var nodes in levels) nodes.TrimExcess(); 在上面代码里遍历整个节点列表,把所有节点都调用TrimExcess方法处理一下, 这样做的意义何在?为什么我们在一般的代码…...
ImageMagick任意文件读取漏洞(CVE-2022-44268)
0x00 前提 前几天爆出一个 ImageMagick 漏洞 ,可以造成一个任意文件读取的危害比较可观,最近有时间来复现学习一下 主要是影响的范围很大,很多地方都有这个问题,需要来学习一下 0x01 介绍 ImageMagick 是一个免费的开源软件套…...
第十九篇 ResNet——论文翻译
文章目录 摘要1 引言2 相关工作3 深度残差学习3.1 残差学习3.2 快捷恒等映射3.3 网络架构3.4 实现4 实验4.1 ImageNet 分类4.2 CIFAR-10 和分析4.3 PASCAL 和 MS COCO 上的物体检测🐇🐇🐇🐇🐇🐇 🐇 欢迎阅读 【AI浩】 的博客🐇 👍 阅读完毕,可以动动小手赞一…...
RiProRiProV2主题美化顶部增加一行导航header导航通知
背景: 有些网站的背景顶部有一行罪行公告,样式不错,希望自己的网站也借鉴过来,本教程将指导如何操作,并调整成自己想要的样式。 比如网友搭的666资源站 xd素材中文网...
RT-Thread MSH_CMD_EXPORT分析
RT-Thread MSH_CMD_EXPORT分析 1. 源码分析 在rt-thread中,使用FinSH,可以支持命令行。在源码中,使用MSH_CMD_EXPORT导出函数到对应命令。 extern void rt_show_version(void); long version(void) {rt_show_version();return 0; } MSH_CM…...
电脑麦克风没声音怎么办?这3招就可以解决!
最近有用户在使用电脑麦克风进行视频录制时,发现麦克风没有声音。这是什么原因?电脑麦克风没有声音怎么办?关于解决方案,我专门整理了三种方法来帮你们,一起来看看吧! 操作环境: 演示机型&#…...
【C++】运算符重载
运算符重载 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名以及参数列表。其返回值类型和参数列表与普通的函数类型。 函数名字为:关键字operator后面接需要重载的运算符号…...
什么是眼图?(扫盲向)
什么是眼图?(扫盲向) Ref: What’s eye diagram? 1 基础图示 眼图 2 用途 常用于评估差分链路中的信号传输质量 "眼睛"张得越开,链路信号质量越好 3 观测原理 眼图是传输信号序列在时域上的叠加 4 观测参数 4…...
【C++】类与对象(二)
前言 在前一章时我们已经介绍了类与对象的基本知识,包括类的概念与定义,以及类的访问限定符,类的实例化,类的大小的计算,以及C语言必须传递的this指针(C中不需要我们传递,编译器自动帮我们实现&…...
【软考】系统集成项目管理工程师(二十一)项目收尾管理
1. 项目验收2. 项目总结3. 系统维护4. 项目后评价补充:人员转移和资源遣散广义的系统集成项目收尾管理工作通常包含四类典型的工作:项目验收工作、项目总结工作、系统维护工作 以及 项目后评价工作,此外项目团队成员的后续工作也应在收尾管理时妥善安排;狭义的系统集成项目…...
关于公钥与私钥的一点看法
故事的起源 私密性 之前,用户a想给用户b发消息,a希望他自己发出现的消息,只能被b读懂。也就是说a希望发出去的数据是被加密过的,收到消息的人可以是b,c,d,e等等。但是只有b能被读懂。 这个需求…...
深入React源码揭开渲染更新流程的面纱
转前端一年半了,平时接触最多的框架就是React。在熟悉了其用法之后,避免不了想深入了解其实现原理,网上相关源码分析的文章挺多的,但是总感觉不如自己阅读理解来得深刻。于是话了几个周末去了解了一下常用的流程。也是通过这篇文章…...
32个关于FPGA的学习网站
语言类学习网站 1、HDLbits 网站地址:https://hdlbits.01xz.net/wiki/Main_Page 在线作答、编译的学习Verilog的网站,题目很多,内容丰富。非常适合初学Verilog的人!!! 2、牛客网 网站地址:http…...
5分钟快速上手Promise使用
promise 是处理异步编程的一种处理方式,可以将异步操作按照同步操作的方式编写。是一个对象或者构造函数,里面存放着某个未来才会执行的结果的方法(一般就是异步操作) 自己身上有all、reject、resolve这几个方法,原型上…...
大客户市场:阿里云、腾讯云、华为云“贴身肉搏”
配图来自Canva可画 近年来,随着中国逐渐进入数字化经济快车道,国内企业数字化、智能化升级已是刻不容缓。而为了帮助自身或其他企业实现数字化转型升级,阿里、腾讯、百度、京东、字节、网易、华为等众多国内知名企业早在多年以前,…...
华为OD机试 - 求字符串中所有整数的最小和(Python)| 真题+思路+代码
求字符串中所有整数的最小和 题目 说明 字符串 s,只包含 a-z A-Z + - ;合法的整数包括 1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102 2)负整数 负号 - 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023输入 包含数字的字符串 输出 所有整数的最小和 …...
企业电子招投标采购系统源码之首页设计
功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为…...
浅谈一下前端工作中全流程多层次的四款测试工具
在应届生找工作的时候,我们经常会见到一条招聘要求:要求实习经历。或者 有实习经历者优先。 为什么大部分公司在招聘时,都要求你必须有实习经历? 商业项目与个人项目不同,一段实习经历,能够熟悉公司中成熟…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...
