Zpět na domů

Modifikace firmware D-Link DWR-M921 RTL8197F

Článek rozebírá bootlog routeru D-Link DWR-M921 na čipsetu RTL8197F. Je popsána struktura MTD-oddílů, inicializace USB a WLAN, omezení modifikace firmware. Jsou navrženy vektory pro zavedení vlastního softwaru jako AdGuardHome.

Bootlog a modifikace firmware D-Link DWR-M921
Advertisement 728x90

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.

Google AdInline article slot

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í.

Google AdInline article slot

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.

Google AdInline article slot

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

Advertisement 728x90

Číst dál