Retour à l'accueil

Modification de firmware D-Link DWR-M921 RTL8197F

L'article analyse le bootlog du routeur D-Link DWR-M921 sur le chipset RTL8197F. Décrit la structure de partition MTD, l'initialisation USB et WLAN, les limitations de modification de firmware. Des vecteurs pour injecter un logiciel personnalisé comme AdGuardHome sont proposés.

Bootlog et modification de firmware D-Link DWR-M921
Advertisement 728x90

Démontage et guide de modification du firmware D-Link DWR-M921 (RTL8197F)

Le D-Link DWR-M921 repose sur le chipset Realtek RTL8197F avec 128 Mo de DDR2 à 400 MHz et 8 Mo de flash SPI NOR Winbond W25Q64. Le processeur MIPS 24Kc (00019385) tourne à 999 MHz sous Linux 3.10.90, compilé avec gcc 4.4.7 issu du MSDK de Realtek.

L'interface UART intégrée permet de capturer le journal de démarrage, révélant la disposition des partitions MTD :

  • 0x00000-0x30000 : "boot+cfg+linux"
  • 0x30000-0x80000 : "rootfs"
  • 0x80000-0xb0000 : "boot+cfg+linux2" (désactivé)
  • 0xb0000-0x100000 : "rootfs2" (désactivé)

Bootbank actif=1. Le noyau se charge depuis 0x80a00000, avec rootfs monté en squashfs sur /dev/mtdblock1.

Google AdInline article slot

Analyse de l'initialisation des sous-systèmes

Le journal de démarrage détaille l'initialisation séquentielle :

  • Mémoire et cache : 114 Mo libres sur 128 Mo, SLUB avec HWalign=32.
  • Contrôleurs USB : EHCI (bus 1), OHCI (bus 2), DWC OTG (bus 3) avec correctifs PHY pour oscillateur 40 MHz.
  • Réseau : WLAN Realtek (RFE TYPE=0, 512 descripteurs RX/TX), FastPath v1.03, VLAN 802.1Q.
  • Systèmes de fichiers : squashfs 4.0, exFAT 1.2.9, NTFS en lecture/écriture.
  • Pilotes : PPP, L2TP, GobiNet/Serial pour modems, nf_conntrack.

Registres PHY USB spécifiques :

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

Les ports Ethernet eth0-eth4 sont mappés sur des VLAN avec accélération FastPath.

Google AdInline article slot

Structure du firmware et obstacles

Le firmware utilise une configuration à double banque, mais la banque 2 est verrouillée. Absence de code open-source D-Link et support OpenWRT limité pour RTL8197F rendent les builds personnalisés complexes. Les tentatives avec l'ancien SDK Realtek (rtl819x sur SourceForge) échouent.

Spécifications clés du journal de démarrage :

  • Ligne de commande noyau : console=ttyS0,38400 root=/dev/mtdblock1
  • DRAM : 128 Mo DDR2@400 MHz
  • Flash : w25q64@29 MHz (max_speed_hz=29000000 Hz)
  • CPU : 660,68 BogoMIPS

Voies d'attaque pour modifications

  • Dump UART/JTAG : Récupérer l'image complète pour ingénierie inverse.
  • Patch Squashfs : Décompresser rootfs, injecter AdGuardHome ou paquets personnalisés.
  • Crochets bootloader : Modifier U-Boot ou chargeur propriétaire pour root alternatif.
  • Exploits SDK : Utiliser MSDK Realtek pour images compatibles.
  • Récupération TFTP : Charger images modifiées par réseau si activé.

Le RTL8197F dispose de PCIe (bien que la liaison échoue), USB OTG et GPIO pour hacks bas niveau.

Google AdInline article slot

Points clés

  • Chipset RTL8197F : MIPS 24Kc@999 MHz, 128 Mo RAM, support OpenWRT limité.
  • Partitions MTD : Seules boot+cfg+linux (0x300 Ko) et rootfs (0x500 Ko) actives.
  • Correctifs PHY USB : Indispensables pour EHCI/OHCI/DWC OTG stables.
  • WLAN Realtek : RFE=0, 512 descripteurs, Adaptivity 9.3.4.
  • Version noyau : 3.10.90 (2021), pilotes obsolètes (gcc 4.4.7).

— Editorial Team

Advertisement 728x90

Lire ensuite