# Analiza i modyfikacja firmware routera D-Link DWR-M921 na RTL8197F
Router D-Link DWR-M921 korzysta z układu Realtek RTL8197F z 128 MB DDR2 o taktowaniu 400 MHz oraz 8 MB pamięci SPI NOR Winbond w25q64. Procesor MIPS 24Kc (00019385) działa z częstotliwością 999 MHz pod kontrolą Linuksa 3.10.90, skompilowanego za pomocą gcc 4.4.7 z Realtek MSDK.
Interfejs UART na płycie pozwala przechwycić log rozruchu, który ujawnia strukturę partycji MTD:
- 0x00000-0x30000: "boot+cfg+linux"
- 0x30000-0x80000: "rootfs"
- 0x80000-0xb0000: "boot+cfg+linux2" (wyłączony)
- 0xb0000-0x100000: "rootfs2" (wyłączony)
Aktywny bootbank=1. Jądro ładuje się z adresu 0x80a00000, a rootfs montowany jest jako squashfs na /dev/mtdblock1.
Szczegóły inicjalizacji podsystemów
Log rozruchu pokazuje sekwencyjną inicjalizację:
- Pamięć i pamięć podręczna: 114 MB dostępne z 128 MB, SLUB z HWalign=32.
- Kontrolery USB: EHCI (magistrala 1), OHCI (magistrala 2), DWC OTG (magistrala 3) z poprawkami PHY dla oscylatora 40 MHz.
- Sieć: Realtek WLAN (RFE TYPE=0, 512 deskryptorów RX/TX), FastPath v1.03, VLAN 802.1Q.
- Systemy plików: squashfs 4.0, exFAT 1.2.9, NTFS R/W.
- Sterowniki: PPP, L2TP, GobiNet/Serial dla modemów, nf_conntrack.
Konkretne rejestry 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
Porty Ethernet eth0-eth4 mapowane są na VLAN z FastPath dla przyspieszenia.
Struktura firmware i ograniczenia
Firmware zorganizowany jest w schemacie dual-bank, ale drugi bank jest wyłączony (niedostępny). Brak otwartych źródeł D-Link oraz niepełne wsparcie OpenWRT dla RTL8197F komplikują modyfikacje. Próby kompilacji ze starych Realtek SDK (rtl819x na SourceForge) kończą się niepowodzeniem.
Kluczowe parametry z logu rozruchu:
- 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żliwe wektory modyfikacji
- Dump przez UART/JTAG: Przechwycenie pełnego obrazu do inżynierii odwrotnej.
- Patching squashfs: Rozpakowanie rootfs, wdrożenie AdGuardHome lub innych pakietów.
- Haki bootloadera: Modyfikacja U-Boot lub proprietary loadera dla alternatywnego root.
- Eksploity SDK: Wykorzystanie Realtek MSDK do generowania kompatybilnych obrazów.
- Odzyskiwanie TFTP: Jeśli dostępne, ładowanie zmodyfikowanych obrazów przez sieć.
RTL8197F obsługuje PCIe (ale linkup nieudany), USB OTG i GPIO dla dostępu niskopoziomowego.
Co ważne
- Układ RTL8197F: MIPS 24Kc@999MHz, 128MB RAM, ograniczone wsparcie OpenWRT.
- Partycje MTD: Aktywne tylko boot+cfg+linux (0x300KB) i rootfs (0x500KB).
- Poprawki USB PHY: Krytyczne dla stabilności EHCI/OHCI/DWC OTG.
- WLAN Realtek: RFE=0, 512 deskryptorów, Adaptivity 9.3.4.
- Wersja jądra: 3.10.90 (2021), przestarzałe sterowniki (gcc 4.4.7).
— Editorial Team
Brak komentarzy.