找回密码
 注册

QQ登录

只需一步,快速开始

查看: 52572|回复: 53

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

[复制链接]
发表于 2018-9-21 16:53:54 | 显示全部楼层 |阅读模式
本帖最后由 anysoft 于 2018-10-3 13:39 编辑
! t) l2 n' }7 f' I1 H1 s0 f4 x6 O4 y# K& x3 f# l9 I% l$ W2 R/ N2 n
               在我上一篇帖子中提过,光猫其实和路由器一样。底包都是改版的openwrt,然后固件打包解包过程加了华为自己的结构和加密处理而已。光猫加入了驱动和对应程序。所以完全可以把光猫当做路由来玩,特别是当前的光猫配置越来越好,还能挂载USB。3 r% e" G" W- R! ]- \

5 R9 o4 r' d# [
  ?, p4 B5 B6 S
            今天正题是如何备份光猫固件。华为光猫的刷机固件有自己独特的结构,常规的解包方式无用,看雪bxc大神分析了固件格式并开发了hwfw_gui。这个工具可以拆分华为固件,编辑内部文件。rootfs导出后是uimg文件 squashfs。
% n2 W7 k4 m1 ^5 s3 o) ^/ h
3 n0 _7 A7 d5 [8 A
$ F8 ?* l0 ?" z0 m' n
           废话不多说直接上备份命令(路由器固件备份命令):
, q# Z7 R2 n# \, s/ w" u1 S1、先获取、补全shell进入2 u. S; c9 s" ^! F2 @  r( n9 h; G
5 y) `2 ~$ \' h& Y2 n* m; o* m
本文不就演示如何获取shell了,自行研究(获取shell都不会那么后边也没有看下去的必要)% A2 b! f( p+ u: O- d  Q
) }% q! t2 ]  c. E7 \
  进入shell之后用户还不是root,可以用whoami命令查看当前用户,此时再执行su,密码:admin就变成root了。
! T" a" V/ C) L" X4 Y2、cat /proc/mtd 查看本机mtd信息
+ Q+ E( P! V+ N( D4 C- b; Y6 d( g0 C( @& E9 Y! q8 ^! f


3 U. v- [7 B- |0 x3 r3 Y2 @' I/ }+ [

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


5 G/ J, t# c4 f0 i/ v7 k


: O5 p! v2 ~" `9 z1 r3、df查看挂载点信息0 r0 R" y# q+ X5 J) k
' \( ~) s. F! E& l# N
; B: i: O1 f9 J
/ |1 t  p+ R* S% ^0 i, ]
     此处要注意,很多人备份或者上传文件都用/tmp文件夹,这里tmp文件夹只有10MB无法存放大文件,所以不要备份到tmp,看哪个文件夹可用空间大就备份到哪里。我是用的/dev/shm文件夹,足够的空间。
1 t0 Q3 Q- r# O. [% L  c: p. L/ [
7 h3 E0 q% _9 v! M- _" Q4、备份每个dev6 j" D, o, `9 _) s/ K
busybox dd if=/dev/mtd12 of=/dev/shm/rootfsA.bin
' \9 z$ `% M2 P8 v9 L
; r% k, D5 z- S. N  G
# `. S6 k; n4 Q# T, O

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

. P# E$ q# w5 q4 _9 i/ S

6 d0 i8 G0 L6 i& l9 n8 B! P; ^1 q
, C4 `, U% D& L9 D! i9 s  J0 c2 R4 G
5、tftp导出备份文件到电脑
/ m2 K5 b  f6 I/ Btftp -p -l rootfsA.bin  -r rootfsA.bin 192.168.1.2
# @# X9 ?6 @! }! C& o4 Y2 h
( e; g8 h+ z+ @
8 k0 ?8 J* N/ ~6 {40MB文件,(bin固件直接导出rootfs.img是38.1MB,40MB是后边有FF的空数据)8 G- ~5 [2 H# Q3 b6 _+ r& F
4 w3 B' l. ~* m0 t
6、从备份还原
/ R$ E0 I* X, Y6 y6 {0 c' Z6 @dd if=ubootA.bin of=/dev/mtdblock36 r5 Y0 ~7 ]+ J3 B
或者2 y7 Y/ e% e3 Q1 n
mtd -r write /dev/shm/rootfsA.bin rootfsA' ]: G) [2 v3 l6 `# _# {
) s: K& W2 G* x* y4 d" F- G2 [8 G

' g* ^7 r$ b4 _) U2 t
3 i3 G7 [' X8 @, F

" W4 u# F) ^' n5 m0 i/ m' a2 E/ B
1 }" A+ q% @$ [( r9 R  W
* R9 a4 T. i' F- C7 ?6 W' Z: i: C4 Y8 `
* G- R1 |$ o2 \8 _$ D
ultraedit查看如下:( A2 u0 i! h0 ?% e. u3 S7 y
3 u/ G- V1 T1 w, `; R! O

, ]# n/ Z  G# \# `1 whwfw_gui导出的rootfs.img: m% R+ P$ G1 ]& q: _

4 v4 X9 f* x: ~& M0 y- m0 _备份的rootfs6 x6 [8 p8 a0 G3 T

5 L; Z$ F( L5 t- L( X# _% t% z( X$ _& w5 ?! a3 C9 O
2 P& {# _! w5 o, k/ q7 r/ d
最后说一下,备份时候一定要确认你选的目录有足够的空间,备份完毕后可以df查看目录使用率是否达到100%,如果达到表示固件基本上没有备份完全。没备份完全的不要刷,刷了就会变砖。
& c* O4 Y4 r6 {! r
8 Q6 ]  ]0 A4 ]- ^  Y# w  Z
% `5 I3 P. S" e  m) N% v% `3 B
(PS一句 如果你备份的bin文件16进制末尾不是FFFFFF那么你基本备份失败,因为mtd一般都会比img固件大,所以不会完全写满mtd设备,这样备份出来的bin末尾必定是FF空段)
! r1 C( ~6 d  |7 Y
% i. h) e0 t" b" M5 {

0 ]; k6 }( l: ~0 o$ x& ^, f0 R* D+ z( J, V

- t. U* Z! Z& t参考来源:% ?) S0 ^/ o) G5 U( E# ~
https://blog.csdn.net/chang198932/article/details/36435209* F6 W- t, d7 m" y) F& o
https://blog.csdn.net/kepa520/article/details/51195439* W8 F( \# x  ]3 H2 K
http://man.linuxde.net/tftp& q! ?0 Y/ I4 W1 L

0 W0 `* a) h; e7 Q# h3 A
# C3 m: B7 Y, N% w) C$ E1 [最最最后希望猫友可以帮忙备份一下 HS8145V的R018所有固件。拜谢!
: d; h. Z/ ?& L" T# r
4 O2 o& n0 @! _9 P- N; G( c
可以参考这个帖子回复
' `! j2 |$ r9 Y- V6 T; e4 x$ {; X7 D0 {: D+ v9 I2 _
https://www.chinadsl.net/forum.php?mod=viewthread&tid=158559&highlight=%B1%B8%B7%DD+ M0 A, v* c1 p. a/ ^+ S

7 r) E6 [9 [/ C& x
) v* ]$ J  {1 Y

# l: y- s% Z* p1 M: e  N2 j/ j4 ?& T! |
, W4 J8 e) |2 S1 M1 y

+ A8 o2 `! p% E1 h: p

本帖子中包含更多资源

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

×
发表于 2018-9-28 19:02:32 | 显示全部楼层
本帖最后由 942250037 于 2018-9-28 19:04 编辑
' v/ t0 n. v$ f4 @# Z" z- v* g$ F; z* v( Q+ B; ]" O! q
你还原分区命令都搞错了  以下恢复命令经过测试有效正确命令
& G0 o# N* l$ u. ]. ^3 \+ `busybox dd if=/dev/mtd11 of=/dev/mtdblock12    从11分区还原12
9 W3 ~! \. ~- z' w4 Ebusybox dd if=/dev/mtd9 of=/dev/mtdblock10     从9分区还原106 n6 u& A3 N! ^- v6 y3 Z& [2 i
busybox dd if=/dev/mtd3 of=/dev/mtdblock4      从3分区还原4
& r  ?8 o$ p; p' z+ Lcd /dev/shm 进入目录  tftp -g -r rootfsA.bin 192.168.1.2  上传0 q" S; v/ Z' k9 @& ~+ S
7 l5 j9 ?: g4 T  C
busybox dd if=/dev/shm/rootfsA.bin of=/dev/mtdblock12 还原12  * D4 h: s5 F3 r, W$ ]6 x
busybox dd if=/dev/shm/kernelA.bin of=/dev/mtdblock10  还原10
' z) x+ `. [! T4 l9 ?8 c' mbusybox dd if=/dev/shm/ubootA.bin of=/dev/mtdblock4     还原4. x/ E- i& e- z2 ]; t
发表于 2018-9-23 18:36:13 | 显示全部楼层
备份末端FF删不掉
发表于 2018-9-21 18:26:47 | 显示全部楼层
你QQ号多少,我上次备份了的
4 i# j& s1 K5 ~2 Z, {# Q. w* o
发表于 2018-9-21 20:40:23 | 显示全部楼层
感谢分享
6 t) p  P9 J6 P& f可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?
 楼主| 发表于 2018-9-21 21:12:26 | 显示全部楼层
naim1 发表于 2018-9-21 20:40
7 k& ^5 @; K4 d4 P8 E) O感谢分享
7 r; l- b' {5 E0 ?. j可是我导出来的R017无法用hwfw_gui打开,是什么回事呢?

- I5 A' Y( ]3 v6 A5 I! w# z备份出来的是hwfw_gui内部的rootfs,而不是刷机包bin。
  b. K: g" p3 h) H( M9 Z无法直接备份出原始的刷机包的。要自己再用hwfw_gui拼凑。6 q' o' H, I  Y9 ]
大哥比方,华为固件是windows的ISO安装镜像,我们备份的就像ghost备份。只能从备份还原方法刷其他机器备份的部分,而不能直接使能工具刷。
发表于 2018-9-21 21:39:36 | 显示全部楼层
华为的固件提取制作都比较简单,想要一些简单的功能也可以通过写个.SH 来解决。那位大神能搞定中兴烽火的固件编辑就好了
发表于 2018-9-21 21:46:58 | 显示全部楼层
本帖最后由 yecunbo 于 2018-9-21 21:48 编辑
; b7 j4 G2 B6 d( f$ s
+ w; X' S/ @6 g& ]! v8 ?( @经过尝试可以备份但是无法恢复进去,我有R18版本的8145v可以备份给你,加W X: yezi860061交流学习!
发表于 2018-9-22 12:24:32 | 显示全部楼层
谢谢分享,学习了
 楼主| 发表于 2018-9-23 23:00:47 | 显示全部楼层
942250037 发表于 2018-9-23 18:36
" l$ @$ i, L* o" e7 {- A备份末端FF删不掉

0 C) |8 n, t/ W5 _5 f用16进制编辑器可以删除的 不是直接delete键和backspace  通过右击编辑删除2 }9 y4 Q! v6 o4 W8 [
用winhex或者 ultraeditor 软件使用教程可以问度娘
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-1 23:06 , Processed in 0.027638 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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