Firmware patcher for Xiaomi routers
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
longzheng268 02b4c0155a
Add firmware downgrade guidance for BE3600 2.5G routers when exploits fail
Add firmware downgrade guidance for BE3600 2.5G routers when exploits fail
2 months ago
.github
bootloader add cr660x and tr60x 2 months ago
data Implement comprehensive SSH persistence fixes 2 months ago
firmware Add firmware downgrade suggestions for BE3600 routers with multilingual support 2 months ago
image 增加持久化ssh图片演示。 2 months ago
kmod kmod: Set LOCALVERSION="-XMiR-Patcher" for all kernel modules 7 months ago
python
xmir_base gateway: Fix prompt in get_telnet and set TELNET window size: 1000x32 7 months ago
!START.bat Implement Chinese language support for menu system 2 months ago
.gitignore Complete Chinese language support implementation with comprehensive testing 2 months ago
README.md Add SSH permanent execution interface image 2 months ago
activate_boot.py gateway: Change usage of run_cmd function 7 months ago
connect.py Add firmware downgrade suggestions for BE3600 routers with multilingual support 2 months ago
connect1.py connect1: Update code for using new dropbearmulti 7 months ago
connect2.py
connect3.py
connect4.py
connect5.py gateway: Add function post_connect 7 months ago
connect6.py connect6: Add new exploit "set_mac_filter" (vuln already closed) 7 months ago
connect7.py connect7: Add new exploit "get_icon" (for RD23 and other) 2 months ago
create_backup.py gateway: Change usage of run_cmd function 7 months ago
devtree.py devtree: Update code 2 months ago
envbuffer.py
gateway.py Fix SSH connection failure logic in post_connect method 2 months ago
i18n.py Add firmware downgrade suggestions for BE3600 routers with multilingual support 2 months ago
install_bl.py Fix bootloader installation logic and update documentation 2 months ago
install_fw.py gateway: Fix SSH-error after run "reboot" command 7 months ago
install_lang.py lang: Update lang patch scripts 8 months ago
install_ssh.py Fix syntax error and validate all improvements 2 months ago
lang_config.py Fix language selection issue - now shows language menu on first run 2 months ago
lmo2po.py
menu.py Fix language selection issue - now shows language menu on first run 2 months ago
passw.py
po2lmo.py
read_dmesg.py
read_info.py read_info: Add reading linux kernel version and arch (via uname) 8 months ago
reboot.py gateway: Fix SSH-error after run "reboot" command 7 months ago
requirements.txt
run.bat Implement Chinese language support for menu system 2 months ago
run.sh run.sh: Fix tr arguments 7 months ago
unlock_features.py unlockf: Add script for unlocking XQFeatures 8 months ago
xqimage.py
xqmodel.py xqmodel: Update router list 4 months ago

README.md

小米路由器破解工具 (XMiR-Patcher)

Download latest ViewCount

一个功能强大的小米路由器固件破解工具支持多种小米路由器型号的漏洞利用、SSH启用、语言包安装、固件刷写等功能。

📋 目录

🔧 支持的设备

完全支持的型号

本工具支持以下小米路由器型号按型号ID排序

第一代系列

  • R1CM (miwifi-mini) - 小米路由器 Mini
  • R1CL (miwifi-nano) - 小米路由器 Nano
  • R2D - 小米路由器 2
  • R2CM - 小米路由器 2

第三代系列

  • R3 - 小米路由器 3
  • R3D (r3d) - 小米路由器 3D
  • R3L (miwifi-3c) - 小米路由器 3C
  • R3P (mi-router-3-pro) - 小米路由器 3 Pro
  • R3A - 小米路由器 3A
  • R3G (mi-router-3g) - 小米路由器 3G
  • R3GV2 (mi-router-3g-v2) - 小米路由器 3G V2

第四代系列

  • R4 (mi-router-4) - 小米路由器 4
  • R4C (mi-router-4q) - 小米路由器 4Q
  • R4A (mi-router-4a-gigabit) - 小米路由器 4A 千兆版
  • R4CM (mi-router-4c) - 小米路由器 4C
  • R4AC (mi-router-4a-100m) - 小米路由器 4A 百兆版

AC系列

  • R2100 (mi-router-ac2100) - 小米路由器 AC2100
  • RM2100 (redmi-router-ac2100) - 红米路由器 AC2100
  • R2200 - 小米路由器 AC2200
  • R2350 (aiot-ac2350) - 小米 AIoT 路由器 AC2350
  • R2600 - 小米路由器 AC2600

AX系列 (Wi-Fi 6)

  • R3600 (ax3600) - 小米路由器 AX3600
  • R1350 - 小米路由器 AX1350
  • RA67 - 红米路由器 AX1800C
  • RA69 (ax6) - 小米路由器 AX6
  • RA70 (ax9000) - 小米路由器 AX9000
  • RA71 - 红米路由器 AX1800
  • RA72 - 小米路由器 AX6000
  • RA75 (mi-ra75) - 小米路由器 RA75
  • RA80/RA82 - 小米路由器 AX3000

企业级系列

  • CR6006 (mi-router-cr6606) - 小米企业路由器 CR6606
  • CR6008 (mi-router-cr6608) - 小米企业路由器 CR6608
  • CR6009 (mi-router-cr6609) - 小米企业路由器 CR6609

TR系列

  • TR608 - 小米路由器 TR608
  • TR609 - 小米路由器 TR609

其他型号

  • P01 - 小米随身路由器
  • D01 - 小米路由器 HD
  • IR1200G - 小米路由器 1200G
  • RM1800 - 红米路由器 1800
  • R2100D - 小米路由器 AC2100D
  • RA50 - 小米路由器 RA50

注意: 不同型号支持的功能可能有差异,建议在操作前仔细阅读相关说明。

功能特性

核心功能

  • 🔓 漏洞利用: 自动检测并利用小米路由器的已知漏洞
  • 🔑 SSH启用: 永久启用SSH访问方便高级用户管理
  • 🌐 多语言支持: 安装英文/俄文/中文语言包,支持中文菜单界面
  • 💾 完整备份: 创建路由器固件的完整备份
  • 🔄 固件刷写: 支持自定义固件的安装
  • Bootloader替换: 支持安装Breed等第三方Bootloader

高级功能

  • 📊 设备信息读取: 获取详细的硬件和系统信息
  • 🔐 密码修改: 修改路由器root密码
  • 📋 日志读取: 读取系统日志和内核信息
  • ⚙️ 分区备份: 创建指定分区的备份
  • 🚀 引导设置: 设置内核引导地址
  • 🔧 功能解锁: 解锁隐藏的路由器功能

🚀 安装教程

Windows 用户

  1. 下载工具包

    下载并解压项目文件到任意目录
    
  2. 运行工具

    双击运行 run.bat 文件
    
  3. 自动环境配置

    • 工具会自动使用内置的 Python 环境
    • 无需手动安装 Python 或依赖包

Linux / macOS 用户

  1. 系统要求

    # 确保已安装 Python 3.8+ 和 OpenSSL
    python3 --version  # 应显示 3.8 或更高版本
    openssl version    # 确认 OpenSSL 已安装
    
  2. 安装依赖

    # Ubuntu/Debian
    sudo apt update
    sudo apt install python3 python3-pip python3-venv openssl
    
    # CentOS/RHEL
    sudo yum install python3 python3-pip openssl
    
    # macOS (使用 Homebrew)
    brew install python3 openssl
    
  3. 下载并运行

    # 下载项目
    git clone https://github.com/longzheng268/Xiaomi-Router-patcher.git
    cd Xiaomi-Router-patcher
    
    # 运行工具
    chmod +x run.sh
    ./run.sh
    

Docker 用户

# 构建 Docker 镜像
docker build -t xmir-patcher .

# 运行容器
docker run -it --network host xmir-patcher

📖 使用指南

第一步:连接准备

  1. 网络连接

    • 确保电脑和小米路由器在同一网络中
    • 记录路由器的IP地址通常是 192.168.31.1
    • 确保能正常访问路由器管理界面
  2. 启动工具

    • Windows: 双击 run.bat
    • Linux/macOS: 执行 ./run.sh

第二步:基本配置

运行工具后会看到主菜单:

==========================================================

Xiaomi MiR Patcher  

 1 - Set IP-address (current value: 192.168.31.1)
 2 - Connect to device (install exploit)
 3 - Read full device info
 4 - Create full backup
 5 - Install EN/RU languages
 6 - Install permanent SSH
 7 - Install firmware (from directory "firmware")
 8 - {{{ Other functions }}}
 9 - [[ Reboot device ]]
 0 - Exit

Select:

第三步:执行操作

必要的前置步骤

  1. 设置IP地址 (选项1)

    选择 1 → 输入路由器IP地址 → 按回车确认
    
  2. 连接设备并安装漏洞利用 (选项2)

    选择 2 → 工具会自动检测设备型号并安装相应的漏洞利用程序
    

    ⚠️ 重要: 这是所有后续操作的前提,必须先成功执行此步骤!

常用操作流程

  1. 完整备份 (推荐首先执行)

    选择 4 → 工具会创建完整的固件备份,保存在 backup 目录中
    
  2. 启用SSH访问

    选择 6 → 工具会永久启用SSH访问默认用户名/密码: root/root
    
  3. 安装语言包

    选择 5 → 安装英文/俄文/中文语言包,让路由器界面支持更多语言
    

语言界面设置

首次启动工具时,会显示语言选择菜单:

Language / 语言 / Язык

 1 - English
 2 - 中文 (Chinese)  
 3 - Русский (Russian)

Select language [1-English, 2-中文, 3-Русский]: 

选择对应数字即可切换到相应语言的菜单界面。语言设置会保存在 config.json 文件中。

中文界面预览:

==========================================================

小米路由器破解工具  

 1 - 设置IP地址 (当前值: 192.168.31.1)
 2 - 连接设备 (安装漏洞利用)
 3 - 读取完整设备信息
 4 - 创建完整备份
 5 - 安装 英文/俄文/中文 语言包
 6 - 安装永久SSH
 7 - 安装固件 (从 "firmware" 目录)
 8 - {{{ 其他功能 }}}
 9 - [[ 重启设备 ]]
 0 - 退出

请选择: 

🔍 详细功能说明

主菜单功能

1. 设置IP地址

  • 用途: 设置目标路由器的IP地址
  • 默认值: 192.168.31.1
  • 使用场景: 当路由器IP不是默认值时需要修改

2. 连接设备(安装漏洞利用)

  • 用途: 检测设备型号并安装对应的漏洞利用程序
  • 支持的漏洞:
    • c_upload/netspeed - 适用于较老型号
    • get_icon - 适用于较新型号
  • 执行过程:
    1. 自动检测路由器型号
    2. 选择合适的漏洞利用方法
    3. 上传并执行漏洞利用代码
    4. 启用SSH和Telnet访问

3. 读取完整设备信息

  • 获取信息包括:
    • 硬件型号和版本
    • 固件版本信息
    • 分区表结构
    • 内存和存储信息
    • 网络配置
  • 输出位置: outdir/ 目录

4. 创建完整备份

  • 备份内容:
    • 所有分区的原始数据
    • Bootloader
    • 内核镜像
    • 根文件系统
    • 配置数据
  • 备份格式: 二进制镜像文件
  • 存储位置: backup/ 目录

#### 5. 安装多语言包

语言包功能详解

支持的语言:

  • 英文 (English): 完整的英文界面和语言包
  • 中文 (Chinese): 完整的中文界面和语言包
  • 俄文 (Russian): 完整的俄文界面和语言包

功能特点:

  • 🌐 智能语言选择: 首次运行自动显示语言选择菜单
  • 💾 持久化配置: 语言选择保存在 config.json 中,下次启动自动应用
  • 🔄 实时切换: 可通过重新运行程序切换语言
  • 📱 完整本地化: 包括菜单、提示信息、错误消息等全面本地化
  • 🎯 路由器语言包: 支持为路由器安装对应的语言包文件

安装方式:

  1. 上传语言文件到路由器
  2. 修改系统配置
  3. 重启相关服务
  4. 卸载: 通过扩展菜单选项5可以卸载

技术实现:

  • 使用 UTF-8 编码支持多语言字符显示
  • Windows 批处理文件使用 chcp 65001 支持中文显示
  • 模块化翻译系统,易于扩展新语言
  • 基于 .po 格式的标准化语言包管理

6. 安装永久SSH

  • 功能: 启用持久化的SSH访问
  • 默认凭据:
    • 用户名: root
    • 密码: root
  • 端口: 22
  • 特点: 重启后仍然有效

7. 安装固件

  • 支持格式:
    • 标准的小米固件格式
    • OpenWrt固件需兼容
  • 固件位置: 将固件放在 firmware/ 目录
  • 安装过程: 自动化刷写流程

8. 其他功能(扩展菜单)

进入扩展功能菜单,包含更多高级选项。

9. 重启设备

安全重启路由器设备。

扩展菜单功能

1. 设置IP地址

与主菜单功能1相同。

2. 修改root密码

  • 用途: 修改路由器的root用户密码
  • 安全性: 提高系统安全性

3. 读取dmesg和syslog

  • 获取内容:
    • 内核日志 (dmesg)
    • 系统日志 (syslog)
  • 用途: 故障诊断和系统分析

4. 创建指定分区备份

  • 灵活性: 可选择备份特定分区
  • 常用分区:
    • bootloader - 引导加载器
    • kernel - 内核
    • rootfs - 根文件系统
    • overlay - 配置数据

5. 卸载英文/俄文语言包

还原到原始的中文界面。

6. 设置内核引导地址

  • 用途: 修改内核的加载地址
  • 应用场景: 安装自定义固件时使用

7. 安装Breed引导加载器

  • Breed特点:
    • 功能强大的第三方Bootloader
    • 支持Web界面固件刷写
    • 不怕刷坏(变砖保护)
  • 支持型号:
    • R3G, R3P, RM2100, RA71: breed_r3g_eng.bin
    • CR6606, CR6608, CR6609, TR608, TR609: pb-boot-cr660x.img
  • 安装命令: python3 install_bl.py breed

7a. 安装原厂U-Boot引导加载器

  • U-Boot特点:
    • 设备原厂Bootloader
    • 设备特定的引导程序
    • 用于恢复原厂引导环境
  • 支持型号:
    • R3G: uboot_r3g.bin
    • R3P: uboot_r3p.bin
    • RM2100: uboot_rm2100.bin
  • 安装命令: python3 install_bl.py uboot

8. 测试功能

开发和调试用途的测试功能。

9. 重启设备

与主菜单功能9相同。

🛠️ 故障排除

常见问题

1. 连接失败

问题: 无法连接到路由器 解决方案:

# 检查网络连接
ping 192.168.31.1

# 检查路由器管理界面
curl -I http://192.168.31.1

# 确认IP地址正确
# 某些路由器可能使用 192.168.1.1

2. 漏洞利用失败

问题: "Exploit not working" 错误 可能原因:

  • 固件版本太新,已修复漏洞
  • 路由器型号不支持
  • 网络连接不稳定

解决方案:

# 检查设备型号支持情况
# 尝试降级固件(如果可能)
# 检查网络连接稳定性

3. SSH连接问题

问题: SSH连接被拒绝 解决方案:

# 检查SSH服务状态
ssh root@192.168.31.1

# 如果连接被拒绝重新执行选项6
# 检查防火墙设置

4. 固件刷写失败

问题: 固件安装过程中出错 解决方案:

  • 确保固件与设备型号匹配
  • 检查固件文件完整性
  • 确保有足够的存储空间
  • 检查电源稳定性

5. Python依赖问题

问题: ModuleNotFoundError 解决方案:

# 重新安装依赖
pip install -r requirements.txt

# 或者使用虚拟环境
python3 -m venv venv
source venv/bin/activate  # Linux/macOS
# venv\Scripts\activate   # Windows
pip install -r requirements.txt

恢复模式

如果路由器变砖,可以尝试以下恢复方法:

1. 使用Breed恢复如已安装

  1. 路由器断电
  2. 按住reset键不放
  3. 插入电源等待10秒
  4. 浏览器访问 192.168.1.1
  5. 通过Web界面刷写固件

2. 使用备份恢复

  1. 通过SSH连接到路由器
  2. 使用dd命令恢复分区
# 恢复完整固件(谨慎操作!)
dd if=/tmp/backup.bin of=/dev/mtdblock0

# 恢复特定分区
dd if=/tmp/kernel_backup.bin of=/dev/mtdblock2

3. TFTP恢复模式

某些型号支持TFTP恢复

  1. 设置电脑IP为 192.168.1.2
  2. 运行TFTP服务器
  3. 按住reset键启动路由器
  4. 传输固件文件

⚠️ 安全提示

风险声明

  • ⚠️ 刷机有风险,操作需谨慎!
  • ⚠️ 任何固件修改都可能导致设备变砖!
  • ⚠️ 修改固件可能失去官方保修!
  • ⚠️ 请在操作前做好完整备份!

安全建议

操作前准备

  1. 完整备份: 务必先执行选项4创建完整备份
  2. 稳定电源: 确保操作过程中电源稳定
  3. 网络稳定: 确保网络连接稳定
  4. 充足时间: 不要在时间紧迫时进行操作

密码安全

  1. 修改默认密码: SSH启用后立即修改默认密码
passwd root
  1. 禁用不必要的服务:
# 如不需要Telnet建议禁用
/etc/init.d/telnet disable
  1. 配置防火墙:
# 限制SSH访问的IP范围
iptables -A INPUT -p tcp --dport 22 -s 192.168.31.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

固件安全

  1. 验证固件来源: 只使用可信来源的固件
  2. 校验文件完整性: 使用MD5或SHA256校验
  3. 渐进式升级: 避免跨越太多版本升级

🔧 开发说明

项目结构

Xiaomi-Router-patcher/
├── menu.py              # 主菜单界面
├── gateway.py           # 网关通信模块
├── connect*.py          # 各种漏洞利用脚本
├── xqmodel.py           # 设备型号定义
├── read_info.py         # 设备信息读取
├── create_backup.py     # 备份功能
├── install_*.py         # 各种安装功能
├── unlock_features.py   # 功能解锁
├── xmir_base/           # 核心库
│   ├── ubireader/       # UBI文件系统读取
│   ├── fdt/             # 设备树处理
│   └── telnetlib/       # Telnet库
├── data/                # 数据文件
│   ├── payload/         # 漏洞利用载荷
│   ├── payload_ssh/     # SSH相关脚本
│   └── *.po             # 语言包文件
├── bootloader/          # 引导加载器文件
├── firmware/            # 固件存放目录
└── python/              # Windows内置Python

核心模块说明

Gateway类 (gateway.py)

负责与路由器的通信,包括:

  • HTTP/HTTPS请求
  • SSH连接
  • Telnet连接
  • FTP传输
  • 设备检测

漏洞利用模块 (connect*.py)

  • connect1.py: c_upload/netspeed漏洞
  • connect7.py: get_icon漏洞
  • 支持多种小米路由器型号

设备模型 (xqmodel.py)

定义了所有支持的设备型号和属性。

添加新设备支持

  1. 在xqmodel.py中添加设备定义:
mi(42, "NEW_MODEL", "", "device-alt-name")
  1. 在connect.py中添加检测逻辑:
if gw.model_id == get_modelid_by_name('NEW_MODEL'):
    # 使用适当的漏洞利用方法
  1. 测试新设备:
# 创建测试脚本验证功能

自定义漏洞利用

参考现有的connect脚本主要步骤

  1. 检测设备:
gw.detect_device()
  1. 安装载荷:
install_exploit(api='API/endpoint')
  1. 执行功能:
run_exploit('function_name', timeout=10)

🤝 贡献指南

如何贡献

  1. Fork 项目
  2. 创建功能分支:
git checkout -b feature/new-feature
  1. 提交更改:
git commit -am 'Add new feature'
  1. 推送分支:
git push origin feature/new-feature
  1. 创建 Pull Request

贡献方向

  • 支持新的路由器型号
  • 修复现有漏洞利用
  • 改进用户界面
  • 增加新功能
  • 完善文档
  • 修复bug

代码规范

  • 使用Python 3.8+语法
  • 遵循PEP 8代码风格
  • 添加适当的注释
  • 编写测试用例

报告问题

请在GitHub Issues中报告bug或提出功能请求

  • 详细描述问题
  • 提供复现步骤
  • 包含系统环境信息
  • 附上相关日志

📄 许可证

本项目采用 GPL-3.0 许可证。详见 LICENSE 文件。

💝 捐赠支持

如果这个项目对您有帮助,欢迎支持开发:

Donations Page

📞 联系方式

🙏 致谢

  • 感谢原始项目的所有贡献者
  • 感谢小米路由器破解社区
  • 感谢OpenWrt项目
  • 感谢所有测试用户的反馈

⚠️ 免责声明: 本工具仅供学习和研究使用。使用本工具进行的任何操作,风险由用户自行承担。开发者不对因使用本工具而造成的任何损失负责。

🖼️ 界面展示 / Interface Preview

成功执行界面 工具成功执行后的界面展示 / Interface after successful execution 成功连接ssh界面 ssh成功执行后的界面展示 / Interface after ssh connetct successful execution 成功持久化ssh界面 ssh成功执行后的界面展示 / Interface after ssh permanent execution


English Summary

XMiR-Patcher is a comprehensive firmware patcher for Xiaomi routers that supports:

  • 50+ Xiaomi router models from R1CM to latest AX series
  • Exploit installation for gaining root access
  • Permanent SSH access with customizable credentials
  • Full firmware backup and selective partition backup
  • Custom firmware installation including OpenWrt support
  • Bootloader replacement (Breed support for R3G/R3P/RM2100/RA71/CR660x/TR60x series, U-Boot support for R3G/R3P/RM2100)
  • Multi-language support (EN/RU/ZH language packs with Chinese menu interface)
  • Advanced features like password change, log reading, feature unlocking

Quick Start

Windows: Run run.bat | Linux/macOS: Run ./run.sh

Basic Usage Flow

  1. Set router IP address (default: 192.168.31.1)
  2. Connect and install exploit (essential first step)
  3. Create full backup (highly recommended)
  4. Enable permanent SSH access
  5. Install custom firmware or additional features

⚠️ Warning: Firmware modification carries risks. Always backup before proceeding!