宽带技术网

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3624|回复: 22

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

[复制链接]
发表于 2018-9-21 16:53:54 | 显示全部楼层 |阅读模式
本帖最后由 anysoft 于 2018-10-3 13:39 编辑
% {& G' S- ]" w2 |4 w- J( o, i" p$ K$ N1 t" E$ l( s
               在我上一篇帖子中提过,光猫其实和路由器一样。底包都是改版的openwrt,然后固件打包解包过程加了华为自己的结构和加密处理而已。光猫加入了驱动和对应程序。所以完全可以把光猫当做路由来玩,特别是当前的光猫配置越来越好,还能挂载USB。7 _; v, ~: l) p7 |  m3 G* F; W
. ~" N3 x; d& U) q; g
3 ]0 Z2 A, }1 E' y: a9 g$ b
            今天正题是如何备份光猫固件。华为光猫的刷机固件有自己独特的结构,常规的解包方式无用,看雪bxc大神分析了固件格式并开发了hwfw_gui。这个工具可以拆分华为固件,编辑内部文件。rootfs导出后是uimg文件 squashfs。
' @% O5 h/ {7 g: ]9 Z% N/ ?
# Q4 s! v. k3 L, a! g7 W7 V( e
( h. D9 {/ [7 k2 q1 N
           废话不多说直接上备份命令(路由器固件备份命令):0 n1 n! O" W2 O0 G0 X# ?5 U0 G7 B
1、先获取、补全shell进入( L) F7 c: S1 r# Z- F% J( o

7 p4 K' z- U' q) _! p5 p- v 本文不就演示如何获取shell了,自行研究(获取shell都不会那么后边也没有看下去的必要)
" |' j& ]4 ]) M5 [! l
$ Z0 b! ?9 Z& K! y7 S- [  进入shell之后用户还不是root,可以用whoami命令查看当前用户,此时再执行su,密码:admin就变成root了。
/ Y' c0 R+ e8 K# L4 K# L2、cat /proc/mtd 查看本机mtd信息' j' Z, @; L$ p4 A' `& O# B

/ a" ?  ]2 S  }


( e0 {- n3 n8 G: z# r, E  Y

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

) Q" ~2 G8 X& B; N- y: \. ^- W

: c: g2 w' p" \9 y: \( H) c
3、df查看挂载点信息; I3 x) U1 x+ I; x' k+ Q
1 H* y6 r/ o! ]. {* l" }3 i& E* P
  p  J/ w# v2 K: D9 D

: K2 U7 }5 S; I" W4 g. K     此处要注意,很多人备份或者上传文件都用/tmp文件夹,这里tmp文件夹只有10MB无法存放大文件,所以不要备份到tmp,看哪个文件夹可用空间大就备份到哪里。我是用的/dev/shm文件夹,足够的空间。
. Y; G9 ~2 K2 z7 \( N, `9 W6 c, ~( N( t4 l* R5 @( U
4、备份每个dev8 `8 v, j) a# p! V0 q5 {
busybox dd if=/dev/mtd12 of=/dev/shm/rootfsA.bin
9 ~$ |' w! @: V) a4 t
, [  Z/ z2 C- ~* A+ H8 w/ ?. p3 E- v7 K7 F

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

( Y, B' f, k% L
  [- ~2 U$ J  o
8 q; R( j' S4 {9 v1 t( K" F2 W2 P

0 H9 V: ?7 G/ f6 A* d; Q9 `! J5、tftp导出备份文件到电脑
' S2 p7 ~- R' B# i7 V4 r( e' x4 k  ytftp -p -l rootfsA.bin  -r rootfsA.bin 192.168.1.2; `6 A3 o3 B" L: l2 r6 ~

+ n$ b+ L+ Z/ W- m% q: F% [9 U) n- ~% U, c4 {4 |; `
40MB文件,(bin固件直接导出rootfs.img是38.1MB,40MB是后边有FF的空数据)
3 g* X2 X/ p! y7 y
3 S7 _. H2 z6 N' o" N! d4 V) M6、从备份还原
5 {) R. Y1 E8 A% [" J2 R% L[size=18.6667px]dd if=ubootA.bin of=/dev/mtdblock3" k3 ^. N. ^  `
或者# Y4 N6 u( `$ j2 D# E% S" V
mtd -r write /dev/shm/rootfsA.bin rootfsA0 x1 q) {' g. D, S
$ ~% P9 ?* a$ r5 k8 Y0 @" Y
& U7 N( t& p: |1 o, s

5 y2 E3 a& w& {: `) Q3 ]9 d8 X: O7 }/ h/ ^) o- C! a
& C4 M. C0 V" m$ x
# v) t" ~' e4 q( X0 n: \
6 T+ F& f9 Y$ V
ultraedit查看如下:
( y6 x9 \" o: \  E* M  H
6 m3 I7 _, L3 e* s9 N, G! ^5 P$ H+ g, T) G; r% g
hwfw_gui导出的rootfs.img; {. |8 {1 e4 I; A. z0 k4 N2 g
0 j6 y% \2 J2 X& D5 ^
备份的rootfs
; }* [3 H6 n0 L" k1 C
0 V5 |5 K' o# Y8 u2 S- w% Q$ S0 E% ?5 e) i6 }7 |
+ Q5 I3 o* ?7 R# O, U' m. \
最后说一下,备份时候一定要确认你选的目录有足够的空间,备份完毕后可以df查看目录使用率是否达到100%,如果达到表示固件基本上没有备份完全。没备份完全的不要刷,刷了就会变砖。
8 ]/ U( `  B, d+ g$ u: w. y; S2 b8 E+ r9 ]+ x+ u+ `: ?( R/ L+ y
  J, l  O' e3 T1 r: \
(PS一句 如果你备份的bin文件16进制末尾不是FFFFFF那么你基本备份失败,因为mtd一般都会比img固件大,所以不会完全写满mtd设备,这样备份出来的bin末尾必定是FF空段)
4 E& _  Y* i7 t3 ?) L% k
; q3 i& M' Q. A* `

( M# b: t, ^8 f4 l, |! S
7 N( [" y/ q# c9 U. l) Z, q
% e0 `4 M0 _: b: r1 L
参考来源:4 [0 d3 d( D; I+ j! v; i
https://blog.csdn.net/chang198932/article/details/36435209, t1 V- R! X1 J/ D7 s- X5 \  B' {/ ~
https://blog.csdn.net/kepa520/article/details/51195439
6 g2 n2 ]3 `6 m7 ]3 f5 rhttp://man.linuxde.net/tftp
7 ~' W5 J- x9 }1 B' E) J. `# J3 ~1 A
# F8 ~5 q1 o8 b! x
最最最后希望猫友可以帮忙备份一下 HS8145V的R018所有固件。拜谢!9 r) e# g- [  L4 m; q
/ }3 B& E( d, S! L5 v
可以参考这个帖子回复' G4 |0 ~0 F3 O8 W
4 Q' m7 j/ u: o" E( r
http://www.chinadsl.net/forum.php?mod=viewthread&tid=158559&highlight=%B1%B8%B7%DD
- f! P$ ?2 J& V% V. q: f2 \8 v" p0 ^! p) q$ Z* P$ ^2 z: T
  N+ p3 l$ p' f2 r
6 q6 G/ s4 `8 X: V* ~$ }
, q$ R: a8 ?- k) y8 ]; g6 }3 C
$ n! l; u$ r% z1 _7 B
" ^  _  W9 p) Y( e1 `

本帖子中包含更多资源

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

x
发表于 2018-9-21 18:26:47 | 显示全部楼层
你QQ号多少,我上次备份了的8 z3 E, Y( k4 m& b( {# G
发表于 2018-9-21 20:40:23 | 显示全部楼层
感谢分享4 i4 B+ M5 u, t7 O; d( [/ Q
可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?

点评

备份出来的是hwfw_gui内部的rootfs,而不是刷机包bin。 无法直接备份出原始的刷机包的。要自己再用hwfw_gui拼凑。 大哥比方,华为固件是windows的ISO安装镜像,我们备份的就像ghost备份。只能从备份还原方法刷其他  详情 回复 发表于 2018-9-21 21:12
 楼主| 发表于 2018-9-21 21:12:26 | 显示全部楼层
naim1 发表于 2018-9-21 20:40
9 w: L! a+ t5 c/ z5 w; M6 Q0 F  o感谢分享) f, w  z6 X: |/ _: m
可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?
2 P% n0 T7 \) R
备份出来的是hwfw_gui内部的rootfs,而不是刷机包bin。( w6 s* O+ A8 ?: q0 u+ r
无法直接备份出原始的刷机包的。要自己再用hwfw_gui拼凑。% ^0 U& ?5 J: Z/ s7 }2 `
大哥比方,华为固件是windows的ISO安装镜像,我们备份的就像ghost备份。只能从备份还原方法刷其他机器备份的部分,而不能直接使能工具刷。
发表于 2018-9-21 21:39:36 | 显示全部楼层
华为的固件提取制作都比较简单,想要一些简单的功能也可以通过写个.SH 来解决。那位大神能搞定中兴烽火的固件编辑就好了
发表于 2018-9-21 21:46:58 | 显示全部楼层
本帖最后由 yecunbo 于 2018-9-21 21:48 编辑
8 s, B. S2 N5 C/ d  [4 @4 ]  i- ?, T, O" m/ S# B- `* ?
经过尝试可以备份但是无法恢复进去,我有R18版本的8145v可以备份给你,加W X: yezi860061交流学习!
发表于 2018-9-22 12:24:32 | 显示全部楼层
谢谢分享,学习了
发表于 2018-9-23 18:36:13 | 显示全部楼层
备份末端FF删不掉

点评

删掉有什么用?为什么要删?  详情 回复 发表于 2018-10-7 10:23
 楼主| 发表于 2018-9-23 23:00:47 | 显示全部楼层
942250037 发表于 2018-9-23 18:36
* `6 X- ?# [1 [, _% m0 K备份末端FF删不掉
7 c! f( M- [3 g8 H+ ?+ o
用16进制编辑器可以删除的 不是直接delete键和backspace  通过右击编辑删除. o) k( u0 \7 X' k
用winhex或者 ultraeditor 软件使用教程可以问度娘
发表于 2018-9-28 19:02:32 | 显示全部楼层
本帖最后由 942250037 于 2018-9-28 19:04 编辑
. g5 Q# s, R* h' X- l6 F9 j: A4 G" V9 O  H: P: d  S& Q3 |
你还原分区命令都搞错了  以下恢复命令经过测试有效正确命令4 S) g+ y" Y1 E7 U) i8 A
busybox dd if=/dev/mtd11 of=/dev/mtdblock12    从11分区还原123 \" Y4 m; p' b" k8 y' l0 i( M) o
busybox dd if=/dev/mtd9 of=/dev/mtdblock10     从9分区还原104 C0 W0 H  T+ n/ B1 u
busybox dd if=/dev/mtd3 of=/dev/mtdblock4      从3分区还原4
5 J: G* D7 J* }% c: R9 V+ Xcd /dev/shm 进入目录  tftp -g -r rootfsA.bin 192.168.1.2  上传
. e) {) i* e; Q. Z) N) g' K
' \  J/ b# W$ [- t$ Z% b5 Qbusybox dd if=/dev/shm/rootfsA.bin of=/dev/mtdblock12 还原12  # S; U( p' G% [
busybox dd if=/dev/shm/kernelA.bin of=/dev/mtdblock10  还原10 / t5 H% K: u+ F2 e6 W& S
busybox dd if=/dev/shm/ubootA.bin of=/dev/mtdblock4     还原4+ O) X4 ~+ q8 c0 i) @# p$ a
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|宽带技术网 ( 粤ICP备15054574号 )

粤公网安备 44152102000001号

GMT+8, 2019-2-17 18:07 , Processed in 4.871847 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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