记录一下踩坑历史,折磨了我接近半年。
项目地址
设备要求:nexus 6P,手机系统为Android8.0.0(一般在购买二手机器时可以让卖家帮忙刷机并root),虚拟机:Ubuntu16.04 64位(下载地址)
以下将开始固件安装与数据采集

固件安装

对应项目地址中的Getting Started

step 1:在VMware下安装好Ubuntu16.04 64位虚拟机

(不需要像项目里面一样安装xubuntu16.04)

step 2:打开终端(ctrl+alt+T)并安装一些依赖

sudo apt-get install git gawk qpdf adb flex bison

step 3:安装i386库

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

step 4:克隆nexmon项目:

git clone https://github.com/seemoo-lab/nexmon.git

step 5:下载安装Android NDK r11c(仅支持此版本),并配置环境变量

  1. 在终端进入管理员模式,然后打开并创建文件夹/opt/ndk
sudo su
cd /opt/
mkdir ndk
cd ndk
  1. 下载ndk开发包
wget -c https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip
  1. 解压
apt-get install fastjar
jar xvf android-ndk-r11c-linux-x86_64.zip
  1. 打开/etc/profile文件
apt-get install vim
vim /etc/profile
  1. 按i开始编辑,在文件末尾添加以下环境变量:
export NDK_ROOT=/opt/ndk/android-ndk-r11c
export PATH=$NDK_ROOT:$PATH

这里输入完后按ESC后,再依次输出":wq"就可以保存退出vim了

  1. 刷新环境变量
source /etc/profile
  1. 给文件赋予执行权:
chmod a+x -R android-ndk-r11c
  1. 此时在任意路径都可以执行:
ndk-build -v

至此ndk就配置完毕,但是建议把上述的环境变量再添加一份到/nexmon/setup_env.sh文件的末尾,如果不这样做,则需要每次打开虚拟机就手动刷新一次ndk的环境变量:source /etc/profile

step 6:刷新nexmon的环境变量

cd /home/user/nexmon
source setup_env.sh

step 7:执行make指令

make
cd utilities
make

step 8:给手机安装固件

连接手机,并允许此计算机进行调试

make install

step 9:克隆nexmon_csi项目

进入nexmon/patches/bcm4358/7_112_300_14_sta/文件夹并克隆nexmon_csi项目:

cd nexmon/patches/bcm4358/7_112_300_14_sta/
git clone https://github.com/seemoo-lab/nexmon_csi.git

step 10:给手机安装nexmon_csi固件

注意!!!这里一定要按照特定版本的固件,是2020年6月发布的,编号为7e3f9f720e1eb12ef11afd855515981d5a3b715b。我这里实测只有这个补丁可以同时获得CSI和RSSI数据,不然CSI数据就会像这样奇奇怪怪:

血泪教训,真的,千万千万要用这个版本的固件。
以下命令第二行就是回滚到这个对应版本:

cd nexmon_csi
git checkout 7e3f9f720e1eb12ef11afd855515981d5a3b715b
make install-firmware

到这一步手机上要安装的东西都弄好了。

如果你对RSSI数据没有需求,那你可以尝试更旧的版本,不能比这个版本新,不然很有可能出现和我一样的问题。

step 11:生成makecsiparams的可执行文件

cd utils/makecsiparams
make

数据采集

step 1:获得一连串特定编码

./makecsiparams -c 157/80 -C 1 -N 1 -m 00:11:22:33:44:55

-c后面的是157信道和80MHz频率,可以在路由器的管理员界面进行设置的,-m后面的是路由器的mac地址,注意5g和2.4g的mac地址是不同的。

step 2:进入手机进行设置

adb shell

以下就进入手机的命令行了,首先输入指令进入管理员模式:

su

打开wlan:

ifconfig wlan0 up

设置nexutil的参数:

nexutil -Iwlan0 -s500 -b -l34 -vm+IBEQGIAgAAESIzRFWqu6q7qrsAAAAAAAAAAAAAAAAAAA==

上述-v后面接的编码就是之前生成的特定编码

然后设置成monitor模式就行了:

nexutil -Iwlan0 -m1

step 3:利用手机采集数据

tcpdump -i wlan0 -v dst port 5500 -w /sdcard/1.pcap -c 1000

上述指令-w后面的是指定的存储地址,你可以改成手机中的任意地址。-c后面的是采集的数据帧的个数。

采集到的数据幅度图长这样:

如果在测量过程中进行拿起手机又放下的动作连续两次,就会得到这样的图:

感觉还是很不错的!

总结

这玩意对我这种不怎么用Linux的人简直是折磨。安装固件的过程总是出现莫名其妙的bug。愿大家不要在这个上面踩雷了。但是nexmon固件的数据还是很不错的,比Intel 5300要好很多。

使用nexus 6P同时获取CSI和RSSI数据(保姆级教程)相关推荐

  1. Maix Bit K210人脸识别(内有获取机器码步骤)【保姆级教程】

    上一篇 MaixPy IDE Maix Bit K210定时器 介绍 在一张图片中找出人脸, 并且框出人脸,即知道脸的位置和大小,对人脸进行检测与识别. 方法 一种是采用LBP特征进行人脸识别,可进行 ...

  2. 获取微信小程序页面路径【保姆级教程】

    1.进入微信小程序公众平台,登录账号,点击右上角生成小程序码 微信公众平台 2.输入小程序名称或者小程序的APPID或者原始ID,输入完成,然后点击搜索,然后下一步    3.输入自己的微信号之后,点 ...

  3. 【UE Unreal Camera】【保姆级教程二】手把手教你通过UE获取摄像头帧数据

    概述   在UE 摄像头教程一中,我们已经通过Unreal自带的媒体播放器打开了摄像头,并且将摄像头的数据展示在了游戏画面中.当然这只是最基本的功能,一般情况下,我们需要对摄像头的画面数据进行处理,比 ...

  4. 利用Python获取excel的数据并绘制直方图(保姆级教程,含多组样例)

    学习样例 开发工具:python3.8.pycharm2020.3.3 开发过程 分析数据 总共三列数据,分别是年份,月份及对应的客流量,如果将数据可视化,我们可以将年份作为横坐标,可以将客流量总和作 ...

  5. uniapp 微信小程序获取openid(保姆级教程超清晰)

    当需要openid的时候,就看看本仙女的这篇博客✨ 文章建立在你有appid(也就是说微信公众平台你有账号)的基础上,话不多说,let's start ! Step 1 :https://mp.wei ...

  6. 零星PCB打板|开源广场|每月2张|等你来撸|保姆级教程:嘉立创免费PCB打样获取攻略

    目录 缘由 软件:嘉立创EDA专业版(视情况下载,非必需) 软件:嘉立创PC端下单助手(领优惠券) 优惠券在这里: 嘉立创PCB免费打样新规则解读 6层板免费打样 免费订单可指定 券的使用期限 免杂色 ...

  7. 别找了,小程序实现isbn扫码获取图书信息2022最新可用(保姆级教程内附接口)

    关注.收藏.点赞3连

  8. Nexus 6P获取CSI(含刷机、root)

    项目地址 设备要求:型号:Nexus 6P,系统:Android8.0.0 实验路由器:TPL-LINK:TL-WDR4310(非必需) 准备工作 设备相关: 目前nexus 6p仅支持在系统为And ...

  9. 渗透测试|移动端 nexus 6p 刷入8.1和获取root权限(magisk)

    作者: Overture 免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 前言 工作内容中有很多需要抓apk包的情况,之前遇到过不少有root检测.ssl pinn ...

最新文章

  1. asp用于取代什么技术_.NET的未来:关于.NET5,每个.Net开发人员必须知道什么
  2. Google JAVA编程风格
  3. 自学Zabbix3.0版本以上资产清单inventory
  4. 泽西岛客户:测试外部呼叫
  5. lEO数值资产系统某平台c2c币数值合约交易平台自动撮合松机器人功能
  6. Android开发环境搭建Eclipse+JDK+ADT+AVD(系列一)
  7. MySQL定时备份数据库方案(全库备份)
  8. python color属性_Python turtle.color方法代码示例
  9. python调用函数获取最开始的异常_Python使用sys.exc_info()方法获取异常信息
  10. SQL那些事儿(七)--oracle表空间、用户查看基本语句
  11. C语言函数库之字符串连接函数(string.h)
  12. librdkafka 封装的C++类
  13. Java程序员怎样考察报表工具的开发效率
  14. SpringBoot中使用Aspect实现切面,超详细
  15. 1133_SICP开发环境搭建
  16. 5g通用模组是什么_5G通用模组需要做哪些温湿度可靠性测试?
  17. sdcard里边的东西能删除吗_手机内存中有一个sdcard文件夹删除不了
  18. Pycurl的简单使用与对比
  19. Android图片加载框架最全解析(五)
  20. 微信又更新了,这次新增了一个大家喜闻乐见的新功能?

热门文章

  1. 常用 flash CPU占用和内存问题优化
  2. PDF阅读器帮你解决文档字体显示难看的问题
  3. 【HTML——网页端“超级玛丽”】(游戏效果+代码)
  4. 转载:Java并发编程:volatile关键字解析
  5. 安信可推荐 | 安信可ESP32-S3系列模组和ESP8266系列模组硬件参数对比。
  6. RL:prat1:key_concepts_in_RL强化学习
  7. 算法 | 输出扑克牌中的最大5连牌/6连牌/7连牌顺子 - Java实现
  8. 没有电商巨头有钱,又要挑战双十一流量高峰,一次低成本、高质量的大促是如何做到的?
  9. arm上的webdav配置
  10. 机器学习——XGboost进行分类预测,模型优化的实战