找回密码
 注册

QQ登录

只需一步,快速开始

查看: 39562|回复: 53

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

[复制链接]
发表于 2018-9-21 16:53:54 | 显示全部楼层 |阅读模式
本帖最后由 anysoft 于 2018-10-3 13:39 编辑 + K6 I" Z$ f8 k" t2 p" ]
9 M2 P" s9 x  e) P2 v4 S9 z% `
               在我上一篇帖子中提过,光猫其实和路由器一样。底包都是改版的openwrt,然后固件打包解包过程加了华为自己的结构和加密处理而已。光猫加入了驱动和对应程序。所以完全可以把光猫当做路由来玩,特别是当前的光猫配置越来越好,还能挂载USB。
3 W5 e* y! Y& K9 m8 F5 V7 \
% }2 j) R# @9 I( T3 @

' h% M3 c, {+ l( k' `1 f8 |8 _            今天正题是如何备份光猫固件。华为光猫的刷机固件有自己独特的结构,常规的解包方式无用,看雪bxc大神分析了固件格式并开发了hwfw_gui。这个工具可以拆分华为固件,编辑内部文件。rootfs导出后是uimg文件 squashfs。) M3 T/ U8 ~2 E+ l; g4 ]1 X
; |9 W5 o0 Q2 r, {# Z; ]3 j6 B
+ _' {% h0 Z- B& n5 U, m7 v5 B2 |3 d
           废话不多说直接上备份命令(路由器固件备份命令):1 e+ I: }+ h: }
1、先获取、补全shell进入
& p6 O  O1 M: C6 @+ O" p. M9 y4 p2 @
本文不就演示如何获取shell了,自行研究(获取shell都不会那么后边也没有看下去的必要)2 Z4 l. h' l; f& X, Z* J8 H0 e( \

5 [- K* ~' L0 ?+ a# e1 b6 r  进入shell之后用户还不是root,可以用whoami命令查看当前用户,此时再执行su,密码:admin就变成root了。( v1 T# o- w! C' r, M
2、cat /proc/mtd 查看本机mtd信息
9 A# C* x9 S8 D9 v( f0 K3 y5 X7 Z$ S4 o  R8 f7 p( H

0 _/ @& c7 m2 ~% b

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

# s% F  Z; v7 y/ U; E" O6 i


* J( _9 \$ }6 r+ y3 \3、df查看挂载点信息
9 {, ~1 |4 h' t% {( d6 y  Z
. ?* k% w% i/ c  l  s8 M: ]- a
' j$ W; I1 Z! z/ ~; F' s+ L6 l- n' ^& t6 e1 Z5 C4 @2 W
     此处要注意,很多人备份或者上传文件都用/tmp文件夹,这里tmp文件夹只有10MB无法存放大文件,所以不要备份到tmp,看哪个文件夹可用空间大就备份到哪里。我是用的/dev/shm文件夹,足够的空间。
" U) w# r9 q+ E: Q) t4 |! A5 e! x+ @( A& H' R
4、备份每个dev
- R& S) m. ^. I4 I  V/ n; `3 qbusybox dd if=/dev/mtd12 of=/dev/shm/rootfsA.bin* s5 C2 f: X0 z. m. g/ H

2 b6 Q0 E( V7 s2 E' t( _/ P5 ]) Z
. [5 Y: f3 I, ]. y

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


' B, V5 b: h4 l8 h" x" h7 V( b: `- J6 G. A" g9 Q9 |
8 B4 s/ ]1 P) d% q3 J8 D
7 M0 d! d, o$ G; ~$ b
5、tftp导出备份文件到电脑
8 n1 U" a$ y! A7 d! t% Y4 mtftp -p -l rootfsA.bin  -r rootfsA.bin 192.168.1.27 n9 e7 x3 e! _. I! t0 ?
7 ~0 I9 g- |4 C" O, a

* A9 K+ i) V& x4 H& O7 j40MB文件,(bin固件直接导出rootfs.img是38.1MB,40MB是后边有FF的空数据)6 e4 V! H/ _" M

" ~" A/ ?) q* Z$ M, e5 k2 G; L6、从备份还原
- Y6 u3 @% Z; jdd if=ubootA.bin of=/dev/mtdblock32 I  J0 o7 n* c
或者
: n8 e" l9 D% W4 y: f7 ymtd -r write /dev/shm/rootfsA.bin rootfsA
) x3 y3 |7 d/ l8 ]; t( z

; Y5 U3 T9 E% E; W5 J) D
' z9 R  h9 P0 e4 D+ V

9 I' Y; ~  p8 G; G( A
. l1 J$ m! b( R2 t6 B

& h2 R; L! F* J3 o% ^1 D
, Z, d2 X- z& n5 P( m; n% R  ]4 S

6 `- l$ S9 r# A# ~2 s4 j/ S0 L& Yultraedit查看如下:
& ]4 s/ J5 w( N: j/ m% R3 W3 }. [4 t  J( {4 o9 }/ P; R1 ?+ x# Y

+ W- p9 ]. }7 E1 Xhwfw_gui导出的rootfs.img% {' _: p0 u8 N& g  G6 k
# J9 N; i) H, r. S7 K2 }
备份的rootfs, W4 I2 f( E4 s. s6 _- B8 ^
. B! k6 J+ \- X# H8 i
, n0 Y/ i5 \, ~$ O) J  {
+ Q7 l5 `5 A# q% g
最后说一下,备份时候一定要确认你选的目录有足够的空间,备份完毕后可以df查看目录使用率是否达到100%,如果达到表示固件基本上没有备份完全。没备份完全的不要刷,刷了就会变砖。
; R* b  T% h3 ?( a5 i) @, I* ]/ u; J6 Q

' Q) f* O( G* ?8 j9 g0 N(PS一句 如果你备份的bin文件16进制末尾不是FFFFFF那么你基本备份失败,因为mtd一般都会比img固件大,所以不会完全写满mtd设备,这样备份出来的bin末尾必定是FF空段)0 ?3 D! M! X8 C8 F% s
- q( l7 H0 H, c/ E6 Z- z, L
' F1 Z$ C; e. Q# }1 o
  O' n. w; m5 k
8 {( U  r! h+ y! ]2 E1 _+ i
参考来源:
# \6 c' w7 C4 W: {: T1 [, yhttps://blog.csdn.net/chang198932/article/details/36435209
2 B9 l! h" N: N7 `: s% vhttps://blog.csdn.net/kepa520/article/details/51195439, L0 D9 G1 Q( d3 c
http://man.linuxde.net/tftp
6 r7 r1 y$ S' o1 [+ i/ o, J2 }# a0 t: {9 H! Z

; t+ M* ?1 d6 H, t3 q最最最后希望猫友可以帮忙备份一下 HS8145V的R018所有固件。拜谢!
. u$ A4 |. }4 S" \* t0 I
- O  E$ F7 D' l! Q$ q
可以参考这个帖子回复
5 `/ Q" `+ e1 F- ^8 N! X9 c1 k8 E! R, K# }, D1 j; Z
https://www.chinadsl.net/forum.php?mod=viewthread&tid=158559&highlight=%B1%B8%B7%DD
2 `9 [1 w, G. w! Q5 {) R6 @1 C7 A! m# F7 K
3 e2 y4 e- k2 }
9 W. c& R+ l' g( h' ^
/ k" x/ Q3 o( c6 S( {
+ l( E5 P+ N* M. ^0 c2 {
7 e( R* |4 Q1 U5 u8 N0 A

本帖子中包含更多资源

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

×
发表于 2018-9-28 19:02:32 | 显示全部楼层
本帖最后由 942250037 于 2018-9-28 19:04 编辑
- w* l9 F( K! D% j7 s% C7 I2 G2 ?' B2 Y! h# o- [
你还原分区命令都搞错了  以下恢复命令经过测试有效正确命令( w! z1 e6 e, ]. l$ r9 |- X% V' b
busybox dd if=/dev/mtd11 of=/dev/mtdblock12    从11分区还原12! u% E; A. h8 m8 Y; f: C
busybox dd if=/dev/mtd9 of=/dev/mtdblock10     从9分区还原10
6 S/ ^5 r/ h% _% R8 I' pbusybox dd if=/dev/mtd3 of=/dev/mtdblock4      从3分区还原4/ Z4 j- J( [  {0 {0 f" ]1 q
cd /dev/shm 进入目录  tftp -g -r rootfsA.bin 192.168.1.2  上传( s6 \5 k, H2 z/ g" i4 z

' t9 A, G1 n! ?) M2 z7 ^busybox dd if=/dev/shm/rootfsA.bin of=/dev/mtdblock12 还原12  
$ E' @  x. \6 y3 v  \2 hbusybox dd if=/dev/shm/kernelA.bin of=/dev/mtdblock10  还原10
3 F9 P3 h: p2 X6 }busybox dd if=/dev/shm/ubootA.bin of=/dev/mtdblock4     还原4# f1 K9 [0 Y0 q5 U! B
发表于 2018-9-23 18:36:13 | 显示全部楼层
备份末端FF删不掉

点评

删掉有什么用?为什么要删?  详情 回复 发表于 2018-10-7 10:23
发表于 2018-9-21 18:26:47 | 显示全部楼层
你QQ号多少,我上次备份了的8 ~- l& o7 g1 U
发表于 2018-9-21 20:40:23 | 显示全部楼层
感谢分享
: V) H4 D7 y% E可是我导出来的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
* B5 i' p8 {2 `感谢分享& H. _& a3 ^5 L3 _. [
可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?
4 u, b" k$ {" k' P$ M  X7 A
备份出来的是hwfw_gui内部的rootfs,而不是刷机包bin。
4 S$ M$ |. N# u) h8 \' e( [! R无法直接备份出原始的刷机包的。要自己再用hwfw_gui拼凑。
1 _# g1 h6 ?: T6 F1 W3 W大哥比方,华为固件是windows的ISO安装镜像,我们备份的就像ghost备份。只能从备份还原方法刷其他机器备份的部分,而不能直接使能工具刷。
发表于 2018-9-21 21:39:36 | 显示全部楼层
华为的固件提取制作都比较简单,想要一些简单的功能也可以通过写个.SH 来解决。那位大神能搞定中兴烽火的固件编辑就好了
发表于 2018-9-21 21:46:58 | 显示全部楼层
本帖最后由 yecunbo 于 2018-9-21 21:48 编辑 6 X+ R* {# u- T" L* K8 n" F

: O  ^  p& f% V经过尝试可以备份但是无法恢复进去,我有R18版本的8145v可以备份给你,加W X: yezi860061交流学习!
发表于 2018-9-22 12:24:32 | 显示全部楼层
谢谢分享,学习了
 楼主| 发表于 2018-9-23 23:00:47 | 显示全部楼层
942250037 发表于 2018-9-23 18:36+ l9 I) n4 @& A9 G7 x" U6 w
备份末端FF删不掉

, _" E6 A. k' ?+ [' U' W/ V8 E( w用16进制编辑器可以删除的 不是直接delete键和backspace  通过右击编辑删除
( G1 R6 [7 t2 B' a3 p用winhex或者 ultraeditor 软件使用教程可以问度娘
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

粤公网安备 44152102000001号

GMT+8, 2024-4-28 06:15 , Processed in 0.027318 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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