先验知识
一、虚拟机版本问题
- 首先在虚拟机中安装ubuntu14.0.1,后面在出问题的时候以为是虚拟机版本的问题,换了ubuntu18.0.4、20等几个版本,经过测试发现和版本无关,都可以。
二、完成了shell语法的学习,了解一些常见的linux命令操作。
Linux 中有许多常见的命令,用于执行各种任务。以下是一些常见的 Linux 命令及其功能:
-
文件和目录操作:
ls
: 列出目录内容。cd
: 切换当前工作目录。cp
: 复制文件或目录。mv
: 移动/重命名文件或目录。rm
: 删除文件或目录。mkdir
: 创建新目录。
-
文本编辑:
nano
,vim
,emacs
: 启动文本编辑器。cat
: 查看文件内容。head
,tail
: 查看文件的前几行或后几行。
-
权限管理:
chmod
: 修改文件或目录的权限。chown
: 更改文件或目录的所有者。chgrp
: 更改文件或目录的组。
-
系统信息:
uname
: 显示系统信息。df
: 显示磁盘空间使用情况。free
: 显示内存使用情况。ps
: 显示进程状态。top
: 实时显示系统资源使用情况。
-
网络相关:
ping
: 测试与目标主机的连接。traceroute
: 显示数据包在网络中的传输路径。ifconfig
或ip
: 查看和配置网络接口。netstat
: 显示网络统计信息。
-
压缩和解压缩:
tar
: 打包和解压文件。gzip
,gunzip
: 压缩和解压缩文件。zip
,unzip
: 创建和解压 ZIP 文件。
-
进程控制:
ps
: 显示系统进程。kill
: 终止进程。pkill
: 根据进程名称终止进程。
-
用户和组管理:
useradd
,userdel
: 添加和删除用户。passwd
: 修改用户密码。groupadd
,groupdel
: 添加和删除用户组。su
,sudo
: 切换用户或以超级用户权限执行命令。
-
查找文件:
find
: 根据条件查找文件。locate
: 基于数据库快速查找文件。
-
包管理系统:
apt
,apt-get
: Debian/Ubuntu 系统的包管理工具。yum
,dnf
: Red Hat/CentOS 系统的包管理工具。
这只是一小部分 Linux 命令,Linux 系统中还有很多其他命令和工具可用。你可以使用 man
命令来查看命令的手册页以获取更详细的信息,例如 man ls
。
三、内核相关知识
-
在上周的实验中,出现了各种各样的问题,这些问题促使我学习了linux内核的相关知识,了解了rmmod、insmod等命令的功能含义和原理,后面学习了有关ssh的相关问题,因为在实验的时候要远程登录路由器并给路由器发送一些安装包,了解了不同服务器或者客户端可以通过ssh建立连接,用scp去相互传输复制文件。
rmmod
和insmod
是 Linux 中与内核模块(Kernel Module)管理相关的命令,用于卸载和加载内核模块。以下是它们的功能和原理:rmmod
命令:功能:
rmmod
用于卸载(移除)已加载到内核的模块。语法:
rmmod module_name
module_name
: 要卸载的内核模块的名称。
原理: 当你使用
rmmod
命令时,它会尝试从内核中卸载指定的模块。卸载过程包括执行模块的退出函数(exit
函数),释放模块所占用的资源,并解除模块与内核的关联。如果该模块正在被使用,卸载可能会失败。insmod
命令:功能:
insmod
用于加载新的内核模块到运行中的内核中。语法:
insmod module_path [module_parameters]
module_path
: 要加载的内核模块的路径。module_parameters
: 可选参数,用于传递给模块的初始化参数。
原理: 当你使用
insmod
命令时,它会将指定的模块加载到内核中。加载过程包括执行模块的初始化函数(init
函数),为模块分配内存和资源,并与内核建立关联。如果加载成功,该模块将成为内核的一部分,并可以被其他系统组件使用。示例:
- 加载模块:
insmod my_module.ko
- 卸载模块:
rmmod my_module
这两个命令通常用于在运行时动态地添加或删除内核模块,而不需要重新启动系统。
四、路由器版本问题
- 了解到路由器的相关知识,一开始用原装的路由器操作的时候在ssh这一步上卡壳,后面了解到原装路由器固件并没有嵌入linux,需要进行更改rt-ac86u固件版本,有官改和梅改,都试了一下,真一言难尽。目前为止,实验卡在最后一步远程控制路由器进行发包这一步,我怀疑两个原因:
- 路由器固件版本问题
- Github源码cmake报错(找找原因)
五、路由器设置
- 路由器由于重置会恢复出厂设置,在实验期间,先重置,然后把内网ip设置为特定的地址,比如192.168.2.1(后面会用到),主要用来ssh登录路由器时使用,还要设置路由器的用户名,密码,将ssh设置为wan&lan(主要目的是为保证通过lan或者wan连接的SAT可以使用ssh),将ssh端口设置为22.
六、scp命令具体用法
scp 客户端文件 服务器地址:复制的目录
七、关于Nexmon CSI Tool的介绍
- Nexmon CSI提取器使用修改的固件从一系列Broadcom WiFi中提取CSI。该工具支持2.4 GHz和5 GHz频段,最高可达80 MHz带宽并提取多达256个子载波的幅度。Nexmon需要一个有root的Nexus 5或6P智能手机,或树莓派B3+/B4或华硕RT-AC86U WiFi路由器作为CSI提取器(带WiFi监控模式)来监听商业WiFi接入点(AP)和WiFi客户端(如mini pc或笔记本电脑)之间交换的CSI数据包。与Linux 802.11n和Atheros CSI Tools相比,Nexmon所需的硬件更容易获得。然而,CSI提取的准备量是相似的。
相关问题
一、路由器版本固件问题
- 不恰当的路由器固件版本会出现一些让人不能理解的问题。比如:3.0.0.4.382_15098在刷了固件之后登录路由器时自己设置的密码居然报错(输入十几次,五次后五分钟后重试,无语),重置路由器之后继续实验,发现依然如此,无奈只能换固件版本。
Tips:在这个过程中,刷固件大约三分钟,然后重启。
二、全程最好登录在root下进行实验
Tips:虚拟机首次登录root时会验证失败,要先进行设置root密码:sudo passwd root;
三、ssh报错问题
- 远程登录ssh时,第一次会要求确定是否yes,如果路由器重置后,直接ssh会报错,在这里需要我们使用ssh-keygen -R [router address]
- Tips:关于
ssh-keygen -R [router address]
,这里的原理是,将服务器的公钥发送给客户端进行更新,公钥所在文件为/etc/…ssh/host.list和host.list.old,有时候因为一些操作发生错误的时候需要删除host.list文件中的内容,这里我了解以下其中原理:在ssh远程登录的时候,为了保证安全性,会使用一些加密方式,常见的是对称加密方式,需要公钥和私钥完成加密,这个文件就是保存公钥的,这样每次在连接的时候,客户端用服务器提供的公钥去加密,服务器有自己的私钥,服务器用其进行解密,如果加密和解密的结果一致,服务器接受请求。
四、git clone时报错问题
- 虚拟机有时候在git仓库的时候报错,属于正常现象,多试几次就好了,可以通过ping一下github.com看一下当前丢包率等,有时候虚拟机无法ping通github,这个时候需要再etc/hosts文件下手动添加githu.com的地址,即140.82.114.4,有好几个地址可用,可用IP地址查询工具进行查询,选取自己电脑最少延迟的ip地址进行设置。
`我的PC的ip地址为:(每个人的PC会有所不同)`
140.82.113.4 github.com
151.101.1.194 github.global.ssl.fastly.net
五、scp命令注意事项
- 在使用scp命令的时候,保证目的位置没有重名的文件。
六、有线接路由器,无线开monitor
- 打开monitor模式之后,连接的WiFi会断掉;树莓派的wifi被monitor占用了,树莓派跟路由器网线链接,在一个冲突域。
总结与建议
1、为什么只有少数使用过时通信标准(如 802.11n)的商用 Wi-Fi 设备能够访问 CSI 数据?
答:在商用Wi-Fi 设备中,用户端并不总是提供 CSI。这是因为大多数 Wi-Fi 芯片组制造商将 CSI 访问作为私有功能保留,并且不向消费者提供专用功能接口。但灵活性非常有限,例如Intel 5300 和Atheros AR9580 Wi-Fi 设备、RT-AC86U安装nexmon工具等。
2、复现sencom这篇文章是向原作者(何映晖)私信,他给的建议是:
答:我这边的建议是,你可以使用西电蒋志平老师开发的PicoScenes平台,网卡选用ax200或者ax210,这个网卡也支持在monitor模式下采集CSI。我之前使用nexmon csi tool就是因为当时没有蒋老师的平台,但又希望能够在monitor模式下采集csi,所以不得不用。做的修改也是为了提取一些Wi-Fi包头信息。蒋志平老师的PicoScenes平台相对而言,更加完善,上手更加简单,也已经提供了一些包头信息。我相信你用这个平台会更容易上手。
另外,有关实现流程,我不太清楚你说的流程是哪个。如果是硬件搭建,可以参考蒋老师的PicoScenes,如果你要用nexmon csi tool,那就参考相应nexmon的github。如果是系统搭建,我们在文章中给出了完善的系统图,按照相应的流程走就可以了。
ps:非常感谢何师兄的回复。