Análisis y guía de modificación del firmware D-Link DWR-M921 (RTL8197F)
El D-Link DWR-M921 funciona con el chipset Realtek RTL8197F, 128 MB de DDR2 a 400 MHz y 8 MB de memoria flash SPI NOR Winbond W25Q64. El procesador MIPS 24Kc (00019385) alcanza 999 MHz bajo Linux 3.10.90, compilado con gcc 4.4.7 del MSDK de Realtek.
La interfaz UART integrada permite capturar el registro de arranque, que revela el esquema de particiones MTD:
- 0x00000-0x30000: "boot+cfg+linux"
- 0x30000-0x80000: "rootfs"
- 0x80000-0xb0000: "boot+cfg+linux2" (deshabilitado)
- 0xb0000-0x100000: "rootfs2" (deshabilitado)
Bootbank activo=1. El kernel se carga desde 0x80a00000, con rootfs montado como squashfs en /dev/mtdblock1.
Desglose de la inicialización de subsistemas
El registro de arranque recorre la inicialización secuencial:
- Memoria y caché: 114 MB libres de 128 MB, SLUB con HWalign=32.
- Controladores USB: EHCI (bus 1), OHCI (bus 2), DWC OTG (bus 3) con parches PHY para OSC de 40 MHz.
- Redes: WLAN Realtek (RFE TYPE=0, 512 descriptores RX/TX), FastPath v1.03, VLAN 802.1Q.
- Sistemas de archivos: squashfs 4.0, exFAT 1.2.9, NTFS R/W.
- Controladores: PPP, L2TP, GobiNet/Serial para módems, nf_conntrack.
Registros específicos del PHY USB:
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
Los puertos Ethernet eth0-eth4 se mapean a VLAN con aceleración FastPath.
Estructura del firmware y obstáculos
El firmware usa un esquema de doble banco, pero el banco 2 está bloqueado. No hay código abierto de D-Link y el soporte irregular de OpenWRT para RTL8197F complica las compilaciones personalizadas. Intentos con SDK antiguo de Realtek (rtl819x en SourceForge) fallan.
Especificaciones clave del registro de arranque:
- Línea de comandos del kernel:
console=ttyS0,38400 root=/dev/mtdblock1 - DRAM: 128MB DDR2@400MHz
- Flash: w25q64@29MHz (max_speed_hz=29000000Hz)
- CPU: 660.68 BogoMIPS
Vectores de ataque para modificaciones
- Volcado UART/JTAG: Captura la imagen completa para ingeniería inversa.
- Parcheo de Squashfs: Descomprime rootfs, inyecta AdGuardHome o paquetes personalizados.
- Ganchos del cargador de arranque: Modifica U-Boot o el cargador propietario para root alternativo.
- Exploits del SDK: Aprovecha el MSDK de Realtek para imágenes compatibles.
- Recuperación TFTP: Carga imágenes modificadas por red si está habilitado.
El RTL8197F incluye PCIe (aunque el enlace falla), USB OTG y GPIO para hacks de bajo nivel.
Conclusiones clave
- Chipset RTL8197F: MIPS 24Kc@999MHz, 128MB RAM, soporte limitado de OpenWRT.
- Particiones MTD: Solo boot+cfg+linux (0x300KB) y rootfs (0x500KB) activos.
- Parches PHY USB: Esenciales para EHCI/OHCI/DWC OTG estables.
- WLAN Realtek: RFE=0, 512 descriptores, Adaptivity 9.3.4.
- Versión del kernel: 3.10.90 (2021), controladores obsoletos (gcc 4.4.7).
— Editorial Team
Aún no hay comentarios.