小米路由器官方提供的固件是自定义格式,而且刷机时要验证RSA签名,因此只刷自制固件几乎不可能。

通过对固件工具mkxqimage的分析,基本弄清楚了固件打包和解包的流程,如果采用自己的RSA私钥打包固件,然后用自己的RSA公钥替换/usr/share/xiaoqiang/public.pem,那么就能实现通过Web界面刷自制固件。

固件解包

固件工具mkxqimage完成对固件的解包,在解包前先检查Checksum是否正确,然后利用RSA公钥/usr/share/xiaoqiang/public.pem检查RSA签名,这两个步骤通过后,根据[0x0C]的固件类型,以及[0x10]、[0x14]、[0x18]和[0x1C]的4个偏移量拆分固件。固件中可能包含的内容有:

brcm4709_fac_update_nor.bin

brcm4709_nor.bin

fac_mode.bin

nvram_fac.bin

ramfsz

root.ext4.lzma

root.squashfs

upsetting.sh

upsetting_fac1.sh

upsetting_fac2.sh

upsetting_fac3.sh

vmlinuz.trx

固件格式和解包命令详见:小米路由器固件分析

固件打包

首先要创建一对RSA私钥和公钥,为了以后大家能共享自制固件,建议采用这里提供的密钥文件:private.pem public.pem

下面以稳定版0.4.85为例,介绍固件修改和打包方法。

固件解包

cd /userdisk/data

mkdir xqimage

cd xqimage

wget -O mkxqimage.tgz http://www.iptvfans.cn/miwifi/mkxqimage.tgz

tar xzf mkxqimage.tgz

wget -O brcm4709_hdr_039ef_0.4.85.bin http://bigota.miwifi.com/xiaoqiang/rom/brcm4709_hdr_039ef_0.4.85.bin

./mkxqimage -x brcm4709_hdr_039ef_0.4.85.bin

得到2个文件:

-rw-r--r-- 1 root root 16646144 May 30 08:14 brcm4709_nor.bin

-rw-r--r-- 1 root root 34853955 May 30 08:14 root.ext4.lzma

前者是FLASH全镜像,这个文件成分比较复杂,目前不建议修改它。

后者是硬盘固件镜像,先用unlzma解压,得到root.ext4

unlzma root.ext4.lzma

固件修改

用mount命令加载

mount -o loop -t ext4 root.ext4 /mnt

接下来先把RSA公钥替换掉,然后开SSH

cd /mnt/usr/share/xiaoqiang

mv public.pem public.pem.orig

cp /userdisk/data/xqimage/public.pem public.pem.new

ln -s public.pem.new public.pem

sed -i 's/ssh_en=0/ssh_en=1/g' xiaoqiang-defaults.txt

把一些关掉的Web界面恢复

cd /mnt/usr/lib/lua/luci/controller/web

sed -i 's/--entry/entry/g' index.lua

如果需要,还可以对固件进行修改,这里就不再多说。

将上面的修改保存回硬盘固件镜像文件中:

cd /userdisk/data/xqimage

umount /mnt

sleep 30

# 一定要等待一会儿后再压缩镜像

固件打包

将修改后的硬盘镜像压缩:

./lzma e -a0 root.ext4 root.ext4.lzma

./mkxqimage -o brcm4709_hdr_00000_0.4.85.bin -p ./private.pem -t 5 -f brcm4709_nor.bin -f root.ext4.lzma

以上过程的命令已存储在一个脚本文件中,可直接下载:rom_modify.sh

升级准备

公钥替换

在升级上一步生成的自制固件前,还需要对当前路由器的RSA公钥进行替换,具体方法如下:

mount -o rw,remount /

cd /usr/share/xiaoqiang

mv public.pem public.pem.orig

cp /userdisk/data/xqimage/public.pem public.pem.new

ln -s public.pem.new public.pem

mount -o ro,remount /

也可以直接下载脚本文件:rsa_key.sh

自制固件测试

用下面的命令测试:

cd /userdisk/data/xqimage

mkdir test

cd test

mkxqimage -x ../brcm4709_hdr_00000_0.4.85.bin

ls -l

如果解压固件过程中没有出现错误信息,最后列表出2个文件,说明自制固件打包没问题。

-rw-r--r-- 1 root root 16646144 Jun 1 12:00 brcm4709_nor.bin

-rw-r--r-- 1 root root 33188560 Jun 1 12:00 root.ext4.lzma

注意:brcm4709_nor.bin文件的大小一定是16646144。

验证root.ext4.lzma是否正确:

cd /userdisk/data/xqimage/test

unlzma root.ext4.lzma

mount -o loop -t ext4 root.ext4 /mnt

ls -l /mnt/usr/share/xiaoqiang/public.pem*

grep ssh_en /mnt/usr/share/xiaoqiang/xiaoqiang-defaults.txt

umount /mnt

上面命令执行完毕后,应该能看到一些信息(时间信息会有差别):

lrwxrwxrwx 1 root root 14 Jun 1 11:30 /mnt/usr/share/xiaoqiang/public.pem -> public.pem.new

-rw-r--r-- 1 root root 451 Jun 1 11:30 /mnt/usr/share/xiaoqiang/public.pem.new

-rwxr-xr-x 1 root root 451 May 27 11:33 /mnt/usr/share/xiaoqiang/public.pem.orig

ssh_en=1

备份自制固件

在计算机资源管理器中输入: \\192.168.31.1\XiaoMi\xqimage ,目录列表中能看到brcm4709_hdr_00000_0.4.85,将该自制固件复制到计算机上。

升级自制固件

登录小米路由器管理页面,在“路由设置”-“高级功能”-“路由器手动升级”界面中选中brcm4709_hdr_00000_0.4.85,点“上传并安装固件”按钮,等待数分钟。

安装完固件后,SSH有可能没有启动,这是因为升级固件时将nvram项ssh_en清为0,而第一次启动时通过defaults设置将ssh_en设置为1的动作在dropbear启动之后。只需要重启一下路由器,就能够SSH登录了。

特别提醒

由于替换了路由器中的RSA公钥,路由器不能升级官方固件,如果想恢复成官方固件,只需换回原来的公钥,方法如下:

mount -o rw,remount /

cd /usr/share/xiaoqiang

cp public.pem.orig public.pem

mount -o ro,remount /

php 小米路由器_小米路由器固件修改相关推荐

  1. mac电脑投屏到小米盒子_小米盒子不能iPhone投屏

    一. 找不到小米盒子或者小米电视: 步骤1 : 进入小米盒子的设置->系统升级,确认盒子版本号 大于等于1.1.53 (仅针对增强版小米盒子). 如果是小米电视请确认是最新版本 步骤2:检查手机 ...

  2. 仿 小米运动_小米有品上架“黑科技”床垫,让你睡在“空气”上,改变睡眠体验...

    打工人的一天,可能只有躺在床上,才能完全放松下来了! 不过,如果选错了床垫,除了材质不环保,甲醛超标,睡得也不会太舒服,一晚上下来,腰酸背疼的. 对于久坐办公室的小伙伴们来说,更是雪上加霜! 这是因为 ...

  3. arp 华为 查看 路由器_华为路由器运行状态查看-路由器

    华为路由器运行状态查看 为了查看路由器的工作状态,和输入指令是否已经起作用,这时我们就需要用到DISPLAY命令,该命令可以让我们随时了解路由器的各种状态,以便排除故障. 华为路由器的display命 ...

  4. 全网通蜂窝路由器_工业路由器双sim卡

    TR341全网通蜂窝路由器,电信/移动/联通5G4G网络,并往下兼容 EDGE.CDMA 1X 及 GPRS 网络.支持双卡双模,标准的抽屉式用户卡接口,支持 1.8V/3V SIM/UIM 卡,内置 ...

  5. python miio 连接小米网关_小米门窗传感器2本质是感应门窗开合的,结果更好用的却是光线传感器...

    "天下无贼"是每个人的愿景,但是,光有愿望是不行的,得有实实在在的安防措施才行,于是,大街小巷装上了高清摄像头,几乎所有小区和单位都设有门岗,就连支付宝.微信这些都有盗刷百分之百赔 ...

  6. cli命令行配置路由器_[企业路由器应用] 命令行—登陆

    (本文适用于TL-ER6120 V1.0.TL-ER6110 V1.0.TL-ER5120 V1.0.TL-ER5110 V1.0.TL-ER5520G V1.0.TL-ER5510G V1.0.TL ...

  7. 普通路由器改4g路由器_工业级路由器凭什么牛?智能组网、4G全是干货!

    因为公司里有远程办公的需求,所以,本人已经接触过好几款蒲公英路由器了.蒲公英路由器的智能组网功能,真的太实用了,让企业的远程办公成本.运维成本一下就降下来了,说实话,我之前真不知道,原来工业路由器居然 ...

  8. java抢购小米手机_小米手机怎样抢购

    小米手机性价比高,是很多人想要购买的手机.但是由于小米采用的是饥饿营销策略,所以购买小米手机需要每周二中午12:00通过网站抢购,不然只能通过黄牛多花几百块钱的费用.但是小米手机怎么抢呢,下面我就来介 ...

  9. adb shell 小米手机_小米手机ADB删除系统应用去广告

    adb shell pm uninstall --user 0 com.miui.systemAdSolution(小米系统广告解决方案,必删) adb shell pm uninstall --us ...

  10. arp 华为 查看 路由器_华为路由器 配置arp

    华为路由器 配置arp Quidway Eudemon 100/100E/200/200S 配置指南 网际互联分册 目 录文档版本 04 2008-01-25 华为技术有限公司 i目目 录录 9 配置 ...

最新文章

  1. 大咖 | 斯坦福教授骆利群:为何人脑比计算机慢1000万倍,却如此高效?
  2. 一首考研人不得不看的立志诗!!!!!!
  3. JavaScript实现完整的matrix矩阵类(附完整源码)
  4. SQL字符串处理函数大全
  5. Ant Design(ui框架)
  6. 测试服务器最大链接数_JMeter压力测试集合点教程
  7. 从gitlab上拉代码_从gitlab上拉取代码并一键部署
  8. 如何使用Cmder替换cmd
  9. Python 全栈开发十 socket网络编程
  10. linux boost 1.53编译,boost-1.53源码编译
  11. EasyRecovery用法进阶--高阶设置使用技巧
  12. 为了进大厂,韩顺平Java教程百度云
  13. 移动应用开发 jQuery Mobile
  14. 爬取千库网ppt_Python——如何实现千图成像:初级篇(从图片爬取到图片合成)...
  15. 金毅泓:10.6美元持续上涨,金价萎靡关注晚间ADP数据
  16. java 连线题_java练习题
  17. python实现端口扫描器_python 实现端口扫描工具
  18. 武汉理工大学华夏学院计算机类,2015年武汉理工大学华夏学院招生专业代码
  19. 对话机器人(一)——对话机器人基础知识
  20. Kali linux安装Nvidia官方显卡驱动的心灵路程

热门文章

  1. CSS实现盒子居中对齐的七种方法
  2. EGE绘图之四 Gif动图播放
  3. 大学什么专业学matlab,我选自动化专业,该专业在大学里学些什么课程?
  4. linux日志关键词高亮,【转载】Linux使用tailf高亮显示关键字
  5. ug12对计算机配置要求,ug12.0对电脑配置要求
  6. ios定位权限plist_[译] iOS 请求定位权限
  7. Java冒泡排序法 降序
  8. 对视频中车辆车牌进行识别并圈出
  9. 《未来世界的幸存者》读书摘录及笔记
  10. 小议新版GB9706.1-2020的基本性能