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

[![Download latest](https://img.shields.io/badge/🡇-下载最新版本-green)](https://github.com/longzheng268/Xiaomi-Router-patcher/archive/refs/heads/main.zip)
[![ViewCount](https://views.whatilearened.today/views/github/openwrt-xiaomi/xmir-patcher.svg)](https://github.com/longzheng268/Xiaomi-Router-patcher/archive/refs/heads/main.zip)

一个功能强大的小米路由器固件破解工具，支持多种小米路由器型号的漏洞利用、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. **系统要求**
   ```bash
   # 确保已安装 Python 3.8+ 和 OpenSSL
   python3 --version  # 应显示 3.8 或更高版本
   openssl version    # 确认 OpenSSL 已安装
   ```

2. **安装依赖**
   ```bash
   # 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. **下载并运行**
   ```bash
   # 下载项目
   git clone https://github.com/longzheng268/Xiaomi-Router-patcher.git
   cd Xiaomi-Router-patcher
   
   # 运行工具
   chmod +x run.sh
   ./run.sh
   ```

### Docker 用户

```bash
# 构建 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. 连接失败
**问题**: 无法连接到路由器
**解决方案**:
```bash
# 检查网络连接
ping 192.168.31.1

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

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

#### 2. 漏洞利用失败
**问题**: "Exploit not working" 错误
**可能原因**:
- 固件版本太新，已修复漏洞
- 路由器型号不支持
- 网络连接不稳定

**解决方案**:
```bash
# 检查设备型号支持情况
# 尝试降级固件（如果可能）
# 检查网络连接稳定性
```

#### 3. SSH连接问题
**问题**: SSH连接被拒绝
**解决方案**:
```bash
# 检查SSH服务状态
ssh root@192.168.31.1

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

#### 4. 固件刷写失败
**问题**: 固件安装过程中出错
**解决方案**:
- 确保固件与设备型号匹配
- 检查固件文件完整性
- 确保有足够的存储空间
- 检查电源稳定性

#### 5. Python依赖问题
**问题**: ModuleNotFoundError
**解决方案**:
```bash
# 重新安装依赖
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命令恢复分区：
```bash
# 恢复完整固件（谨慎操作！）
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启用后立即修改默认密码
```bash
passwd root
```

2. **禁用不必要的服务**:
```bash
# 如不需要Telnet，建议禁用
/etc/init.d/telnet disable
```

3. **配置防火墙**:
```bash
# 限制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中添加设备定义**:
```python
mi(42, "NEW_MODEL", "", "device-alt-name")
```

2. **在connect.py中添加检测逻辑**:
```python
if gw.model_id == get_modelid_by_name('NEW_MODEL'):
    # 使用适当的漏洞利用方法
```

3. **测试新设备**:
```python
# 创建测试脚本验证功能
```

### 自定义漏洞利用

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

1. **检测设备**:
```python
gw.detect_device()
```

2. **安装载荷**:
```python
install_exploit(api='API/endpoint')
```

3. **执行功能**:
```python
run_exploit('function_name', timeout=10)
```

## 🤝 贡献指南

### 如何贡献

1. **Fork 项目**
2. **创建功能分支**:
```bash
git checkout -b feature/new-feature
```

3. **提交更改**:
```bash
git commit -am 'Add new feature'
```

4. **推送分支**:
```bash
git push origin feature/new-feature
```

5. **创建 Pull Request**

### 贡献方向

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

### 代码规范

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

### 报告问题

请在GitHub Issues中报告bug或提出功能请求：
- 详细描述问题
- 提供复现步骤
- 包含系统环境信息
- 附上相关日志

## 📄 许可证

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

## 💝 捐赠支持

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

[![Donations Page](https://github.com/andry81-cache/gh-content-static-cache/raw/master/common/badges/donate/donate.svg)](https://github.com/remittor/donate)

## 📞 联系方式

- **GitHub Issues**: [提交问题](https://github.com/longzheng268/Xiaomi-Router-patcher/issues)
- **讨论区**: [GitHub Discussions](https://github.com/longzheng268/Xiaomi-Router-patcher/discussions)

## 🙏 致谢

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

---

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

## 🖼️ 界面展示 / Interface Preview

![成功执行界面](image/display-successful.png)
*工具成功执行后的界面展示 / Interface after successful execution*
![成功连接ssh界面](image/display-ssh.png)
*ssh成功执行后的界面展示 / Interface after ssh connetct successful 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!
