Rozbor a modifikace firmwaru routeru D-Link DWR-M921 na RTL8197F
Router D-Link DWR-M921 využívá čipset Realtek RTL8197F s 128 MB DDR2 na 400 MHz a 8 MB SPI NOR flash Winbond w25q64. Procesor MIPS 24Kc (00019385) běží na frekvenci 999 MHz pod řízením Linuxu 3.10.90, zkompilovaného gcc 4.4.7 z Realtek MSDK.
UART rozhraní na desce umožňuje zachytit bootlog, který odhaluje strukturu MTD oddílů:
- 0x00000-0x30000: "boot+cfg+linux"
- 0x30000-0x80000: "rootfs"
- 0x80000-0xb0000: "boot+cfg+linux2" (vypnutý)
- 0xb0000-0x100000: "rootfs2" (vypnutý)
Aktivní bootbank=1. Kernel se načítá z adresy 0x80a00000, rootfs se montuje jako squashfs na /dev/mtdblock1.
Detaily inicializace podsystémů
Bootlog ukazuje sekvenční inicializaci:
- Paměť a cache: 114 MB dostupných z 128 MB, SLUB s HWalign=32.
- USB kontrolery: EHCI (bus 1), OHCI (bus 2), DWC OTG (bus 3) s patchy PHY pro 40 MHz OSC.
- Síť: Realtek WLAN (RFE TYPE=0, 512 RX/TX deskriptorů), FastPath v1.03, VLAN 802.1Q.
- Soubory systémy: squashfs 4.0, exFAT 1.2.9, NTFS R/W.
- Ovladače: PPP, L2TP, GobiNet/Serial pro modemy, nf_conntrack.
Konkrétní registry 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
Ethernet porty eth0-eth4 se mapují do VLAN s FastPath pro zrychlení.
Struktura firmwaru a omezení
Firmware je organizován v dual-bank schématu, ale druhý bank je vypnutý (nedosažitelný). Chybějící otevřený zdrojový kód od D-Link a neúplná podpora OpenWRT pro RTL8197F ztěžují customizaci. Pokusy o kompilaci ze starých Realtek SDK (rtl819x na SourceForge) selhaly.
Klíčové parametry z bootlogu:
- Kernel command line:
console=ttyS0,38400 root=/dev/mtdblock1 - DRAM: 128MB DDR2@400MHz
- Flash: w25q64@29MHz (max_speed_hz=29000000Hz)
- CPU: 660.68 BogoMIPS
Možné vektory modifikace
- Dump přes UART/JTAG: Zachycení celého obrazu pro reverzní inženýrství.
- Patčování squashfs: Rozbalení rootfs, vložení AdGuardHome nebo jiných balíčků.
- Bootloader háky: Modifikace U-Boot nebo proprietárního bootloaderu pro alternativní root.
- SDK exploity: Využití Realtek MSDK pro generování kompatibilních obrazů.
- TFTP recovery: Pokud je dostupné, načítání modifikovaných obrazů přes síť.
RTL8197F podporuje PCIe (ale linkup selže), USB OTG a GPIO pro nízkou úroveň přístupu.
Co je důležité
- Čipset RTL8197F: MIPS 24Kc@999MHz, 128MB RAM, omezená podpora OpenWRT.
- MTD oddíly: Aktivní pouze boot+cfg+linux (0x300KB) a rootfs (0x500KB).
- USB PHY patchy: Kritické pro stabilitu EHCI/OHCI/DWC OTG.
- WLAN Realtek: RFE=0, 512 deskriptorů, Adaptivity 9.3.4.
- Verze kernelu: 3.10.90 (2021), zastaralé ovladače (gcc 4.4.7).
— Editorial Team
Zatím žádné komentáře.