👁 2933
之前那篇 Nokia Beacon 10 WIFI6E BE 另类emmc 主要是写拆机和找 eMMC 的过程。那时候资料少,官方页面也只是贴了一堆规格,真正有用的内部结构还没展开。
这次把 UserData.bin 读出来之后,事情就清楚多了:这台 Nokia Beacon 10 不是普通路由器那种“一个 kernel、一个 rootfs、几个配置区”的简单布局,而是 Qualcomm IPQ9574 平台上比较完整的一套 eMMC GPT 分区方案(同平台的还有 Xfinity XER5,那边拆得更细,GPT 44 分区表都整理出来了),启动链、Wi-Fi 固件、A/B 系统、Nokia 出厂信息区、密码安全区全都在 user area 里。
本文已经做脱敏处理。后台明文密码、启动密码、完整哈希、完整 MAC、序列号、随机种子这些能直接复用的信息不公开,只讲结构和算法。

先说硬件:这机器不是小玩具
Nokia Beacon 10 官方定位是 Wi-Fi 6E 三频 Mesh 网关,规格看着确实挺高。原文里复制的英文官方介绍就不放了,压成能看懂的硬件信息大概是这样:
| 项目 | 信息 |
|---|---|
| 机型 | Nokia WiFi Beacon 10 |
| 定位 | Wi-Fi 6E 三频家庭网关 / Mesh Beacon |
| 无线规格 | AX10200 / AXE10200 级别 |
| SoC / 平台 | Qualcomm IPQ9574LA / IPQ9574 |
| 系统架构 | OpenWrt ipq95xx/generic,aarch64 |
| 2.4 GHz | 802.11b/g/n/ax,2×2 MIMO |
| 5 GHz | 802.11a/n/ac/ax,4×4 MIMO |
| 6 GHz | 802.11a/n/ac/ax,4×4 MIMO |
| 信道宽度 | 支持 160 MHz |
| WAN | 1 个 1G/2.5G/5G/10G Base-T RJ45 |
| LAN | 1 个 2.5G LAN + 2 个千兆 LAN |
| Mesh | Nokia WiFi / EasyMesh 体系,最多可扩展多台 Beacon |
| 管理方式 | Nokia WiFi App、本地 Web、内部 API |
| 存储 | eMMC,启动和系统分区在 user area GPT 内 |
| 机身尺寸 | 约 220 x 101 x 188 mm |
| 重量 | 约 1.66 kg |
这规格放在家用 Mesh 里不算低:10G WAN、2.5G LAN、三频 Wi-Fi 6E、6GHz 4×4,再加上 IPQ9574LA 这种平台,明显是运营商高端网关那一路,不是低端 AP 换壳。
原文里折腾最大的问题其实是 eMMC 封装。它不是常见那种一眼就能套上读卡座的尺寸,拆屏蔽罩找半天,焊下来还得想办法适配编程器。现在镜像读出来之后,反而能解释为什么它不像普通 SPI NAND/NOR 路由器那样简单:整个系统就是按 eMMC + GPT 的方式组织的。
读出来的不是普通数据盘
这次主要分析对象是:
UserData.bin
基础信息:
image_size = 1954545664 bytes
sectors = 3817472
sector = 512 bytes
partition = GPT
disk_guid = 98101b32-bbe2-4bf2-a06e-2bb33d000c20
它不是 Windows 可以直接双击打开的 FAT/NTFS 数据盘,而是 eMMC user area 的完整镜像。里面有 GPT 分区表,分区内容包括 Qualcomm 启动链、U-Boot、Wi-Fi 固件、A/B rootfs、Nokia RI 出厂信息、EXTFS 安全 KV、日志和配置区。
顺手也看了 boot1.bin 和 boot2.bin:
boot1.bin: size=4194304, nonzero=0, 全部为 0x00
boot2.bin: size=4194304, nonzero=0, 全部为 0x00
也就是说,这台机器的启动内容并不放在 eMMC boot partition 里,而是放在 user area 的 GPT 分区中。真正该看的,是 0:SBL1、0:QSEE、0:APPSBL、0:HLOS、rootfs 这些分区。
系统底子:OpenWrt 19.07,但外面套 Nokia 管理体系
从启动链、U-Boot 环境、rootfs 字符串里能确认这些信息:
SoC/platform: Qualcomm IPQ9574LA / IPQ9574
OpenWrt target: ipq95xx/generic
Architecture: aarch64_cortex-a73_neon-vfpv4
Device mnemonic: Beacon 10
Vendor prompt: NOKIA >
A/B 两套 rootfs 版本也能看到:
rootfs:
OpenWrt 19.07-SNAPSHOT r90-16bba972a
target ipq95xx/generic
rootfs_1:
OpenWrt 19.07-SNAPSHOT r156-b956684dd
target ipq95xx/generic
所以它底层还是 OpenWrt,外面再套 Nokia 自己的 Web、App、Corteca 管理体系。固件里能看到旧 CGI 和新 Web 前端同时存在:
/webs/login_web_app.cgi
/webs/login_app.cgi
/webs/web_whw/index.html
/webs/web_whw/*.js
日志里还有这种内部 API 访问痕迹:
nginx -> http://127.0.0.1:81/api/v1.0/public/device
这类结构挺典型:底层 OpenWrt 负责系统和驱动,Nokia 再做一层运营商设备管理、App 管理、本地 Web 和云端能力。
U-Boot 环境里能看到什么
U-Boot 环境变量里有串口、恢复网络、启动槽和安全启动相关字段。敏感字段这里打码:
baudrate=115200
bootcmd=bootipq
bootdelay=2
bootargs=console=ttyMSM0,115200n8
ethaddr=48:41:7B:**:**:**
eth1addr=48:41:7B:**:**:**
ipaddr=192.168.10.10
serverip=192.168.10.1
netmask=255.255.255.0
machid=8050101
secboot=2
factory_reset_flag=0
boot_fail_count=1
mount_backup_fail=0
mount_configs_fail=0
mount_logs_fail=1
mount_opt_fail=1
img_version0=3TN00367IJKL03
img_version1=3TN00367HJLL96
secboot=2 说明安全启动相关机制是开着的;img_version0 和 img_version1 则对应双系统槽。恢复 IP 是 192.168.10.10 / 192.168.10.1 这一组,后面如果做串口或 U-Boot 网络恢复,这些字段有参考价值。
分区表:一眼就是 Qualcomm + Nokia 风格
完整 GPT 分区表如下:
| # | 分区名 | 容量 | 类型 | 作用说明 |
|---|---|---|---|---|
| 01 | 0:SBL1 |
1.00 MiB | ELF | Qualcomm 一级启动链 |
| 02 | 0:SBL1_1 |
1.00 MiB | ELF | SBL1 备份槽 |
| 03 | 0:BOOTCONFIG |
0.25 MiB | data | 启动配置 |
| 04 | 0:BOOTCONFIG1 |
0.25 MiB | data | 启动配置备份 |
| 05 | 0:QSEE |
1.75 MiB | ELF | Qualcomm 安全执行环境 |
| 06 | 0:QSEE_1 |
1.75 MiB | ELF | QSEE 备份槽 |
| 07 | 0:DEVCFG |
0.25 MiB | ELF | 设备配置 |
| 08 | 0:DEVCFG_1 |
0.25 MiB | ELF | DEVCFG 备份槽 |
| 09 | 0:APDP |
0.25 MiB | ELF | Qualcomm 调试/策略组件 |
| 10 | 0:APDP_1 |
0.25 MiB | ELF | APDP 备份槽 |
| 11 | 0:TME |
0.50 MiB | ELF | Qualcomm 安全/管理组件 |
| 12 | 0:TME_1 |
0.50 MiB | ELF | TME 备份槽 |
| 13 | 0:RPM |
0.25 MiB | ELF | Resource Power Manager 固件 |
| 14 | 0:RPM_1 |
0.25 MiB | ELF | RPM 备份槽 |
| 15 | 0:CDT |
0.25 MiB | CDT | 配置数据表 |
| 16 | 0:CDT_1 |
0.25 MiB | CDT | CDT 备份槽 |
| 17 | 0:APPSBLENV |
0.25 MiB | U-Boot env | U-Boot 环境变量 |
| 18 | 0:APPSBL |
2.00 MiB | U-Boot ELF | U-Boot 主槽 |
| 19 | 0:APPSBL_1 |
2.00 MiB | U-Boot ELF | U-Boot 备份槽 |
| 20 | 0:ART |
0.50 MiB | calibration/data | 无线校准 / 出厂数据 |
| 21 | 0:ETHPHYFW |
0.50 MiB | zero sample | 以太网 PHY 固件区,样本显示全零 |
| 22 | 0:WIFIFW |
5.00 MiB | squashfs | Wi-Fi 固件主槽 |
| 23 | 0:WIFIFW_1 |
5.00 MiB | squashfs | Wi-Fi 固件备份槽 |
| 24 | 0:HLOS |
10.00 MiB | ELF/kernel | Linux kernel / HLOS 主槽 |
| 25 | 0:HLOS_1 |
10.00 MiB | ELF/kernel | HLOS 备份槽 |
| 26 | rootfs |
128.00 MiB | squashfs | OpenWrt rootfs 主槽 |
| 27 | rootfs_1 |
128.00 MiB | squashfs | OpenWrt rootfs 备份槽 |
| 28 | RI |
1.00 MiB | Nokia RI KV | 出厂标签、型号、地区、LabelCode |
| 29 | EXTFS |
6.00 MiB | Nokia security KV | Web 密码哈希、随机变量、安全 KV |
| 30 | log |
64.00 MiB | ext filesystem | 日志分区 |
| 31 | cfg |
64.00 MiB | ext filesystem | 配置主分区 |
| 32 | cfg_1 |
64.00 MiB | ext filesystem | 配置备份分区 |
| 33 | 0:APPSBLENV_1 |
0.25 MiB | U-Boot env backup | U-Boot 环境变量备份 |
| 34 | opt |
512.00 MiB | ext filesystem | 扩展应用 / opt 数据区 |
这个表里最值得看的有几组:
0:SBL1 到 0:RPM_1 是 Qualcomm 启动链和安全组件,基本都是双份。0:APPSBL 是 U-Boot,0:APPSBLENV 是环境变量。0:HLOS + rootfs 是 A 槽系统,0:HLOS_1 + rootfs_1 是 B 槽系统,升级失败还能回滚。
RI 和 EXTFS 是 Nokia 自己的重点。RI 里放出厂身份,EXTFS 里放安全 KV、Web 密码哈希、随机变量、Wi-Fi 密码相关值。后面密码算法就是从这两个分区串起来的。
opt 分区有 512MiB,是整个表里最大的数据分区。结合 Nokia 官方强调 Corteca 和应用能力,这个分区很可能和扩展应用、运营商功能、日志/插件数据有关。
RI 分区:出厂信息不只是贴纸
RI 分区偏移是:
0x12c44400
里面能提取到这些字段,敏感项已打码:
Format = 01
FactoryCode = 22
HardwareVersion = 3TN00200CAAA
ICS = 01
G984Serial = eb44****
CleiCode = 00000
Mnemonic = Beacon 10
ProgDate = 240322
MACAddress = 48:41:7B:**:**:**
PartNumber = 3TN00201ABAA
Variant = AA
OperatorID = NKBU
CountryID = eu
LabelCode = U********d
GroupID = 00000000
这里最关键的是 LabelCode。它不是单纯给人看的标签字段,本次验证确认它会参与默认 Web 登录密码。
也就是说,这台机器的普通后台密码不是随便写死在某个配置文件里,而是出厂信息区和安全区一起配合:RI 里有候选明文,EXTFS 里有哈希,系统启动或登录校验时按规则验证。
EXTFS:安全 KV 和密码哈希都在这里
EXTFS 分区偏移是:
0x12d44400
里面能看到这些安全 KV 字段:
EXT_OPID = NKBU
EXT_BOOT_PWD = <redacted>
EXT_WEB_PWD = $5$<salt>$<sha256crypt_hash>
EXT_WEB_MGNT_PWD = $5$<salt>$<sha256crypt_hash>
EXT_MD5_VAR = <base64-like redacted>
EXT_SHA256_VAR = <base64-like redacted>
EXT_SHA256CUS_VAR = <base64-like redacted>
EXT_RANDOM_VAR = <base64-like redacted>
EXT_SSID1_PWD = <base64-like redacted>
EXT_SSID5_PWD = <base64-like redacted>
EXT_SSID9_PWD = <base64-like redacted>
大概可以这么理解:
| 字段 | 作用判断 |
|---|---|
EXT_OPID |
运营商 / profile 标识 |
EXT_BOOT_PWD |
启动或底层管理相关口令 |
EXT_WEB_PWD |
普通 Web 后台密码哈希 |
EXT_WEB_MGNT_PWD |
管理级 Web / superadmin 相关密码哈希 |
EXT_MD5_VAR |
派生算法变量之一 |
EXT_SHA256_VAR |
SHA256 派生变量之一 |
EXT_SHA256CUS_VAR |
定制化 SHA256 派生变量之一 |
EXT_RANDOM_VAR |
随机变量 / 设备级种子 |
EXT_SSID*_PWD |
多个 SSID 的 Wi-Fi 密码相关值 |
这块的价值很高。单看 rootfs 可能只能看到程序和默认模板,看不到每台机器真正的出厂值;EXTFS 才是设备个体化数据的集中区。
普通后台密码:算法其实不复杂
固件里的 login_web_app.cgi / login_app.cgi 字符串显示,默认 Web 用户是:
admin
普通 Web 密码存在 EXTFS 的 EXT_WEB_PWD 里,格式是标准 sha256crypt:
$5$salt$hash
验证逻辑可以简化成这样:
crypt(RI.LabelCode, "$5$<salt>") == EXT_WEB_PWD
如果计算出来的 sha256crypt 结果和 EXTFS 里保存的完整哈希一致,就说明 RI.LabelCode 就是普通后台密码。
本次已经验证匹配,所以结论是:
普通 Web 后台用户:admin
普通 Web 后台密码:RI 分区里的 LabelCode
明文 LabelCode 和完整哈希不放出来。知道这个关系就够了:以后遇到同类 Nokia 设备,重点不是去翻网页 JS 里有没有默认密码,而是先看 RI 和 EXTFS 这两个分区。
日志里曾出现过一个 Web 访问地址:
http://192.168.18.3/
这个只代表镜像里记录过的访问环境,不一定是你手上这台机器当前 IP。
superadmin 还没完全逆出来
镜像里确实存在 superadmin 用户和管理密码痕迹。
固件默认 /usr/etc/passwd 里有:
superadmin:x:0:102:Linux User,,,:/root:/bin/ash
/usr/etc/shadow 里也有 root 和 superadmin 的 sha256crypt 哈希。运行日志里还出现过动态创建 superadmin 的命令,说明这个账号在某些场景下会被系统或配置管理进程启用。
不过 EXT_WEB_MGNT_PWD 目前没有被已知候选匹配。测试过的方向包括 LabelCode、序列号、PartNumber、HardwareVersion、MAC、OperatorID、启动密码字段,以及一些常见默认组合,都没撞上。
固件二进制里能看到这些生成函数痕迹:
gen_varlen_mgntpw
gen_varlen_mgntpw_customize
gen_mgntlongpw_and_wanpw
gen_mgntlongpwd_for_mgrtn
generate_customized_password
SIGH_genpwd_longpasswd
genpwd_sha256_customized
这说明管理长密码大概率是定制派生的,不是简单“某个字段直接当密码”。可能参与的输入包括:
LabelCode
G984Serial
PartNumber
HardwareVersion
MACAddress
OperatorID / CountryID
EXT_SHA256_VAR
EXT_SHA256CUS_VAR
EXT_RANDOM_VAR
运营商定制规则
也就是说,普通 Web 密码这次已经确认了;superadmin 还得继续逆 cfgmgr 和相关依赖库,把拼接顺序、profile 分支、随机变量用法弄明白。
这次最有用的结论
第一,Beacon 10 的 eMMC user area 就是关键,boot1.bin / boot2.bin 为空不代表没读完整,启动链本来就在 GPT 分区里。
第二,它是标准 Qualcomm IPQ9574LA + OpenWrt ipq95xx/generic 的底子,上层套 Nokia WiFi / Corteca / Web 管理体系。
第三,分区布局是完整 A/B 冗余:启动链、Wi-Fi 固件、HLOS、rootfs 基本都有主备槽,升级回滚设计比较完整。
第四,RI 和 EXTFS 是最值得备份的两个小分区。一个管出厂身份,一个管安全 KV 和密码哈希。真要研究默认密码、恢复配置、迁移出厂信息,这两个比 rootfs 更关键。
第五,普通后台密码已经确认来自 RI 的 LabelCode,再用 EXTFS 的 sha256crypt 哈希验证;管理长密码目前只确认了哈希和生成函数痕迹,还没逆出明文。
所以这台机器后续要继续折腾,方向不是再复制官方英文规格,而是继续拆 cfgmgr:把 Nokia 这套管理长密码派生规则弄明白,才算真正把 Beacon 10 的出厂安全逻辑看透。
拆机图补几张
原文最后放过几张拆机图,这里也保留。官方英文介绍就不重复贴了,真正有用的信息已经整理到上面的硬件表和分区表里。


💖 打赏支持
如果这篇文章帮到了你,欢迎打赏支持
微信扫一扫,赞赏支持
大佬,原机备份能发一下么