Flashing Xiaomi Router 4C with OpenWRT

Xiaomi Router 4C with OpenWRT firmware

I’m very fond of Xiaomi products. They sell pleasing design at an affordable price. One example is their Xiaomi Router 4C. It’s a 2.4Ghz, 100M-only router that costs only around P500.00.

While I like the hardware, I don’t feel secure using the default firmware. Fortunately, OpenWRT supports this router. It’s an open-source, community-driven firmware.

My use case for this router is for a dedicated access point for our IP cameras. I discovered that using the same access point as our main network causes bottlenecks for other devices. With 6 cameras, each pushing 2MB/s of data, the airwaves get congested quickly.

Why OpenWRT?

It’s open and highly flexible. One feature I use is the ability to assign an SSID to a VLAN that has no internet access. This limits access of IP Cameras to local-only.

How to flash OpenWRT?

The stock firmware does not allow uploading unsigned firmwares. To flash OpenWRT, the process looks like:

  1. Downgrade to a vulnerable firmware
  2. Exploit vulnerability to gain root access
  3. Once we have root access, flash the firmware

Steps

Downgrading to a vulnerable firmware

Download exploitable firmware at Mi Router 4C firmware download: MIWIFI R4CM ROM (miuirom.org): China 2.14.80

Flash the firmware to the router http://192.168.31.1

To confirm a successful flash, the admin page must now be in Chinese

Gain root access

Download or clone OpenWRTInvasion

Install Python 3

Open Terminal and change directory to where OpenWRTInvasion is, then pip3 install -r requirements.txt

Run the exploit python3 remote_command_execution_vulnerability.py

If successful, router will be accessible via SSH.

Download latest OpenWRT firmware for 4C.


At this stage, my router still doesn’t have internet access. I need to upload the OpenWRT firmware to the device, which I did using FTP.

ftp 192.168.31.1
cd /tmp
put C:\path\to\firmware.bin

# Flash the firmware to the NAND

mtd -r write /tmp/firmware.bin OS1

After a few minutes, check if OpenWRT is booting up.

Resources:

  • https://openwrt.org/toh/xiaomi/xiaomi_mi_router_4c

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *