记录一下踩坑历史,折磨了我接近半年。
项目地址
设备要求:nexus 6P,手机系统为Android8.0.0(一般在购买二手机器时可以让卖家帮忙刷机并root),虚拟机:Ubuntu16.04 64位(下载地址)
以下将开始固件安装与数据采集
对应项目地址中的Getting Started
(不需要像项目里面一样安装xubuntu16.04)
sudo apt-get install git gawk qpdf adb flex bison
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
git clone https://github.com/seemoo-lab/nexmon.git
sudo su
cd /opt/
mkdir ndk
cd ndk
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
apt-get install vim
vim /etc/profile
export NDK_ROOT=/opt/ndk/android-ndk-r11c
export PATH=$NDK_ROOT:$PATH
这里输入完后按ESC后,再依次输出":wq"就可以保存退出vim了
source /etc/profile
chmod a+x -R android-ndk-r11c
ndk-build -v
至此ndk就配置完毕,但是建议把上述的环境变量再添加一份到/nexmon/setup_env.sh文件的末尾,如果不这样做,则需要每次打开虚拟机就手动刷新一次ndk的环境变量:source /etc/profile
cd /home/user/nexmon
source setup_env.sh
make
cd utilities
make
连接手机,并允许此计算机进行调试
make install
进入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
注意!!!这里一定要按照特定版本的固件,是2020年6月发布的,编号为7e3f9f720e1eb12ef11afd855515981d5a3b715b。我这里实测只有这个补丁可以同时获得CSI和RSSI数据,不然CSI数据就会像这样奇奇怪怪:
血泪教训,真的,千万千万要用这个版本的固件。
以下命令第二行就是回滚到这个对应版本:
cd nexmon_csi
git checkout 7e3f9f720e1eb12ef11afd855515981d5a3b715b
make install-firmware
到这一步手机上要安装的东西都弄好了。
如果你对RSSI数据没有需求,那你可以尝试更旧的版本,不能比这个版本新,不然很有可能出现和我一样的问题。
cd utils/makecsiparams
make
./makecsiparams -c 157/80 -C 1 -N 1 -m 00:11:22:33:44:55
-c后面的是157信道和80MHz频率,可以在路由器的管理员界面进行设置的,-m后面的是路由器的mac地址,注意5g和2.4g的mac地址是不同的。
adb shell
以下就进入手机的命令行了,首先输入指令进入管理员模式:
su
打开wlan:
ifconfig wlan0 up
设置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
上述指令-w后面的是指定的存储地址,你可以改成手机中的任意地址。-c后面的是采集的数据帧的个数。
如果在测量过程中进行拿起手机又放下的动作连续两次,就会得到这样的图:
感觉还是很不错的!
这玩意对我这种不怎么用Linux的人简直是折磨。安装固件的过程总是出现莫名其妙的bug。愿大家不要在这个上面踩雷了。但是nexmon固件的数据还是很不错的,比Intel 5300要好很多。