D-Link DWR-M921 固件拆解与修改指南(RTL8197F)
D-Link DWR-M921 搭载 Realtek RTL8197F 芯片组,配备 128 MB DDR2(400 MHz)和 8 MB SPI NOR 闪存(Winbond W25Q64)。MIPS 24Kc 处理器(00019385)在 Linux 3.10.90 下时钟频率达 999 MHz,使用 Realtek MSDK 以 gcc 4.4.7 编译。
板载 UART 接口可捕获启动日志,揭示 MTD 分区布局:
- 0x00000-0x30000: "boot+cfg+linux"
- 0x30000-0x80000: "rootfs"
- 0x80000-0xb0000: "boot+cfg+linux2"(禁用)
- 0xb0000-0x100000: "rootfs2"(禁用)
当前激活 bootbank=1。内核从 0x80a00000 加载,rootfs 以 squashfs 格式挂载于 /dev/mtdblock1。
子系统初始化详解
启动日志按序展示初始化过程:
- 内存与缓存:128 MB 中 114 MB 可用,SLUB 硬件对齐为 32 字节。
- USB 控制器:EHCI(总线 1)、OHCI(总线 2)、DWC OTG(总线 3),配备 40 MHz 振荡器 PHY 补丁。
- 网络模块:Realtek WLAN(RFE TYPE=0,512 个 RX/TX 描述符)、FastPath v1.03、VLAN 802.1Q。
- 文件系统:squashfs 4.0、exFAT 1.2.9、NTFS 读写支持。
- 驱动程序:PPP、L2TP、GobiNet/Serial(调制解调器)、nf_conntrack。
特定 USB PHY 寄存器:
port 0 reg e0=e2, e1=31, e2=33, e3=8d, e4=c9, e5=19, e6=c1, e7=91
port 0 reg f0=fc, f1=8c, f2=0, f3=11, f4=9b, f5=4, f6=0
以太网口 eth0-eth4 映射到 VLAN,并启用 FastPath 加速。
固件布局与障碍
固件采用双银行设计,但银行 2 被锁定。D-Link 无开源代码,RTL8197F 的 OpenWRT 支持不完善,导致自定义固件构建困难。使用过时 Realtek SDK(SourceForge rtl819x)尝试失败。
关键启动日志规格:
- 内核命令行:
console=ttyS0,38400 root=/dev/mtdblock1 - DRAM:128MB DDR2@400MHz
- 闪存:w25q64@29MHz (max_speed_hz=29000000Hz)
- CPU:660.68 BogoMIPS
修改攻击路径
- UART/JTAG 转储:获取完整镜像用于逆向工程。
- Squashfs 补丁:解包 rootfs,注入 AdGuardHome 或自定义软件包。
- 引导加载器钩子:修改 U-Boot 或专有加载器以支持备用 root。
- SDK 利用:借助 Realtek MSDK 生成兼容镜像。
- TFTP 恢复:若启用,通过网络加载修改镜像。
RTL8197F 支持 PCIe(虽链接失败)、USB OTG 和 GPIO,适合底层黑客操作。
关键要点
- RTL8197F 芯片组:MIPS 24Kc@999MHz,128MB RAM,OpenWRT 支持有限。
- MTD 分区:仅 boot+cfg+linux(0x300KB)和 rootfs(0x500KB)激活。
- USB PHY 补丁:EHCI/OHCI/DWC OTG 稳定运行必需。
- Realtek WLAN:RFE=0,512 描述符,Adaptivity 9.3.4。
- 内核版本:3.10.90(2021),驱动过时(gcc 4.4.7)。
— Editorial Team
暂无评论。