宽带技术网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2353|回复: 21

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

[复制链接]
发表于 2018-9-21 16:53:54 | 显示全部楼层 |阅读模式
本帖最后由 anysoft 于 2018-10-3 13:39 编辑 ' O  w' N2 j; c3 y$ I  ?7 n6 E
- U- V* u2 M. V
               在我上一篇帖子中提过,光猫其实和路由器一样。底包都是改版的openwrt,然后固件打包解包过程加了华为自己的结构和加密处理而已。光猫加入了驱动和对应程序。所以完全可以把光猫当做路由来玩,特别是当前的光猫配置越来越好,还能挂载USB。
. F5 `, b  F) u0 u- A% Y9 K5 V9 ]4 \: N

* j" @. J, t! V9 r9 i! D            今天正题是如何备份光猫固件。华为光猫的刷机固件有自己独特的结构,常规的解包方式无用,看雪bxc大神分析了固件格式并开发了hwfw_gui。这个工具可以拆分华为固件,编辑内部文件。rootfs导出后是uimg文件 squashfs。3 U+ t' ~+ x7 `7 H# i6 Z
5 n. d! ]; V1 v

: m2 N1 Z1 j) l; X/ k           废话不多说直接上备份命令(路由器固件备份命令):: X- f) o# e" H4 Q* W0 w3 R, }. K% r
1、先获取、补全shell进入5 H: s  c2 c3 q, ?6 ~3 u
. P2 g/ g0 E  C! E
本文不就演示如何获取shell了,自行研究(获取shell都不会那么后边也没有看下去的必要)) I& q0 `: g# I8 ?" Q
. m/ t5 x2 f* l" e( x
  进入shell之后用户还不是root,可以用whoami命令查看当前用户,此时再执行su,密码:admin就变成root了。; e* F% H% u& I( D# P
2、cat /proc/mtd 查看本机mtd信息
' r) c% p; s# R/ C% a' k* S; e6 n3 q3 A0 \$ f- Q) N2 F6 Y


0 R4 j. T% F7 C

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


2 t; b6 c% p7 s" F) u7 g

+ q/ ^  B7 J# H$ J6 |
3、df查看挂载点信息
( F- H2 p+ S+ u4 p7 x
. F! M( ]) U1 l& b6 [4 s( Y4 {
) g. T1 J* n/ c; Q% v7 g. f  ^( ]& w' W0 j' Z& ]1 R! A2 R) C
     此处要注意,很多人备份或者上传文件都用/tmp文件夹,这里tmp文件夹只有10MB无法存放大文件,所以不要备份到tmp,看哪个文件夹可用空间大就备份到哪里。我是用的/dev/shm文件夹,足够的空间。
4 f( `6 K5 a3 U, c! G( S6 C+ B: z* P6 H
/ m+ z' h4 S' N4、备份每个dev1 l9 U# b( p3 Y4 @" a& m
busybox dd if=/dev/mtd12 of=/dev/shm/rootfsA.bin
" l* Q! N# O7 S3 G+ J" b; N& n
9 B$ f; r( a2 q2 {
5 F2 y/ `" v0 t9 {" }- q  }% c

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

! d2 l  l) M% u( a

2 v$ l. U: A0 N
( |( }0 |) t3 y/ |) G
. R7 w5 T& `9 |- `6 E, U1 u7 r* j5、tftp导出备份文件到电脑
5 z8 I9 W8 v1 |' q3 p* C8 h; o& N, _8 stftp -p -l rootfsA.bin  -r rootfsA.bin 192.168.1.25 Y1 R! N" |" G- d0 u

# H3 V7 y3 C5 ^4 Y" K/ `. d, O$ A: Q# @
40MB文件,(bin固件直接导出rootfs.img是38.1MB,40MB是后边有FF的空数据)! {* z- n9 j# B
# z; @' a5 n& i1 S
6、从备份还原
1 y  q1 u8 E! ^# t/ I- f5 ^[size=18.6667px]dd if=ubootA.bin of=/dev/mtdblock3' L8 A4 ^- K# V! l! h
或者
: |8 j0 W- v! k" _  ~' k9 a( mmtd -r write /dev/shm/rootfsA.bin rootfsA$ a# D; h" |6 W. a8 L

$ s" w. E! o! y) Y
3 \# g4 g. Z2 w% Q/ x. M
* ~' ~) R7 n/ |  d/ v
3 {: U8 X- F5 t7 ]7 w
, S6 D3 K+ l6 e/ d0 w

# L; |( V/ X$ v& \7 P# I

+ U+ C/ d1 S) B! Qultraedit查看如下:* j3 V" g) n5 y$ O. k+ V

# F' Y- a$ C+ w( q6 b
, H  W9 F/ d# ^hwfw_gui导出的rootfs.img
* e6 }$ i7 C9 L) R& \5 A. U6 @7 F8 ?% U1 F7 O1 [" t7 N
备份的rootfs' G' A5 _' j0 a* t: Z5 g0 w
6 E5 w" n7 _8 `) w: i: y5 z( t

  D) t( j3 U& K( u, w) c& i& V: d/ m
最后说一下,备份时候一定要确认你选的目录有足够的空间,备份完毕后可以df查看目录使用率是否达到100%,如果达到表示固件基本上没有备份完全。没备份完全的不要刷,刷了就会变砖。
. y- \; e) ?8 {* x4 F
; G$ X1 V8 l2 S7 H
8 o% I* J$ L: D, q
(PS一句 如果你备份的bin文件16进制末尾不是FFFFFF那么你基本备份失败,因为mtd一般都会比img固件大,所以不会完全写满mtd设备,这样备份出来的bin末尾必定是FF空段)
3 q# u0 H2 `- M8 l( @' ?
0 M8 u' M# _& O. F4 n% H/ E

2 h+ n1 ~. Z9 \. Z" V) S- ~
( p6 M0 i" e  @( ~! u0 x
) S6 W) j3 G: u) b! r( L* x0 v
参考来源:( W0 |3 S! ^: N+ W0 w
https://blog.csdn.net/chang198932/article/details/364352094 C. d# _- o; [  K' h
https://blog.csdn.net/kepa520/article/details/51195439- w3 L4 D' \4 O3 O+ G4 h; ~" |0 [
http://man.linuxde.net/tftp2 m4 {4 i+ S. @, Q

( y2 b5 k" l9 ^0 W' Z! A! x/ H5 u3 a( w* n# C8 C# N
最最最后希望猫友可以帮忙备份一下 HS8145V的R018所有固件。拜谢!3 r2 H# N3 A. G* ?

% l. l3 e  V' N9 G2 X+ E$ Q, Z3 O可以参考这个帖子回复
: X1 ^& G) U1 [8 w8 P% r  q3 P
; z' l* g0 B9 N
http://www.chinadsl.net/forum.php?mod=viewthread&tid=158559&highlight=%B1%B8%B7%DD
& `0 N8 C% B! t& T  R, }% }- F) V

' l2 A1 p$ w$ D4 z& ^# A: [& ^# r6 z7 ]! {
7 P8 q" [7 |( F+ {! _
" D- _, o; v4 L* b( [6 t
- q9 m% O, p6 F+ A8 n: |

本帖子中包含更多资源

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

x
发表于 2018-9-21 18:26:47 | 显示全部楼层
你QQ号多少,我上次备份了的
$ q: v8 ?3 o/ G% j1 g  p8 o
发表于 2018-9-21 20:40:23 | 显示全部楼层
感谢分享9 J( @4 L: D$ Y, X9 [* M, _5 c
可是我导出来的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
" c6 O* i4 ]' E4 i感谢分享( Y5 N+ |/ f6 o% v% m
可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?
9 K6 P7 s( D5 r7 Z  p2 x
备份出来的是hwfw_gui内部的rootfs,而不是刷机包bin。
: z8 n9 `; D2 Y7 i无法直接备份出原始的刷机包的。要自己再用hwfw_gui拼凑。
; M/ \$ u3 z, V大哥比方,华为固件是windows的ISO安装镜像,我们备份的就像ghost备份。只能从备份还原方法刷其他机器备份的部分,而不能直接使能工具刷。
发表于 2018-9-21 21:39:36 | 显示全部楼层
华为的固件提取制作都比较简单,想要一些简单的功能也可以通过写个.SH 来解决。那位大神能搞定中兴烽火的固件编辑就好了
发表于 2018-9-21 21:46:58 | 显示全部楼层
本帖最后由 yecunbo 于 2018-9-21 21:48 编辑 ; l( H, N% ?8 q6 w5 y
1 s/ v+ O3 `0 J/ z5 V
经过尝试可以备份但是无法恢复进去,我有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
8 P# X! H- N% z6 u. T- @; ~" p# O  J+ b备份末端FF删不掉
9 q6 M0 ?- E- R, |  ^
用16进制编辑器可以删除的 不是直接delete键和backspace  通过右击编辑删除
7 N2 ^( s" k: |用winhex或者 ultraeditor 软件使用教程可以问度娘
发表于 2018-9-28 19:02:32 | 显示全部楼层
本帖最后由 942250037 于 2018-9-28 19:04 编辑 - B, |0 G: P7 d

# G. M" p; h' V, Y! U7 n你还原分区命令都搞错了  以下恢复命令经过测试有效正确命令9 J, y' S( i$ O+ h$ @
busybox dd if=/dev/mtd11 of=/dev/mtdblock12    从11分区还原12+ C( R0 y' S* S
busybox dd if=/dev/mtd9 of=/dev/mtdblock10     从9分区还原10
* L/ h7 h% I; q7 _busybox dd if=/dev/mtd3 of=/dev/mtdblock4      从3分区还原4; b4 X, c$ Y/ ^9 ~0 w
cd /dev/shm 进入目录  tftp -g -r rootfsA.bin 192.168.1.2  上传
* P0 g( j, J( c: c- K# u0 u8 o, t4 d# G/ j
busybox dd if=/dev/shm/rootfsA.bin of=/dev/mtdblock12 还原12  * J: g& M: ]( s2 \( J
busybox dd if=/dev/shm/kernelA.bin of=/dev/mtdblock10  还原10 ! u" _5 }# \5 j, U; r/ f/ W  i
busybox dd if=/dev/shm/ubootA.bin of=/dev/mtdblock4     还原4
  P& z. B4 B2 q6 q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

粤公网安备 44152102000001号

GMT+8, 2018-12-13 16:57 , Processed in 1.109375 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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