php 小米路由器_小米路由器固件修改
小米路由器官方提供的固件是自定义格式,而且刷机时要验证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 小米路由器_小米路由器固件修改相关推荐
- mac电脑投屏到小米盒子_小米盒子不能iPhone投屏
一. 找不到小米盒子或者小米电视: 步骤1 : 进入小米盒子的设置->系统升级,确认盒子版本号 大于等于1.1.53 (仅针对增强版小米盒子). 如果是小米电视请确认是最新版本 步骤2:检查手机 ...
- 仿 小米运动_小米有品上架“黑科技”床垫,让你睡在“空气”上,改变睡眠体验...
打工人的一天,可能只有躺在床上,才能完全放松下来了! 不过,如果选错了床垫,除了材质不环保,甲醛超标,睡得也不会太舒服,一晚上下来,腰酸背疼的. 对于久坐办公室的小伙伴们来说,更是雪上加霜! 这是因为 ...
- arp 华为 查看 路由器_华为路由器运行状态查看-路由器
华为路由器运行状态查看 为了查看路由器的工作状态,和输入指令是否已经起作用,这时我们就需要用到DISPLAY命令,该命令可以让我们随时了解路由器的各种状态,以便排除故障. 华为路由器的display命 ...
- 全网通蜂窝路由器_工业路由器双sim卡
TR341全网通蜂窝路由器,电信/移动/联通5G4G网络,并往下兼容 EDGE.CDMA 1X 及 GPRS 网络.支持双卡双模,标准的抽屉式用户卡接口,支持 1.8V/3V SIM/UIM 卡,内置 ...
- python miio 连接小米网关_小米门窗传感器2本质是感应门窗开合的,结果更好用的却是光线传感器...
"天下无贼"是每个人的愿景,但是,光有愿望是不行的,得有实实在在的安防措施才行,于是,大街小巷装上了高清摄像头,几乎所有小区和单位都设有门岗,就连支付宝.微信这些都有盗刷百分之百赔 ...
- 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 ...
- 普通路由器改4g路由器_工业级路由器凭什么牛?智能组网、4G全是干货!
因为公司里有远程办公的需求,所以,本人已经接触过好几款蒲公英路由器了.蒲公英路由器的智能组网功能,真的太实用了,让企业的远程办公成本.运维成本一下就降下来了,说实话,我之前真不知道,原来工业路由器居然 ...
- java抢购小米手机_小米手机怎样抢购
小米手机性价比高,是很多人想要购买的手机.但是由于小米采用的是饥饿营销策略,所以购买小米手机需要每周二中午12:00通过网站抢购,不然只能通过黄牛多花几百块钱的费用.但是小米手机怎么抢呢,下面我就来介 ...
- adb shell 小米手机_小米手机ADB删除系统应用去广告
adb shell pm uninstall --user 0 com.miui.systemAdSolution(小米系统广告解决方案,必删) adb shell pm uninstall --us ...
- arp 华为 查看 路由器_华为路由器 配置arp
华为路由器 配置arp Quidway Eudemon 100/100E/200/200S 配置指南 网际互联分册 目 录文档版本 04 2008-01-25 华为技术有限公司 i目目 录录 9 配置 ...
最新文章
- 大咖 | 斯坦福教授骆利群:为何人脑比计算机慢1000万倍,却如此高效?
- 一首考研人不得不看的立志诗!!!!!!
- JavaScript实现完整的matrix矩阵类(附完整源码)
- SQL字符串处理函数大全
- Ant Design(ui框架)
- 测试服务器最大链接数_JMeter压力测试集合点教程
- 从gitlab上拉代码_从gitlab上拉取代码并一键部署
- 如何使用Cmder替换cmd
- Python 全栈开发十 socket网络编程
- linux boost 1.53编译,boost-1.53源码编译
- EasyRecovery用法进阶--高阶设置使用技巧
- 为了进大厂,韩顺平Java教程百度云
- 移动应用开发 jQuery Mobile
- 爬取千库网ppt_Python——如何实现千图成像:初级篇(从图片爬取到图片合成)...
- 金毅泓:10.6美元持续上涨,金价萎靡关注晚间ADP数据
- java 连线题_java练习题
- python实现端口扫描器_python 实现端口扫描工具
- 武汉理工大学华夏学院计算机类,2015年武汉理工大学华夏学院招生专业代码
- 对话机器人(一)——对话机器人基础知识
- Kali linux安装Nvidia官方显卡驱动的心灵路程