找回密码
 注册

QQ登录

只需一步,快速开始

查看: 52607|回复: 53

【教程】华为光猫备份分区固件(busybox dd命令)

[复制链接]
发表于 2018-9-21 16:53:54 | 显示全部楼层 |阅读模式
本帖最后由 anysoft 于 2018-10-3 13:39 编辑 & R" V, P# d' V1 D+ K

7 }/ Z# k: E* v- \  `9 l$ O               在我上一篇帖子中提过,光猫其实和路由器一样。底包都是改版的openwrt,然后固件打包解包过程加了华为自己的结构和加密处理而已。光猫加入了驱动和对应程序。所以完全可以把光猫当做路由来玩,特别是当前的光猫配置越来越好,还能挂载USB。
& D" z3 F' A% ~9 @4 @! u+ k1 }
% m+ S' W& b) y  }' U; Q
8 y: x* E6 Y% H( g% A2 J; @# A# l
            今天正题是如何备份光猫固件。华为光猫的刷机固件有自己独特的结构,常规的解包方式无用,看雪bxc大神分析了固件格式并开发了hwfw_gui。这个工具可以拆分华为固件,编辑内部文件。rootfs导出后是uimg文件 squashfs。
+ ?- {- F+ m7 z6 U( u  t- e
+ u6 k+ |* n7 h! Z4 T5 L
& c! V' H& I/ M# y
           废话不多说直接上备份命令(路由器固件备份命令):1 l7 Z. U/ G, q; m, t. h
1、先获取、补全shell进入: |" u" s' Q# s! e# Y

* [! ]1 ^; j" i 本文不就演示如何获取shell了,自行研究(获取shell都不会那么后边也没有看下去的必要)
( Y3 A. X2 K$ X- h
$ n0 m% d9 k" v) T5 L  进入shell之后用户还不是root,可以用whoami命令查看当前用户,此时再执行su,密码:admin就变成root了。
/ _( V' }" S3 `; F% d$ J2、cat /proc/mtd 查看本机mtd信息
6 A+ ^' N" T8 y6 ~
7 f' _7 P' c! g  M5 T1 {! a* b

* P7 P7 j& r! _: {3 B3 g" S1 Q

所有的mtd设备和别名都一目了然


* P/ E" r5 j* n# q* F, N


1 }0 q* a0 I' }0 ], [: z( J3、df查看挂载点信息
1 G: |4 |3 z0 a
/ z' w/ v& L' n$ v: B# N, O) r5 l% N0 \0 Y$ r" i, F
; P* X& I9 f4 I5 _
     此处要注意,很多人备份或者上传文件都用/tmp文件夹,这里tmp文件夹只有10MB无法存放大文件,所以不要备份到tmp,看哪个文件夹可用空间大就备份到哪里。我是用的/dev/shm文件夹,足够的空间。6 c% K1 Q( X  F% ?# ]7 T5 S
! b7 [/ ?. P, r
4、备份每个dev
, J+ \. `6 H" n6 ~: obusybox dd if=/dev/mtd12 of=/dev/shm/rootfsA.bin
0 ?8 Z( e" c  ?1 ?' c! M* ~6 _+ R  q7 H7 v, R& g8 d+ s) v* M

7 ~  N0 c( O7 O7 G: O! v, Q

这里各个分区备份出来后可以用hwfw_gui替换内部文件,或者直接通过还原命令在其他设备刷入。


' c. d' q  R$ O- j8 r
2 z3 m) A+ O+ P" d2 ^8 n5 z  [3 m; f8 F& L7 a7 }
& A; }6 Z% i5 w) g( a
5、tftp导出备份文件到电脑! Q& x6 c; \6 W
tftp -p -l rootfsA.bin  -r rootfsA.bin 192.168.1.2. A: F+ F3 m5 y9 t% r
& _# K" |4 `2 B1 i
( n7 _7 M% f. Q7 c8 P
40MB文件,(bin固件直接导出rootfs.img是38.1MB,40MB是后边有FF的空数据)
4 U* {# W. ?! C: Z9 w3 @' `9 B  _; z( ?, P
6、从备份还原
( h' S) x% N( F4 Rdd if=ubootA.bin of=/dev/mtdblock3
5 ]" I' _) e. P& q0 f或者1 ?+ l8 p! D+ i) Q% R1 A* N
mtd -r write /dev/shm/rootfsA.bin rootfsA
) a# s/ k0 _$ ?7 p: N

( F2 K( m$ g0 x% J8 f5 s8 R1 s- n1 r. B1 Q
1 r8 T9 D, W2 s
' K6 N1 z& E6 ^/ Z: x+ s
  S- _+ v$ z" n9 f7 R& ]/ V0 G, \; S
/ ^: n  f: R  O; ?8 e" r
/ Y; }! `+ g# U' D+ ~
ultraedit查看如下:9 o- b- h+ }' H+ \* U# |) X- p! \
' @1 \" `+ C+ y; {" N: y; v
5 @+ [% [4 A9 {
hwfw_gui导出的rootfs.img3 d6 B0 I$ d9 b/ f; ~' \" U& t5 S

3 n0 U+ s' g& M0 P, U9 Z备份的rootfs( o$ y7 r& y% N% k9 Z

+ T5 B0 p, r- D  |# L5 t( a" \% ^2 I4 }

- u! v; c8 w8 b2 \4 i1 J) \最后说一下,备份时候一定要确认你选的目录有足够的空间,备份完毕后可以df查看目录使用率是否达到100%,如果达到表示固件基本上没有备份完全。没备份完全的不要刷,刷了就会变砖。; G: B4 Y% \  M& Z2 n
8 n, \1 e2 r) D4 }2 d2 ~

5 q% ~. @8 K' w1 Z4 @3 E(PS一句 如果你备份的bin文件16进制末尾不是FFFFFF那么你基本备份失败,因为mtd一般都会比img固件大,所以不会完全写满mtd设备,这样备份出来的bin末尾必定是FF空段)
. e! H, I. n7 Q; |2 M, V
* `/ J+ |8 g( s9 I
! h+ n3 i& }6 t% ?

/ w( B3 A, Z. E* z9 ~; H

# n/ a3 C, n1 K+ o  ?, N; D参考来源:- A6 a7 x8 u) \: o
https://blog.csdn.net/chang198932/article/details/36435209, v+ g$ r$ Z+ g4 O
https://blog.csdn.net/kepa520/article/details/511954399 m9 H, ^# w+ @1 K7 y
http://man.linuxde.net/tftp6 b" ^3 |3 A: M2 F

; ?  u2 d3 }0 ?! k5 q
& w& Y2 H/ T* I6 P6 q最最最后希望猫友可以帮忙备份一下 HS8145V的R018所有固件。拜谢!" Q, j6 J# R( [. k
  q2 |% p# G: [) X
可以参考这个帖子回复" y3 u, O- G3 [* r! ~
2 G* O, V6 @9 P3 p# e- g& s
https://www.chinadsl.net/forum.php?mod=viewthread&tid=158559&highlight=%B1%B8%B7%DD
6 T' s' i: ]9 G
8 }+ v+ v; p7 z; t6 _- n$ d

( n# W1 i7 h. L9 A5 Y' O: ?+ `# d$ _

% S8 L4 j' I5 B& \. }
8 x2 f3 L, m" B2 M& ^, f% Y. G6 O
) j6 ~/ i6 n* A& @

本帖子中包含更多资源

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

×
发表于 2018-9-28 19:02:32 | 显示全部楼层
本帖最后由 942250037 于 2018-9-28 19:04 编辑
- w. Q. d- y. v. d' @$ W% f6 i3 z8 D7 d3 z! Z, T
你还原分区命令都搞错了  以下恢复命令经过测试有效正确命令4 ~# V; `- m! g. n" H& }
busybox dd if=/dev/mtd11 of=/dev/mtdblock12    从11分区还原124 k. h; C  s! u6 \9 {
busybox dd if=/dev/mtd9 of=/dev/mtdblock10     从9分区还原10
0 V, t/ P" D0 i3 `9 l2 w$ j& Obusybox dd if=/dev/mtd3 of=/dev/mtdblock4      从3分区还原4  h7 R/ S/ d$ R2 _9 |9 P# l' M
cd /dev/shm 进入目录  tftp -g -r rootfsA.bin 192.168.1.2  上传+ b9 N  c6 O. u
' ?$ }# R9 [" i8 I
busybox dd if=/dev/shm/rootfsA.bin of=/dev/mtdblock12 还原12  
) R/ F# {5 {+ B! H3 Y2 vbusybox dd if=/dev/shm/kernelA.bin of=/dev/mtdblock10  还原10
2 u1 u' O$ t5 l) S8 }2 k, j7 vbusybox dd if=/dev/shm/ubootA.bin of=/dev/mtdblock4     还原4
5 R4 }/ Z; K/ t  E6 |
发表于 2018-9-23 18:36:13 | 显示全部楼层
备份末端FF删不掉
发表于 2018-9-21 18:26:47 | 显示全部楼层
你QQ号多少,我上次备份了的9 j% [% s+ k6 n4 v4 z
发表于 2018-9-21 20:40:23 | 显示全部楼层
感谢分享
' S* o8 f2 i0 k% z2 S3 v7 ~/ T1 B% h可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?
 楼主| 发表于 2018-9-21 21:12:26 | 显示全部楼层
naim1 发表于 2018-9-21 20:40
! e/ w0 z+ i" s" |6 @5 R感谢分享  R2 j5 W, L  O7 O! z" w8 R. y
可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?

* E: v* |- k" b( i5 w( Y备份出来的是hwfw_gui内部的rootfs,而不是刷机包bin。$ s" ^3 t1 U! w* X$ ~
无法直接备份出原始的刷机包的。要自己再用hwfw_gui拼凑。
1 f/ t$ Q0 r6 p2 W, A大哥比方,华为固件是windows的ISO安装镜像,我们备份的就像ghost备份。只能从备份还原方法刷其他机器备份的部分,而不能直接使能工具刷。
发表于 2018-9-21 21:39:36 | 显示全部楼层
华为的固件提取制作都比较简单,想要一些简单的功能也可以通过写个.SH 来解决。那位大神能搞定中兴烽火的固件编辑就好了
发表于 2018-9-21 21:46:58 | 显示全部楼层
本帖最后由 yecunbo 于 2018-9-21 21:48 编辑 3 m$ X! `) H% B" w0 U) b9 h; |
9 z7 V& a# {9 t' N) |% t
经过尝试可以备份但是无法恢复进去,我有R18版本的8145v可以备份给你,加W X: yezi860061交流学习!
发表于 2018-9-22 12:24:32 | 显示全部楼层
谢谢分享,学习了
 楼主| 发表于 2018-9-23 23:00:47 | 显示全部楼层
942250037 发表于 2018-9-23 18:361 `/ O; i# i- F5 k, S! z# c' l/ j( _
备份末端FF删不掉

7 O5 ?% L9 p, M2 _/ n7 N7 z用16进制编辑器可以删除的 不是直接delete键和backspace  通过右击编辑删除$ q( U0 P  l- u) n1 ]& A, B& z' Q( L
用winhex或者 ultraeditor 软件使用教程可以问度娘
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-5-3 21:21 , Processed in 0.027694 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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