记录一下在阅读WiFi感知系列文章中对csi(信道状态信息)的获取过程
收集设备:nexus5 安卓版本6.0.1 版本号M4B302 root过
系统:虚拟机Ubuntu18.0.4
发送设备:小米路由器4C(R4CM){准备用别的路由器再测测,这2.4g的路由器收到的数据很怪}
- 首先sudo su获取权限,进入根目录,输入以下依赖安装:
apt-get install git gawk qpdf adb flex bison
- 64位操作系统安装库
sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
- 获取nexmon包,这边推荐在Gitee上直接搜nexmon就会发现一些快捷的项目包镜像。比从github上下载快多了。
git clone https://gitee.com/mirrors_seemoo-lab/nexmon.git
- 安装Andriod NDK r11c,类似于驱动
cd /opt/ mkdir ndk cd ndk //下载,如果网络慢也可以去gitee上找 wget -c https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip //解压 apt-get install fastjar jar xvf android-ndk-r11c-linux-x86_64.zip
export NDK_ROOT=/opt/ndk/android-ndk-r11c export PATH=$NDK_ROOT:$PATH
- 刷新环境变量,赋权限
source /etc/profile chmod a+x -R andriod-ndk-r11c
此时输入ndk-build -v可以检查是否成功。
- 进入nexmon文件执行命令
source setup_env.sh //然后make make
- 连接手机,允许USB调试,然后执行 make install
- 进入pathes/bcm4339/6_37_34_43/路径下,下载nexmon_csi
git clone https://gitee.com/hjqsuccess/nexmon_csi.git
进入nexmon_csi,给手机安装补丁,make install-firmware
- cd utils/makecsiparams,执行 make 配置提取器makecsiparams
- 通过命令
./makecsiparams -c 157/80 -C 1 -N 1 -m 00:11:22:33:44:55
生成一段代码(后面需要复制用),157是信道,80是带宽,根据自己的设置(我的是12/20,还测试了12/40的,80带宽的也测试过),m后面是路由器mac地址。(注意:一开始我怎么也收集不到数据,后来发现是mac地址的问题,实际的mac地址和你用命令收显示的可能差一两位,自己注意)
- 重开一个客户端进入手机端
adb shell su ifconfig wlan0 up
打开wlan0
- 设置nexutil的参数
nexutil -Iwlan0 -s500 -b -l34 -vm+IBEQGIAgAAESIzRFWqu6q7qrsAAAAAAAAAAAAAAAAAAA==
-v后面是之前生成的代码
- 设置成monitor模式
nexutil -Iwlan0 -m1
- 收集数据
tcpdump -i wlan0 -v dst port 5500 -w /sdcard/1.pcap -c 1000
1000是收集1000个数据包,放在sdcard的里面,名字自己设置。前面的参数我都看过了,可以不用调整。