找回密码
 注册

QQ登录

只需一步,快速开始

查看: 39481|回复: 53

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

[复制链接]
发表于 2018-9-21 16:53:54 | 显示全部楼层 |阅读模式
本帖最后由 anysoft 于 2018-10-3 13:39 编辑
$ w. v( o6 r# A. g' @& H
$ ^& d% t: z9 F) z3 G, x2 W               在我上一篇帖子中提过,光猫其实和路由器一样。底包都是改版的openwrt,然后固件打包解包过程加了华为自己的结构和加密处理而已。光猫加入了驱动和对应程序。所以完全可以把光猫当做路由来玩,特别是当前的光猫配置越来越好,还能挂载USB。4 D4 x3 w+ N9 ]' R

) y7 x7 O" V$ {' e" k# j0 U8 J
5 A( o0 C' B3 d3 b. ]: ?
            今天正题是如何备份光猫固件。华为光猫的刷机固件有自己独特的结构,常规的解包方式无用,看雪bxc大神分析了固件格式并开发了hwfw_gui。这个工具可以拆分华为固件,编辑内部文件。rootfs导出后是uimg文件 squashfs。
! v/ F5 Y/ `& [3 T0 e0 O/ `. t( o9 L6 J* B& Z' y' a$ y: q2 D; M$ U

" Y6 ]* h" v1 @           废话不多说直接上备份命令(路由器固件备份命令):6 H6 I* Y6 U" R1 M
1、先获取、补全shell进入
5 `' t( W) d& `: v& D: I; `  F& ?; F5 _
本文不就演示如何获取shell了,自行研究(获取shell都不会那么后边也没有看下去的必要): \8 M' y9 [0 \4 J
3 V! A: T5 ~! a7 T. j6 A
  进入shell之后用户还不是root,可以用whoami命令查看当前用户,此时再执行su,密码:admin就变成root了。
+ u+ Y7 Y& _. n/ T- V, V% V& u2、cat /proc/mtd 查看本机mtd信息  I% D; O! K1 O' l3 L
' O/ p5 {! U' q8 N

1 ^9 I- I, H4 W: s2 v* \& G0 Z

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


: p/ f* X6 y9 @' q

! W$ M( z, X0 V, R
3、df查看挂载点信息5 a7 U0 D5 ~' x: v2 j9 I

0 k6 G; k0 ]) C$ |( \8 V
) p) }3 Q4 a2 }3 \8 z2 N
" J: R/ v) p, f% ^! u  J9 F1 X     此处要注意,很多人备份或者上传文件都用/tmp文件夹,这里tmp文件夹只有10MB无法存放大文件,所以不要备份到tmp,看哪个文件夹可用空间大就备份到哪里。我是用的/dev/shm文件夹,足够的空间。
3 Q# a5 Y- U4 B; I/ a! ~7 x: w! M
  z1 i2 f1 o& i' Q; s& A# h4、备份每个dev. \3 z9 b' j  }8 {) f
busybox dd if=/dev/mtd12 of=/dev/shm/rootfsA.bin* w- F2 ~  a" w9 r2 O
1 A' q$ s/ S+ j$ A1 n  i
  L0 k* b1 ^5 C- _* H

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

0 }7 V- L3 P1 J" Q, B3 W! G5 Q$ ^5 v& o

( b8 x/ H& }' @6 j9 T$ o0 w5 E$ r! p4 m6 J, x" u8 K' }
  v# y* O3 s+ V1 @- x: ^: j' y
5、tftp导出备份文件到电脑
8 D& t& r3 [& e4 S2 q- i% k3 Btftp -p -l rootfsA.bin  -r rootfsA.bin 192.168.1.2! ]6 M: G3 u& A4 |& c! l5 `% K

% \& @1 R) W5 x( H  o) N4 e; f+ s, A
40MB文件,(bin固件直接导出rootfs.img是38.1MB,40MB是后边有FF的空数据)
% A: I# c. u' X
' b; ]7 F- _8 f  k8 T! V* W2 U6、从备份还原
* a" f5 h  e% F! r- n6 S3 `  {dd if=ubootA.bin of=/dev/mtdblock3
$ n$ {# f5 l' A* y9 N或者/ w; u: y! L7 x
mtd -r write /dev/shm/rootfsA.bin rootfsA% _. r1 T8 v7 f0 }

2 h" F* Q2 W  S$ k8 r, \
' Y7 d, C% H" Q& Z& ~7 g8 V. {& M
( K7 Q2 r: A& c

6 x; i& O: L( a! K. A* Q) S7 D* g. K

' n1 n$ Z0 S/ S' f3 n
- u* ^9 T. s4 V" ~4 a, X) P) d* K, }

- J0 |9 F: y3 s+ E* @. i/ O% X- Vultraedit查看如下:/ H& h1 n; @# Q1 v

/ Z: p7 w8 ]1 p: H0 P. j, \4 v9 @9 V, c' \
hwfw_gui导出的rootfs.img
, t; w5 H- @( X! M7 p
( Q1 X. W$ W  N. P9 a1 g' k! W4 m备份的rootfs
. V1 z& |5 Z# v" R( W
& p$ z2 ^$ Y* d! C$ Z. `# l4 h+ y; u

% U! ]! ~" U* O2 H* t最后说一下,备份时候一定要确认你选的目录有足够的空间,备份完毕后可以df查看目录使用率是否达到100%,如果达到表示固件基本上没有备份完全。没备份完全的不要刷,刷了就会变砖。; T/ a! G/ U' V- g' E: ?
+ X6 `9 G) w; j4 X1 e
/ ]5 ]* ]# x/ R! S. y  h
(PS一句 如果你备份的bin文件16进制末尾不是FFFFFF那么你基本备份失败,因为mtd一般都会比img固件大,所以不会完全写满mtd设备,这样备份出来的bin末尾必定是FF空段)
4 _1 r% K  K; \4 u6 v8 l/ r+ f  U% o% L6 X' V/ Y
  E6 e5 V) y% V
; p* M& F8 h) _+ B( {8 O
! N7 [) T2 q7 z( H! E
参考来源:2 g  h+ p( w- m4 L& R, _+ ]
https://blog.csdn.net/chang198932/article/details/364352098 |* {/ _0 U3 H3 G$ X3 e7 w; |9 }2 {
https://blog.csdn.net/kepa520/article/details/511954391 X2 h7 b2 S" {4 l( g# C6 v& g. C
http://man.linuxde.net/tftp
; y' {0 B1 ]. n4 j. ]9 k; j6 G; N
% A, M9 r- {  t9 h
1 ^( j( p+ Z) B" c5 ?  H最最最后希望猫友可以帮忙备份一下 HS8145V的R018所有固件。拜谢!
4 u6 {# @. I$ N. r9 V

5 H# X7 D9 R9 s' q9 w可以参考这个帖子回复5 B6 l4 Q3 H4 B8 ^8 [, A

, k' h* }9 ~" _! n$ f/ U
https://www.chinadsl.net/forum.php?mod=viewthread&tid=158559&highlight=%B1%B8%B7%DD- ~2 d6 d# D1 W+ j$ b  S7 r& S
- U0 ^7 y8 y2 U5 e. {, m

  K8 l0 P6 K' `8 C! X0 ~; J: @, y) ?2 P8 F1 ~- w
! p; u+ b) C0 J$ ]/ A% A6 |
! l8 w8 p% |, b

3 y8 h9 z2 R; A  u

本帖子中包含更多资源

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

×
发表于 2018-9-28 19:02:32 | 显示全部楼层
本帖最后由 942250037 于 2018-9-28 19:04 编辑
4 A9 {: V* C( y8 p( I0 u$ G* B6 a. N
你还原分区命令都搞错了  以下恢复命令经过测试有效正确命令
1 T, n6 ]2 B# o3 {+ Ibusybox dd if=/dev/mtd11 of=/dev/mtdblock12    从11分区还原126 P: S# u3 o1 u6 Q# r. n' z& D% p
busybox dd if=/dev/mtd9 of=/dev/mtdblock10     从9分区还原10: V# m: v7 P3 `1 i# y, n  \) M
busybox dd if=/dev/mtd3 of=/dev/mtdblock4      从3分区还原4" Y: G7 s( J! M- X2 W; f
cd /dev/shm 进入目录  tftp -g -r rootfsA.bin 192.168.1.2  上传
' T3 U6 L8 b! u" [4 x# C1 p. `& }8 Q
& |& L* u) N9 E2 Z7 x( tbusybox dd if=/dev/shm/rootfsA.bin of=/dev/mtdblock12 还原12  
  q2 ^& p% l! O: |& W- ^% Y# _" }  lbusybox dd if=/dev/shm/kernelA.bin of=/dev/mtdblock10  还原10 ' ^# H" C4 L' T7 R- t. f& t
busybox dd if=/dev/shm/ubootA.bin of=/dev/mtdblock4     还原48 K. L/ L8 o9 X5 i# N
发表于 2018-9-23 18:36:13 | 显示全部楼层
备份末端FF删不掉

点评

删掉有什么用?为什么要删?  详情 回复 发表于 2018-10-7 10:23
发表于 2018-9-21 18:26:47 | 显示全部楼层
你QQ号多少,我上次备份了的
( R8 |1 K2 ?& i& Y7 n) R! @
发表于 2018-9-21 20:40:23 | 显示全部楼层
感谢分享
4 ]. w' Y  E5 x' Y可是我导出来的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:404 h5 G8 v' J/ D
感谢分享5 J, @# [- X4 F
可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?
! S! J& U- K# k& ^' Q+ z3 x$ P, a) b
备份出来的是hwfw_gui内部的rootfs,而不是刷机包bin。2 ], r: y- j/ v4 @8 ]' U% c
无法直接备份出原始的刷机包的。要自己再用hwfw_gui拼凑。7 V# m( E+ o5 c) Y( b' K  m
大哥比方,华为固件是windows的ISO安装镜像,我们备份的就像ghost备份。只能从备份还原方法刷其他机器备份的部分,而不能直接使能工具刷。
发表于 2018-9-21 21:39:36 | 显示全部楼层
华为的固件提取制作都比较简单,想要一些简单的功能也可以通过写个.SH 来解决。那位大神能搞定中兴烽火的固件编辑就好了
发表于 2018-9-21 21:46:58 | 显示全部楼层
本帖最后由 yecunbo 于 2018-9-21 21:48 编辑
5 n* W0 D4 M4 K) j
2 b5 p  t- N8 T! O8 A7 e$ B5 n1 `经过尝试可以备份但是无法恢复进去,我有R18版本的8145v可以备份给你,加W X: yezi860061交流学习!
发表于 2018-9-22 12:24:32 | 显示全部楼层
谢谢分享,学习了
 楼主| 发表于 2018-9-23 23:00:47 | 显示全部楼层
942250037 发表于 2018-9-23 18:368 D# ^( a: y1 h( n: i4 n& }% I8 ?
备份末端FF删不掉
/ O* L1 s$ V5 _( k9 _! {
用16进制编辑器可以删除的 不是直接delete键和backspace  通过右击编辑删除
7 H' f# Y5 c& F4 \( [用winhex或者 ultraeditor 软件使用教程可以问度娘
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2024-4-27 12:35 , Processed in 0.028292 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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