找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1519|回复: 5

关于HN841V固件的些许学习进展,找了windows下拆包的方法和工具

[复制链接]
本帖最后由 rat9 于 2022-2-23 13:46 编辑

之前HN841V 输入 sudo restorehwmod.sh 命令后,进不了8080的管理页面。
见之前的 HN8145V V5R019 折腾总结帖
https://www.right.com.cn/forum/thread-8147423-1-1.html
于是一只希望能恢复这些文件,经过比对,打不开华为界面是因为缺少了html目录下缺少了frame_huawei,frame_XGPON,如何恢复这些文件呢,目前大神给出的办法就刷固件。

我在隔壁论坛好不容易凑齐mao币,下载了2个固件,都不是官方的,属于备份合成的固件。
HN8145V_V500R019C30SPC010B022
HN8145V_V500R019C30SPC010B028
我的设备 系统版本更新一些
HN8145V_V500R019C30SPC010B250

我第一次刷是用ONT工具升级的,过程费时很长,进度条走完还会接着循环,但是最后设备灯不闪了,然后杯具了。等了很久,只有电源会亮,其它灯都不会亮,而且按复位键也没反应,我当时就已经接受是变砖的事实。
也没拔电源,就开始网上搜索芯片和编程器了,搜了半天,发现这个芯片是不贵,但是能烧录的编程器很贵,普通的CH341A是不可能刷了。

当时心情正郁闷着,忽然发现网络不通了(无线网卡连WIFI),一看是猫重启了,并且自动获取了IP ,幸好没有真的变砖,虚惊一场。

后来我用命令查看了系统版本:
SU_WAP>display inner version
MainVersion      : V500R019C30SPC010B250
StandbyVersion   : V500R019C30SPC010B028
ComponentVersion : not exist
ResourceVersion  : not exist
PluginVersion    : not exist
VersionMask      : 80

发现这个华为光猫居然是双系统,主系统是B250,备份系统是B028,也就是我刷的那个固件。
虽然还能启动,但是出现了新的症状,默认界面进不去了,8080管理界面却能登录。之后又开始用tftp刷。
SU_WAP>load pack by tftp svrip 192.168.1.2 remotefile HN8145V_V500R019C30SPC010B028_mod.bin
success!
SU_WAP>Software Operation Faild!RetCode=0xf720404f!
tftp日志显示:
Read request for file <HN8145V_V500R019C30SPC010B028_mod.bin>. Mode octet [21/02 22:29:11.472]
OACK: <tsize=39693523,> [21/02 22:29:11.472]
Using local port 61545 [21/02 22:29:11.472]
File <HN8145V_V500R019C30SPC010B028_mod.bin> : error 10054 in system call recv 远程主机强迫关闭了一个现有的连接。 [21/02 22:29:12.626]
我估计还是固件校验失败,tftp文件能传到80%,然后才报错。

刷固件有两个思路,一个是刷完整的固件,一个是刷某个特定的分区。
但是两个完整的备份固件都不成功,就只能试试刷某个特定的分区的包了。
目前还没下载到15个分区的完整备份包。因为没有论坛币了,过些天存够了看能不能再试试。

然后我又查了一些资料,主要是这个帖子:

华为光猫分区备份,还原,制作固件教程
http://www.chinadsl.net/forum.php?mod=viewthread&tid=158569

讲了如何备份每个分区,已经如何打包成一个固件。
我这里只讲下一些变化。以前的固件有20个分区,而新的固件只有15个分区。

可以看通过命令 cat /proc/mtd查看:
WAP(Dopra Linux) # cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00100000 00020000 "bootcode"
mtd1: 07f00000 00020000 "ubilayer_v5"
mtd2: 0001f000 0001f000 "flash_configA"
mtd3: 0001f000 0001f000 "flash_configB"
mtd4: 0001f000 0001f000 "slave_paramA"
mtd5: 0001f000 0001f000 "slave_paramB"
mtd6: 0160a000 0001f000 "allsystemA"
mtd7: 0160a000 0001f000 "allsystemB"
mtd8: 009b0000 0001f000 "exrootfs"
mtd9: 0081d000 0001f000 "frameworkA"
mtd10: 0081d000 0001f000 "frameworkB"
mtd11: 0001f000 0001f000 "wifi_paramA"
mtd12: 0001f000 0001f000 "wifi_paramB"
mtd13: 00117000 0001f000 "keyfile"
mtd14: 03013000 0001f000 "file_system"

我自己试着备份了一下,下面就是对应的备份命令:
dd if=/dev/mtd0 of=/mnt/usb/USB_disc1/0-bootcode.bin
dd if=/dev/mtd1 of=/mnt/usb/USB_disc1/1-ubilayer_v5.bin
dd if=/dev/mtd2 of=/mnt/usb/USB_disc1/2-flash_configA.bin
dd if=/dev/mtd3 of=/mnt/usb/USB_disc1/3-flash_configB.bin
dd if=/dev/mtd4 of=/mnt/usb/USB_disc1/4-slave_paramA.bin
dd if=/dev/mtd5 of=/mnt/usb/USB_disc1/5-slave_paramB.bin
dd if=/dev/mtd6 of=/mnt/usb/USB_disc1/6-allsystemA.bin
dd if=/dev/mtd7 of=/mnt/usb/USB_disc1/7-allsystemB.bin
dd if=/dev/mtd8 of=/mnt/usb/USB_disc1/8-exrootfs.bin
dd if=/dev/mtd9 of=/mnt/usb/USB_disc1/9-frameworkA.bin
dd if=/dev/mtd10 of=/mnt/usb/USB_disc1/10-frameworkB.bin
dd if=/dev/mtd11 of=/mnt/usb/USB_disc1/11-wifi_paramA.bin
dd if=/dev/mtd12 of=/mnt/usb/USB_disc1/12-wifi_paramB.bin
dd if=/dev/mtd13 of=/mnt/usb/USB_disc1/13-keyfile.bin
dd if=/dev/mtd14 of=/mnt/usb/USB_disc1/14-file_system.bin

可以看出,命名变化很大,和uboot    kernel     rootfs三个概念很难简单对应起来。
作者还说,也可以用dd命令还原分区。如果能解包修改后然后打包回去刷机就完美了。
dd if=/mnt/usb/USB_disc1/3-uboot.bin of=/dev/mtdblock3
dd if=/mnt/usb/USB_disc1/9-kernel.bin of=/dev/mtdblock9
dd if=/mnt/usb/USB_disc1/11-rootfs.bin of=/dev/mtdblock11
而且用华为固件的HWFW_GUI工具可以合成完整固件。
(我想我刷的那2个备份固件包应该也是这个工具制作的)
https://github.com/csersoft/HWFW_GUI/releases
最新版本是1.08 :HWFW_GUI 1.0.8 Beta Build 005
其实固件编辑有2个困难,一个是解包,一个是打包。我今天写这篇文件就是实现了解包,
1、备份的完整固件解包。
可以用华为固件的HWFW_GUI工具导出,保存为.bin后缀的文件即可。

2、备份的bin 文件又如何打开呢? 专业的方法肯定是要在linux环境下操作。我不懂那些,让我搞个linux虚拟机都费劲,
(以前试着用大神的源码自定义固件)所以这次只考虑Windows下的解包方式。
翻论坛帖子的时候,无意看到一个回复,说解包可以用最新版7z来解包。,我试了一下还真成功了。
分区6-10的包都可以打开。1和13也可以打开,但是 要先导出一下。

完整固件包其实也可以用7z直接打开,打开看到的就是一个linux系统的文件目录。
应该把系统文件分别挂载存放在不同的分区。但是HWFW_GUI工具导出的bin文件和15个分区备份的bin并不全是一一对应的。

我想要恢复的华为界面的html文件是保存在mtd8  exrootfs.bin,

而备份固件 在 flash:rootfs 里面的rootfs包里。


另外我还找到一个windows环境下的unsquashfs解包打包工具,经测试可以解包rootfs
https://blog.csdn.net/m0_50009240/article/details/121017387

1 将文件解压到Windows可执行目录下
2 通过win+R,然后cmd进入解压的当前目录
3 执行mksquashfs.exe 文件1 ......  目标文件目录进行打包
           unsquashfs.exe 目标文件进行解包
4 其余命令参数参考执行程序的提示或Linux下相关参数

下载链接:https://pan.baidu.com/s/1J-ODAGl4QsQo_HKcQLF15Q
提取码: sg5y

打包我暂时没去尝试,根据我以前折腾路由器的经验,打包是需要依赖环境的,否则容易出问题。打包出来的文件我自己都不敢刷。因为这个不像路由器,可以用编程器救砖。
我的这个光猫目前通过jffs2恢复到电信界面,但是现在 192.168.1.1还是进不去,8080管理界面正常,今天光猫LOID注册也正常,我就这样凑合用着吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
大佬大佬,学习了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
思路很好,赞赞赞
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

恢复了当然进不了8080,折腾啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
那个固件是我合成的,刷不进去的就别试了,你需要刷新版R020我修改过的才有华为界面
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
那个固件是我合成的,刷不进去的就别试了,你需要刷新版R020我修改过的才有华为界面
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 18:52

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表