找回密码
 注册

QQ登录

只需一步,快速开始

查看: 53608|回复: 53

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

[复制链接]
发表于 2018-9-21 16:53:54 | 显示全部楼层 |阅读模式
本帖最后由 anysoft 于 2018-10-3 13:39 编辑
5 n1 o7 w; n1 V. S% D! V
' d/ `; G* J; o5 [' b, g               在我上一篇帖子中提过,光猫其实和路由器一样。底包都是改版的openwrt,然后固件打包解包过程加了华为自己的结构和加密处理而已。光猫加入了驱动和对应程序。所以完全可以把光猫当做路由来玩,特别是当前的光猫配置越来越好,还能挂载USB。
5 y3 B1 B1 ^* i5 E
2 N- B  i" g5 s. N
5 Q9 j0 F# v( Y: Z
            今天正题是如何备份光猫固件。华为光猫的刷机固件有自己独特的结构,常规的解包方式无用,看雪bxc大神分析了固件格式并开发了hwfw_gui。这个工具可以拆分华为固件,编辑内部文件。rootfs导出后是uimg文件 squashfs。" q; ?: z* q% l- X, H

5 M  O: T/ T' `/ K+ @" a

4 w, f" t4 b, k4 X2 c( Q8 j/ s           废话不多说直接上备份命令(路由器固件备份命令):) R" G' P: @: H0 s
1、先获取、补全shell进入
2 D3 u6 @1 }* A  O1 M6 K2 ?- d6 \( V. o5 h& \! G+ \) H9 D0 ~( k
本文不就演示如何获取shell了,自行研究(获取shell都不会那么后边也没有看下去的必要)
# {7 w" f( K% E( Q/ r6 ]
7 D% _( q( ^( E! A$ V  D2 Z* f) U5 l  进入shell之后用户还不是root,可以用whoami命令查看当前用户,此时再执行su,密码:admin就变成root了。& ]+ g2 Q+ ]: j& I( L3 T
2、cat /proc/mtd 查看本机mtd信息
" Z! y. c0 r8 Q. ]% g! l6 ~7 s" d# g. N8 }2 K& c! a/ b


4 R% I. ?5 J  h1 l

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

3 g- ~: D( V  N2 _$ H7 ~

2 O: Z6 }, t- u+ ~/ b$ m+ k. I
3、df查看挂载点信息
& Y4 K' L4 T- J+ F0 \0 o1 {# \) T7 E( J, X
& Q/ z8 M; V7 p

8 Y' l4 {$ r+ W, m% k. i  y+ B     此处要注意,很多人备份或者上传文件都用/tmp文件夹,这里tmp文件夹只有10MB无法存放大文件,所以不要备份到tmp,看哪个文件夹可用空间大就备份到哪里。我是用的/dev/shm文件夹,足够的空间。# o' A/ r$ T+ g" J- ?

( c  {! g* E5 z4、备份每个dev0 B+ t/ ]8 s3 w
busybox dd if=/dev/mtd12 of=/dev/shm/rootfsA.bin
1 `- t; d# I" T5 Z2 b' z) P: @" m4 _  ?" \* F- W6 s! a2 p8 X& X

+ X) e4 G# ?6 C, ~( u1 o

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


  i/ e2 ?- N  S" n4 _) y' n& }9 a0 X: O- `) z- L* k

. O; k( n, @: F7 A1 i6 x! [# {0 T8 F
5、tftp导出备份文件到电脑
  Q  G7 g- k3 r6 k6 Z1 `tftp -p -l rootfsA.bin  -r rootfsA.bin 192.168.1.2# d5 U. ], W' b& W; z5 z
1 W* t% [9 N1 ~( f7 }; m
0 Z( a  Y; q. x# B) k" ^- j2 Z
40MB文件,(bin固件直接导出rootfs.img是38.1MB,40MB是后边有FF的空数据)
6 l# D* B9 M5 v. ]4 y7 k0 d/ z9 k* H6 A: C
6、从备份还原
7 H" [' [8 D1 p8 M6 J. K& k1 ydd if=ubootA.bin of=/dev/mtdblock3
' k1 b* x' i0 m" f+ `或者4 @4 F& ]& D' R& F/ T0 F4 n1 N. c8 u
mtd -r write /dev/shm/rootfsA.bin rootfsA
. w, E3 t- J' [. `
2 V4 r2 Y# f# b* {
$ O  {1 ]- l% k9 I6 J
$ }! q/ U. `8 @* r/ W+ p% o

6 \2 P  q$ a. ^9 \" }" p3 G* o* T

, j: k7 A0 Z& r4 T' V
+ v' X8 G$ Q2 |+ R3 B4 P0 x! k4 e
/ F# |1 R- {& |$ B$ D) K
ultraedit查看如下:
3 l' W( V5 }" y: f( q+ K6 J$ Y/ P: _0 L. O5 f) k1 B
, S4 m4 r. \7 l) [3 a
hwfw_gui导出的rootfs.img
* b; A# T% o" \( {7 h! e! a$ m; B2 b0 ^/ y# x' }
备份的rootfs- U+ [4 U. ?3 m* S
+ Q% ]7 Q8 x8 L6 C) S
5 c6 S6 n* |2 q0 p0 |8 t; B

/ o) p+ x; x5 t  y$ c最后说一下,备份时候一定要确认你选的目录有足够的空间,备份完毕后可以df查看目录使用率是否达到100%,如果达到表示固件基本上没有备份完全。没备份完全的不要刷,刷了就会变砖。
  t3 t+ J5 `* o' S2 y8 P
8 O% V4 _/ R; ^# ]4 ^. e. {
) [4 T0 f" ~: b
(PS一句 如果你备份的bin文件16进制末尾不是FFFFFF那么你基本备份失败,因为mtd一般都会比img固件大,所以不会完全写满mtd设备,这样备份出来的bin末尾必定是FF空段)7 d6 q8 E$ b2 d9 ^3 g7 E6 f0 b
  k! b: u# ?* w5 N) I- e' ^' g

1 t* }+ g/ l! G/ {
7 p8 J. m# ~; |/ E( {

- `1 r- x/ A/ a7 w* Z0 q4 m- l参考来源:; m, Y" k& \& S4 J  I
https://blog.csdn.net/chang198932/article/details/36435209
9 w8 c7 O0 B( J) H% f' Mhttps://blog.csdn.net/kepa520/article/details/51195439. T8 U0 z8 E8 E& G% h
http://man.linuxde.net/tftp6 _# f" D/ o( V& K0 M5 _2 k! M- z

2 p+ D) F- C& B3 A+ b6 p, \
8 `, C- i0 Q3 V" t最最最后希望猫友可以帮忙备份一下 HS8145V的R018所有固件。拜谢!7 V3 T# e0 x  d0 u

7 R  f: m, z( E: w7 c4 E0 k/ U可以参考这个帖子回复
  |7 b, P, b6 P( e6 \- v
. z3 C! [) v1 Z1 `* v7 g+ c- }
https://www.chinadsl.net/forum.php?mod=viewthread&tid=158559&highlight=%B1%B8%B7%DD
+ q' f5 N" I: L# Q# U3 L1 l+ w
/ J" u# z4 L7 ?/ F! V
0 d/ a& K! Z$ J. n

1 E4 g6 T9 k2 M, v# @- k; p6 ?0 _: N  [! x9 F4 Y0 w
1 [: Q: }4 g! K8 d* y: T

本帖子中包含更多资源

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

×
发表于 2018-9-28 19:02:32 | 显示全部楼层
本帖最后由 942250037 于 2018-9-28 19:04 编辑 : Y, h) t: R+ K2 H& ~

: ^- }% g+ L0 r: ]你还原分区命令都搞错了  以下恢复命令经过测试有效正确命令: t! s4 [3 t7 y+ J# w, U7 o
busybox dd if=/dev/mtd11 of=/dev/mtdblock12    从11分区还原12
1 Q9 s6 r! i! ?# G5 S7 wbusybox dd if=/dev/mtd9 of=/dev/mtdblock10     从9分区还原10
0 A( k( }* l& O3 M5 Sbusybox dd if=/dev/mtd3 of=/dev/mtdblock4      从3分区还原41 b; l; T) R/ o3 G6 Q
cd /dev/shm 进入目录  tftp -g -r rootfsA.bin 192.168.1.2  上传8 d( u7 G* O* l8 ^- t4 {5 v0 w$ @

+ B8 P4 k) d8 hbusybox dd if=/dev/shm/rootfsA.bin of=/dev/mtdblock12 还原12  
) m, U- D9 l' Hbusybox dd if=/dev/shm/kernelA.bin of=/dev/mtdblock10  还原10 4 S) P; y6 z4 H) g. _( l$ `
busybox dd if=/dev/shm/ubootA.bin of=/dev/mtdblock4     还原4  S% I. O2 k1 l: l& f
发表于 2018-9-23 18:36:13 | 显示全部楼层
备份末端FF删不掉
发表于 2018-9-21 18:26:47 | 显示全部楼层
你QQ号多少,我上次备份了的
6 l! {* ]/ q& K& J
发表于 2018-9-21 20:40:23 | 显示全部楼层
感谢分享* D( b0 X# b7 J' O
可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?
 楼主| 发表于 2018-9-21 21:12:26 | 显示全部楼层
naim1 发表于 2018-9-21 20:40/ K" _7 x$ ^  X* X; s1 p
感谢分享  ~+ z) K- H$ A6 m3 l# ]
可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?

4 p' r! l3 M( I备份出来的是hwfw_gui内部的rootfs,而不是刷机包bin。
* v$ N' G: a8 z" E$ ]无法直接备份出原始的刷机包的。要自己再用hwfw_gui拼凑。
0 t# M4 B/ `( T* F4 F2 {, {3 ^$ ~6 \1 r大哥比方,华为固件是windows的ISO安装镜像,我们备份的就像ghost备份。只能从备份还原方法刷其他机器备份的部分,而不能直接使能工具刷。
发表于 2018-9-21 21:39:36 | 显示全部楼层
华为的固件提取制作都比较简单,想要一些简单的功能也可以通过写个.SH 来解决。那位大神能搞定中兴烽火的固件编辑就好了
发表于 2018-9-21 21:46:58 | 显示全部楼层
本帖最后由 yecunbo 于 2018-9-21 21:48 编辑
  h. q8 }+ y, J% y6 k! M3 F: G& q( ^9 c2 a  v% ^
经过尝试可以备份但是无法恢复进去,我有R18版本的8145v可以备份给你,加W X: yezi860061交流学习!
发表于 2018-9-22 12:24:32 | 显示全部楼层
谢谢分享,学习了
 楼主| 发表于 2018-9-23 23:00:47 | 显示全部楼层
942250037 发表于 2018-9-23 18:36( t) q  w5 {2 p" A' [5 P) u4 ^
备份末端FF删不掉
1 Z+ q; u% C% K
用16进制编辑器可以删除的 不是直接delete键和backspace  通过右击编辑删除
. h& W: h+ ^3 O, f" d" ], F9 }用winhex或者 ultraeditor 软件使用教程可以问度娘
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-16 06:35 , Processed in 0.039038 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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