[閒聊] 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