[闲聊] H3C NX30pro 刷机 MT7981系列

楼主: tomsawyer (安安)   2023-10-14 11:56:13
前阵子看上了MT7981,不错的性能,不太热的温度
考虑小米系列360T7 ~= WR30U ~= AX3000T ~= AX3000NE,于是我选了刚上市AX3000T
没想到小米跟TP一样韧体封的比较死,虽然现在MTK系的都用魔改的openwrt了,但还是需
要依靠一些exploit来打开telnet或ssh
比如说 WR30U,必须依靠他搭配的中国联通elink IoT的漏洞执行任意程式码
https://github.com/PatriciaLee3/wr30u_ssh
https://forum.openwrt.org/t/openwrt-support-for-xiaomi-ax3000ne/153769
比如说 XDR6088/6086,要依靠VPN的接口没有sanitize来执行任意程式码
https://forum.openwrt.org/t/adding-support-for-tp-link-xdr-6086/140637/17
但这些在AX3000T目前来说都修干净了,我也有试过研究几个exploit
比如set_sys_time
然后log会跟我说hack detected 笑死
于是我又买了H3C的NX30pro
目前7981的平台 NX30pro AX3000T XDR3001表现都不错
NX30pro这款好在,默认开放telnet Port 99,有curl可以用,于是你去openwrt官网随便
捞一个dropbear的ipk
opkg install后就有ssh/scp可以用了
使用telnet连到 192.168.124.1 port 99
然后
curl -o /tmp/dropbear.ipk https://downloads.openwrt.org/releases/packages-19.
07/aarch64_cortex-a53/base/dropbear_2019.78-2_aarch64_cortex-a53.ipk
opkg install /tmp/dropbear.ipk
/etc/init.d/dropbear enable
/etc/init.d/dropbear start
之后就可用winscp 选择scp协议 连上一样的192.168.124.1 port 22
首先我们需要把mtd通通备份起来
警告:经爬文后,如果你刷了U-boot,再刷回原厂后,如果再原厂升级,会变砖的可能
mtd分区如下
[ 0.829730] nmbm nmbm_spim_nand: Signature found at block 1023 [0x07fe0000]
[ 0.837461] nmbm nmbm_spim_nand: First info table with writecount 0 found
in block 960
[ 0.847548] nmbm nmbm_spim_nand: Second info table with writecount 0 found
in block 963
[ 0.855552] nmbm nmbm_spim_nand: NMBM has been successfully attached
[ 0.862167] 9 fixed-partitions partitions found on MTD device
nmbm_spim_nand
[ 0.869218] Creating 9 MTD partitions on "nmbm_spim_nand":
[ 0.874699] 0x000000000000-0x000000100000 : "BL2"
[ 0.879929] 0x000000100000-0x000000180000 : "u-boot-env"
[ 0.885737] 0x000000180000-0x000000380000 : "Factory"
[ 0.891278] 0x000000380000-0x000000580000 : "FIP"
[ 0.896487] 0x000000580000-0x000004580000 : "ubi"
[ 0.901796] 0x000004580000-0x000004b80000 : "pdt_data"
[ 0.907430] 0x000004b80000-0x000005180000 : "pdt_data_1"
[ 0.913265] 0x000005180000-0x000005280000 : "exp"
[ 0.918446] 0x000005280000-0x000007800000 : "plugin"
dev: size erasesize name
mtd0: 08000000 00020000 "spi0.0"
mtd1: 00100000 00020000 "BL2"
mtd2: 00080000 00020000 "u-boot-env"
mtd3: 00200000 00020000 "Factory"
mtd4: 00200000 00020000 "FIP"
mtd5: 04000000 00020000 "ubi"
mtd6: 00600000 00020000 "pdt_data"
mtd7: 00600000 00020000 "pdt_data_1"
mtd8: 00100000 00020000 "exp"
mtd9: 02580000 00020000 "plugin"
mtd3(Factory)跟无线芯片的校准、MAC地址有关,通常不会去动
mtd4(FIP)是要刷U-boot,也就是我们最主要的目标,透过刷了他,就能去刷主韧体的部分
跟androir unlock bootloader的目的是要刷TWRP来对/system(mtd5)下手很像
先备份 用dd就可以备份了
比如说要备份固件区
dd if=/dev/mtd5 of=/tmp/backup_mtd5.img
第一次备份mtd1-4 6-9,因为mtd5也就是固件区比较大(64MB),下载前备份完的再删掉清
空间,分开备份比较比较好,用winscp捞出来
下一步要刷U-boot,方便刷机,刷有HTTP接口的
参考这篇
https://blog.qust.me/nx30pro
上传U-boot到/tmp(一定要传到tmp底下)之后
先检查md5
md5sum uboot.bin
确认是否是5c12开头
然后
mtd write /tmp/uboot.bin FIP
手动拔电之后电脑接Lan1 按住reset再插电
IP设静态 192.168.1.2 连上192.168.1.1
选择NX30pro.bin上传,这是个immortalwrt的版本。
然后等他自动重开
重开之后用dhcp连192.168.6.1就有了
https://i.imgur.com/KvAO6Wj.png
如果不想要这么花俏的版本,想要干净一点的
到immortalwrt的firmwareselector 找nx30pro 有带nmbm字样的 一样步骤 按住reset进192
.168.1.1刷入factory.bin
这样就是一个干净的openwrt了
还原的步骤为反向操作:
一样按住reset再插电,设定手动IP192.168.1.2,连上192.168.1.1
选择之前备份的mtd5.img来刷入,这样就成功了
若哪一天用着原厂韧体突然要升级,U-boot已经刷过有顾虑的话,可以将U-boot还原
还原也是一样反操作
用telnet连上192.168.124.1 port 99
刷入ssh,把mtd4上传到/tmp或你把mtd4放在某个地方用curl拉比较快
然后 mtd write /tmp/mtd4_backup.img FIP
这里有几个我也不太懂得问题,值得放在这里
1.
因为不是用nor flash了,>= 32MB的flash有高机率是nand,而nand有坏块的问题
mtk在这里使用了NMBM管理坏块,然而传统openwrt是不支援这个东西的,他的Bootloader载
入是纯用offset,然且nmbm会影响整个mtd读到的offset
据说,如果你的坏块好死不死在前几个block,刷入U-boot时就有可能变砖
原本openwrt不开启nmbm的说法:
https://github.com/openwrt/openwrt/commit/dc2d4d73939c3d86a8e9d968c5c3462f92771bc6
"NMBM should always be disabled if using UBI because UBI is intended and
expects to run on the raw flash, NMBM is unneeded and only adds confusion and
complexity without any need."
恩山237大老的说法:
bl2的atf(arm-trusted-firmware)也是支持nmbm的,最极端的例子,fip附近有坏块,nmbm下重写了不支持nmbm的
bl2和fip。系统启动的时候不支持nmbm的bl2读不到正确的fip内容,那路由器直接变砖,
只能上编程器 。
他的原话(指openwrt的daniel)是ubi自己有坏块管理,不需要nmbm。但并没考虑fip和factory分区一但有坏块
,不开nmbm的atf和系统根本读不到正确的数据,后果轻则无线校准读不到准确的,重则
直接变砖。
参考这几篇的说法
https://fast.v2ex.com/t/962550
https://www.right.com.cn/forum/thread-8292288-1-1.html
https://www.right.com.cn/forum/thread-8227879-1-1.html
https://www.right.com.cn/forum/thread-8291994-1-1.html
尤其这篇
https://www.right.com.cn/FORUM/thread-8244730-1-1.html
2.
但是据说,如果不替换BL2(如果你按照openwrt或immortalwrt官方的指示是要刷BL2的)
preloader -> BL2
BL31-Uboot -> FIP(U-boot)
如果你刷的U-boot是本文章中前面blog给的u-boot,那要刷的是NMBM layout enabled 的im
age,目前已确认用U-boot刷immortalwrt跟x-wrt的带nmbm的factory.bin是可以刷的
要注意与如果你刷过BL2就别尝试用nmbm enabled layout (可能会出问题
https://www.nonedata.com/posts/H3C-NX30PRO.html#%E5%88%B7%E5%85%A5-openwrt-%E6
%88%96%E8%80%85-immortalwrt-%E5%8E%9F%E7%89%88%E7%B3%BB%E7%BB%9F
https://firmware-selector.immortalwrt.org/?version=23.05.0-rc4&target=mediatek
%2Ffilogic&id=h3c_magic-nx30-pro-nmbm
https://downloads.x-wrt.com/rom/
具体note:
https://github.com/x-wrt/x-wrt/commit/618fe4cae8a3fcbbe184b603c6ff5ed848d9785d
3.
MT798x是有闭源驱动的样子(尤其是GL.inet),可能要去思考一下如果你的目的是要高速
的wifi而不是像我想玩玩具
那要思考一下要不要刷机
4.
这东西还有大分区小分区的问题
参考前面的mtd block,存固件的mtd5只有64M,我刷完这个随附的immortal大概剩16M可以
给我玩
刷完immortal stock nmbm有41mb,刷完xwrt stock nmbm有36mb可以用
我的目的只有wireguard+zerotier+msdlite+连CHT Wifi或iTaiwan,已经够了
还可以偶尔玩玩hcxdumptool
如果要全部利用的话,还要刷适合大分区的U-boot,就能完整利用mtd5之后的所有空间
作者: IOU9527 (193&197~~达成!!)   2023-10-14 12:11:00
等之后AX3000T看能否刷机
作者: GJME ((╯‵□′)╯︵┴─┴)   2023-10-14 15:49:00
没想到现在刷机这么折腾人,手上几台MTK7620/7621看来还能跑OpenWRT好几年
作者: Windcws9Z (闻肉丝就饿)   2023-10-14 17:56:00
刷机 一直都很折腾,是刀硕特别好刷而且不容易死
作者: birdy590 (Birdy)   2023-10-14 18:04:00
跟 bootloader 有关 有些平台号称刷不死 就容易处理要玩刷机 拆机搭TTL 是最低要求 但这样还是有可能出事
作者: virgil246 (virgil585)   2023-10-14 18:14:00
作者: empingao (empingao)   2023-10-14 18:16:00
驱动还是 git01.mediatek.com 这个好,不过要自己搞。
作者: Windcws9Z (闻肉丝就饿)   2023-10-14 18:43:00
对..以前要玩刷机,拆机TTL是基本有的还要自己焊上针脚
作者: Saren (Saren)   2023-10-14 19:25:00
MT7621很好用呀 gbe环境很够用 2.5g以上就不好用了
作者: kobe8112 (小B)   2023-10-14 22:55:00
抱歉有点职业病,SPI是通讯接口不是硬件封装XD
作者: birdy590 (Birdy)   2023-10-14 22:59:00
看对岸修路由器的也在叫苦~ 现在跟修手机一样要解焊重焊以前如果救砖是搭个脚就刷了 现在可能还要管坏块
作者: Saren (Saren)   2023-10-14 23:47:00
NAND用在路由器上大都是SLC 相对比较不容易坏cell

Links booklink

Contact Us: admin [ a t ] ucptt.com