首页 > 其他分享 >AC86U nexmon CSI 提取

AC86U nexmon CSI 提取

时间:2024-03-23 14:12:22浏览次数:31  
标签:nexmon csi AC86U nexutil https eth6 CSI jffs

前期准备

  1. AC86U 固件版本:3.0.0.4.382_15098
    (曾使用过3.0.0.4.384_81992,虽然自带iperf3方便,但insmod内核有问题)
  2. 虚拟机: Ubuntu 16.04 LTS 64位

硬件准备

进入主页 http://router.asus.com/ 设置账号和密码
账号名建议设置为admin(nexmon代码中默认使用admin ssh连接)

无线网络设置遵循:静态原则(关闭smartconnect,确定信道,确定带宽等等,便于分析)

同时需要开启ssh服务(连接的账号和密码为主页的后台管理账号和密码)

nexmon_csi固件安装

(期间任何步骤出错,请仔细查明或查看本文最后的“常见问题”)

  1. 安装一些依赖项:
    sudo apt-get install git gawk qpdf flex bison

  2. 安装i386库(仅64位 Ubuntu需要):

点击查看代码
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386
  1. 克隆 nexmon 基础存储库:
    git clone https://github.com/seemoo-lab/nexmon.git

  2. cd当前目录到之前克隆的 nexmon 目录并执行source setup_env.sh以准备环境变量

  3. 运行make以从原始固件中提取 ucode、templateram 和 flashpatches

  4. cd到 patch/bcm4366c0/10_10_122_20/ 并克隆此存储库以安装nexmon_csi:
    git clone https://github.com/seemoo-lab/nexmon_csi.git

  5. 用任一个LAN口连接到你的AC86U(安装nexmon_csi固件后会启动新的dhd.ko,此时默认将eth5、eth6也就是2.4G和5G无线网络关闭掉,用无线连接此步骤会中断)

  6. 进入创建的子目录 nexmon_csi 并运行 make install-firmware REMOTEADDR=<ip address of your rt-ac86u>
    编译的固件补丁并将其安装到您的 RT-AC86U 路由器

至此,固件安装完毕

编译相关测试软件放入

由于路由器内存小,无过多动态库,默认使用交叉编译静态文件送入到其中使用
架构为aarch64

nexutil(关键)

  1. 克隆 aarch64 工具链存储库:git clone https://github.com/RMerl/am-toolchains.git

  2. 设置编译的一些环境变量:
    export AMCC=$(pwd)/am-toolchains/brcm-arm-hnd/crosstools-aarch64-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin/aarch64-buildroot-linux-gnu-
    export LD_LIBRARY_PATH=$(pwd)/am-toolchains/brcm-arm-hnd/crosstools-aarch64-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/lib
    (请再三确认路径是否正确)

  3. cd返回nexmon存储库根目录,编译并安装nexutil:

点击查看代码
cd utilities/libnexio
${AMCC}gcc -c libnexio.c -o libnexio.o -DBUILD_ON_RPI
${AMCC}ar rcs libnexio.a libnexio.o
cd ../nexutil
echo "typedef uint32_t uint;" > types.h
sed -i 's/argp-extern/argp/' nexutil.c
${AMCC}gcc -static -o nexutil nexutil.c bcmwifi_channels.c b64-encode.c b64-decode.c -DBUILD_ON_RPI -DVERSION=0 -I. -I../libnexio -I../../patches/include -L../libnexio/ -lnexio
scp nexutil admin@<ip address of your rt-ac86u>:/jffs/nexutil
ssh admin@< ip address of your rt-ac86u> "/bin/chmod +x /jffs/nexutil"

iperf3(次要,可选)

  1. 下载静态aarch64架构已编译好的iperf3

  2. 与nexutil同理,
    scp iperf3 admin@<ip address of your rt-ac86u>:/jffs/iperf3
    都丢入jffs目录中使用

tcpdump(重要)

  1. 下载静态aarch64架构已编译好的tcpdump

  2. 与nexutil同理,
    scp tcpdump admin@<ip address of your rt-ac86u>:/jffs/tcpdump
    都丢入jffs目录中使用

使用nexmon_csi

  1. (虚拟机完成)cd至nexmon_csi下的utils/makecsiparams/makecsiparams,使用
    ./makecsiparams -c 161/80 -C 1 -N 1 -m <MAC address of your rt-ac86u> -b 0x88
    这句话的意思是生成在161信道,80Hz,收发天线1*1下的开头为0x88的编译码

例如,m+MBEQGIAQDUXWR6rNQAAAAAAAAAAAAAAAAAAAAAAAAAAA==

(以下均用路由器完成)

  1. 配置提取器
    nexutil -Iwlan0 -s500 -b -l34 -vm+IBEQGIAgAAESIzRFWqu6q7qrsAAAAAAAAAAAAAAAAAAA==
    wlan0为你需要提取的网卡,一般eth5为2.4GHz,eth6为5Ghz

  2. 确保网卡打开并调为monitor模式,此时将丢失SSID无法用无线网连接
    ifconfig查看网卡打开情况
    wl -i eth6 up
    wl -i eth6 radio on
    wl -i eth6 chanspec 161/80
    wl -i eth6 monitor 1
    ifconfig eth6 up

  3. 使用tcpdump抓包并保存
    tcpdump -i eth6 -v dst port 5500 -w /sdcard/1.pcap -c 1000

至此已经完成csi使用,后续的分析可使用CSIKIT快速分析和画图

常见问题

  1. 在make install等有相关ssh连接时后显示认证失败,大概率因为Ubuntu不会自动更新公私钥文件,而你又修改了AC86U的ssh内容(例如reset后)
    ssh-keygen -R <ip address of your rt-ac86u>

  2. _nex_driver_io: error ret=-1 errno=95 #2
    主要因为重启路由器后,路由器默认加载原本的dhd.ko,需要进入到jffs中
    重新加载nexmon的dhd.ko
    rmmmod dhd
    insmod /jffs/dhd.ko
    使用后eth5,eth6会被关闭,需要重新打开

  3. insmod /jffs/dhd.ko卡住不动或报错
    一个是固件版本不支持或安装了nexmon固件后修改路由器设置而导致(安装好后请勿随意修改无线设置)
    请reset后重新进行以上步骤

参考

https://blog.csdn.net/LonlyForever/article/details/133325497
https://github.com/seemoo-lab/nexmon_csi/issues/17
https://github.com/seemoo-lab/nexmon_csi/issues/34
https://github.com/userdocs/iperf3-static
https://github.com/seemoo-lab/nexmon_csi/files/5635574/tcpdump.zip

标签:nexmon,csi,AC86U,nexutil,https,eth6,CSI,jffs
From: https://www.cnblogs.com/iC0rner/p/18091046

相关文章

  • 论文研读(含2G的CSI数据集+导入数据的代码):CSI-Former: Pay More Attention to Pose Est
    论文概述本文提出了一种新的基于WiFi的姿态估计方法。基于WiFi的信道状态信息(CSI),提出了一种新的结构CSI-former。为了评估CSI-former的性能,本文建立了一个新的数据集Wi-Pose。该数据集由5GHzWiFiCSI、相应的图像的骨架点注释组成。背景Transformer由于其强大的多头注意力......
  • 新质生产力人工智能+系列2:6G时代AI研究-CSI压缩反馈(含任务、数据集、代码、解题思路PP
            在新质生产力高质量发展的要求下,中国移动在“人工智能+”和“数据要素X”方面不断发力,持续发布高质量电信数据集。围绕网元智能、运维智能、服务智能三大方向建设,涵盖无线信道、基站、云网、核心网、哑资源等多领域,支持感知、诊断、预测、决策、大模型等多类......
  • CSIE3310操作系统线程包问题
    机器问题1-线程包CSIE3310-操作系统:100TA时间截止日期前10:00-12:00,中船重工R428号楼目录1摘要12环境设置23第1部分(60分)23.1功能说明。2.3.2样本输出。3.4第2部分(40分)44.1功能说明。4.4.2提醒。4.4.3样本输出。5.5运行公共测试用例56提交和分级56.1源代码。5.6.2解压缩后的文件夹......
  • 在Linux中,如何挂载远程NFS共享或iSCSI目标?
    1.挂载远程NFS共享在Linux中挂载远程NFS(NetworkFileSystem)共享通常涉及以下步骤:服务器端配置:配置NFS服务器,编辑/etc/exports文件来定义要共享的目录以及访问权限。例如:#/etc/exports示例/path/to/shared/dirclient-hostname(rw,sync,no_subtree_check)更新NF......
  • LT6911UXE PIN对PIN LT6911UXC HDMI桥接到MIPIDSI/CSI/2 PORT LVDS,支持标准的4K60HZ分
    LT6911UXE描述: LT6911UXE是一款高性能HDMI2.0到MIPIDSI/CSI转换器,可用于VR、智能手机和显示器应用。HDMI2.0输入支持高达6Gbps的数据速率,这为60Hz的视频提供了足够的带宽。同时,还支持HDCP2.3进行数据解密。对于MIPIDSI/CSI输出,LT6911UXE具有可配置的单端口或双端口MIPIDSI......
  • QT 自定义QGraphicsItem 缩放后旋转 图形出现漂移问题
    实现自定义QGraphicsItem缩放和旋转时,遇到了这样一个问题:将item旋转一个角度,然后拖拽放大,再次进行旋转时图像会发生漂移。原本以为是放大后中心点位置没有改变,导致旋转时以原中心的旋转出现了偏移,但是重新设置旋转中心setTransformOriginPoint(rect.center());并没有起作用,图像......
  • IfcSIPrefix
    IfcSIPrefixTypedefinitionNOTE DefinitionaccordingtoISO/CD10303-41:1992AnSIprefixisthenameofaprefixthatmaybeassociatedwithanSIunit.ThedefinitionsofSIprefixesarespecifiedinISO1000(clause3).NOTE Theprefixdefinesmultip......
  • IfcSIUnitName
    IfcSIUnitNameTypedefinitionNOTE DefinitionaccordingtoISO/CD10303-41:1992AnSIunitnameisthenameofanSIunit.ThedefinitionsofthenamesofSIunitsarespecifiedinISO1000(clause2).NOTE Typeadaptedfrom si_unit_name definedinISO1......
  • Linux系统中的lsmod、lsof、lspci、lsscsi命令及实例
    作为运维同学怎能不知道Linux系统中的lsmod、lsof、lspci、lsscsi命令呢,今天就来盘一盘她及实例。1、lsmod命令Linuxlsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务......
  • 如何手动干掉后台启动的docsify呢?
    正常情况下,我们启动后,一般不会主动去干掉docsify服务的,但是发现再次执行docsifyserve命令,会新指定一个端口号,而不是默认的3000端口,为了写前面的文章,需要演示附图,我只能想办法干掉后台启动的dicsify服务,但是总不能直接电脑关机来干掉docsify服务吧(虽然我确实这样干了哈,但是还是想......