CSI Tool 安装及配置记录

news2024/12/26 23:17:41

一、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/firmware/
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 ]; 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

注意,每个段落的空格必须是一个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 ]; 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

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_csdnhttps://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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/341824.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wav转mp3,wav转换成mp3教程

很多使用音频文件的小伙伴,总会接触到不同类型的音频格式,根据需求不同需要做相关的处理。比如有人接触到了wav格式的音频,这是windows系统研发的一种标准数字音频文件,是一种占用磁盘体积超级大的音频格式,通常用于录…

超级好用的json格式化工具

理想的json格式化工具应该具备什么?你心中的json格式化工具是什么? Json.cn? No No No, 这个已经老掉牙了理想的json格式化工具应该支持搜索、定位、非法json容错,若实在无法格式化则应该给出具体的错误位置,并且可视区要大&…

【C++设计模式】学习笔记(3):策略模式 Strategy

目录 简介动机(Motivation)模式定义结构(Structure)要点总结笔记结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金…

数组的操作

1.splice 1.splice 是数组的一个方法,使用这个方法会改变原来的数组结构,splice(index ,howmany , itemX);这个方法接受三个参数,我们在使用的时候可根据自己的情况传递一个参数&…

ChatGPT原理简明笔记

学习笔记,以李宏毅的视频讲解为主,chatGPT的官方博客作为补充。 自己在上古时期接触过人工智能相关技术,现在作为一个乐子来玩,错漏之处在所难免。 若有错误,欢迎各位神仙批评指正。 chatGPT的训练分为四个阶段&#x…

大数据技术原理与应用

一、大数据概述 1.1大数据时代 三次信息化浪潮 1.2大数据的概念和影响 大数据的4v特征 volume大量化、velocity快速化、variety多样化、value价值化 数据量大数据类型繁多 – 大数据是由结构化和非结构化数据组成的处理速度快价值密度低,商业价值高 – 连续不间…

二十种题型带你复习《概率论与数理统计》得高分(高数叔)

题型一 事件及概率的运算 知识点 注意: 1 互斥与对立事件 2 事件的差 注意: 1 德摩根律注意: 1 加法公式 2 减法公式(事件的差)题目 注意: 1 填空题注意: 1 德摩根律 2 三个事件的和的公式 3 两个事件的积事件为…

数据库关系模型

关系模型简述 形象地说,一个关系就是一个table。 关系模型就是处理table的,它由三个部分组成: 描述DB各种数据的基本结构形式;描述table与table之间所可能发生的各种操作;描述这些操作所应遵循的约束条件&#xff1…

你是真的“C”——详解指针知识

你是真的“C”——详解指针知识😎前言🙌1、 指针是什么?🙌2、指针和指针类型🙌2 、1指针-整数2 、 2指针的解引用3、 野指针🙌3、 1野指针成因3、 2如何规避野指针4、指针运算🙌4、1 指针-整数4…

Flutter WebView 性能优化,让 h5 像原生页面一样优秀

大家好,我是 17。 WebView 的文章分两篇 在 Flutter 中使用 webview_flutter 4.0 | js 交互Flutter WebView 性能优化,让 h5 像原生页面一样优秀 本篇和大家一起讨论下性能优化的问题。 WebView 页面的体验上之所以不如原生页面,主要是因…

c#数据结构-有序列表和有序字典

有序列表和有序字典 有序列表和有序字典都是是一个键值对容器,像字典一样。 从习惯和描述推测, 列表控制一个数组有序列表使用比有序字典更少的内存如果一次性添加一堆数据,且这堆数据有序。那么有序列表比有序字典更快 有序列表大概长这样 …

最后一个单词的长度-力扣58-java

一、题目描述给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s "Hello World"输出&#x…

聊聊火出圈的ChatGPT

前言 OpenAI 近期发布聊天机器人模型 ChatGPT,迅速火爆各大技术网站,就像一个突然激起的巨浪打破了沉寂已久的水面。它的出现无论是对人工智能的资本圈还是技术圈都感受到了春风回暖,前兔似锦的未来。 尤记得2015年谷歌开源的Tensorflow&am…

2.19、读者-写者问题

有读者和写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用, 但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。 因此要求: ①允许…

新专利:苹果笔可充当VR游戏控制器,智能笔与Find My结合将成为趋势

根据美国商标和专利局(USPTO)公示的清单,苹果获得了一项关于 Apple Pencil 的技术专利。根据专利描述,Apple Pencil 可以和混合现实头显、iPad、Mac 显示器等设备进行交互和操作,可以充当 VR 游戏的控制器。 该专利的…

Three.js 3D建模必备基础

在 three.js 中,可见对象由几何体和材质构成。 我们已经了解了如何创建适用于点和线图元的简单几何图形,并且遇到了各种标准网格几何图形,例如 THREE.CylinderGeometry 和 THREE.IcosahedronGeometry。 在本节中,我们将了解如何从…

【Unity 代码相关】实现脚本之间动态变量传递

这是我在做作品的过程中遇到的问题,大概阐述一下遇到的问题及解决思路。 1 问题阐述 因为是做天空盒,有很多变量需要控制,shader之间又想实现颜色、变量的传递,所以整个项目的所有暴露出来的可调整变量,我都汇总在了…

算法训练营DAY53|392.判断子序列、115.不同的子序列

392. 判断子序列 - 力扣(LeetCode)https://leetcode.cn/problems/is-subsequence/ 判断子序列这道题目,和上一期的题解法几乎完全相同,只是递推公式有一点差别,但是要是完全用之前的代码也是可行的。…

模拟信号隔离放大器直流信号转换0-20mA/ 4-20mA/2-10V/0-±5V/0-±10V

概述:导轨安装DIN11 IPO EM系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要电量隔离测控的行业。该模块内部嵌入了一个高效微功率的电源,…

【Linux系统编程】02:文件操作

文件IO 系统调用&#xff08;不带缓冲的IO操作&#xff09;库函数&#xff08;默认带用户缓冲的IO操作&#xff09; 一、非缓冲IO 系统调用&#xff1a;即为不带缓冲的IO 1.打开文件open 2.读取文件read NAMEread - read from a file descriptorSYNOPSIS#include <unist…