nexus5获取csi数据

发布时间 2023-04-05 19:27:59作者: 祈愿树下

记录一下在阅读WiFi感知系列文章中对csi(信道状态信息)的获取过程

收集设备:nexus5   安卓版本6.0.1   版本号M4B302    root过

系统:虚拟机Ubuntu18.0.4

发送设备:小米路由器4C(R4CM){准备用别的路由器再测测,这2.4g的路由器收到的数据很怪}

 

  1. 首先sudo su获取权限,进入根目录,输入以下依赖安装:
    apt-get install git gawk qpdf adb flex bison
  2. 64位操作系统安装库
    sudo dpkg --add-architecture i386
    sudo apt-get update
    sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
  3.  获取nexmon包,这边推荐在Gitee上直接搜nexmon就会发现一些快捷的项目包镜像。比从github上下载快多了。
    git clone https://gitee.com/mirrors_seemoo-lab/nexmon.git
  4. 安装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

     

    然后vi打开/etc/profile/,在最底下添加环境变量
    export NDK_ROOT=/opt/ndk/android-ndk-r11c
    export PATH=$NDK_ROOT:$PATH
  5.  刷新环境变量,赋权限
    source /etc/profile
    chmod a+x -R andriod-ndk-r11c

    此时输入ndk-build -v可以检查是否成功。

  6. 进入nexmon文件执行命令
    source setup_env.sh
    //然后make
    make

     

    接着进入utilities文件夹继续make
  7. 连接手机,允许USB调试,然后执行 make install
  8. 进入pathes/bcm4339/6_37_34_43/路径下,下载nexmon_csi
    git clone https://gitee.com/hjqsuccess/nexmon_csi.git

    进入nexmon_csi,给手机安装补丁,make install-firmware

  9. cd utils/makecsiparams,执行 make 配置提取器makecsiparams
  10. 通过命令
    ./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地址和你用命令收显示的可能差一两位,自己注意)

  11. 重开一个客户端进入手机端
    adb shell
    su
    ifconfig wlan0 up

    打开wlan0

  12. 设置nexutil的参数
    nexutil -Iwlan0 -s500 -b -l34 -vm+IBEQGIAgAAESIzRFWqu6q7qrsAAAAAAAAAAAAAAAAAAA==
    

    -v后面是之前生成的代码

  13. 设置成monitor模式
    nexutil -Iwlan0 -m1
    
  14.  收集数据
    tcpdump -i wlan0 -v dst port 5500 -w /sdcard/1.pcap -c 1000
    

    1000是收集1000个数据包,放在sdcard的里面,名字自己设置。前面的参数我都看过了,可以不用调整。