本帖最后由 anysoft 于 2018-10-3 13:39 编辑 1 j' M- \" L+ f
" l; C0 d8 ]" C0 e
在我上一篇帖子中提过,光猫其实和路由器一样。底包都是改版的openwrt,然后固件打包解包过程加了华为自己的结构和加密处理而已。光猫加入了驱动和对应程序。所以完全可以把光猫当做路由来玩,特别是当前的光猫配置越来越好,还能挂载USB。/ o1 p, F9 V2 o. X& G
9 v( Q" y6 t8 d5 L: r: m
8 F- J: L) h9 l5 W
今天正题是如何备份光猫固件。华为光猫的刷机固件有自己独特的结构,常规的解包方式无用,看雪bxc大神分析了固件格式并开发了hwfw_gui。这个工具可以拆分华为固件,编辑内部文件。rootfs导出后是uimg文件 squashfs。
% n. @5 x( M3 q6 a* c" `0 j
: q7 b: Q5 Z6 i! m& S: p% b
3 p2 ?( x# R: u* A4 t. Z 废话不多说直接上备份命令(路由器固件备份命令):
& A2 n% a( s" {: X5 z$ E1、先获取、补全shell进入
4 Z0 S4 [# W2 a$ V
x/ ?* j% p! l% _, O 本文不就演示如何获取shell了,自行研究(获取shell都不会那么后边也没有看下去的必要)
7 a7 R1 e8 i, N b; O/ F; y; I! ~/ |# p8 @4 p
进入shell之后用户还不是root,可以用whoami命令查看当前用户,此时再执行su,密码:admin就变成root了。
% Y0 @( B( |. I8 F2、cat /proc/mtd 查看本机mtd信息# m9 |5 k4 h# j; R$ p
7 S5 v" w8 x! l W0 D
4 f9 M- _. ] S" s; Q& J
所有的mtd设备和别名都一目了然
: f: H g* Q3 f. i2 G |
3 s- O+ S6 R1 Y3、df查看挂载点信息
' ~. H) Q7 i) y
9 Z; l: X, v( }
- F( F9 v6 z* N" o. {* \8 @; N
1 X* Z0 D! F) K: c; _ 此处要注意,很多人备份或者上传文件都用/tmp文件夹,这里tmp文件夹只有10MB无法存放大文件,所以不要备份到tmp,看哪个文件夹可用空间大就备份到哪里。我是用的/dev/shm文件夹,足够的空间。" F& P' G, A0 `) G; Q
& z4 l( i0 F- s6 M6 E
4、备份每个dev" J" y _$ i1 i" C& d
busybox dd if=/dev/mtd12 of=/dev/shm/rootfsA.bin
9 _! d0 T9 u: R
4 y+ Z' G0 N k E/ r& c
: X. d' c1 S4 {这里各个分区备份出来后可以用hwfw_gui替换内部文件,或者直接通过还原命令在其他设备刷入。 2 v! r0 m7 j+ c* V* v: W! ]
0 G# m* G/ L0 i9 r8 f6 h4 }. {" N ^) g, S8 D, H! d4 ~9 H
6 |( A9 Y* w% k) ^+ h2 h
5、tftp导出备份文件到电脑+ {: H; g2 t/ n. Q
tftp -p -l rootfsA.bin -r rootfsA.bin 192.168.1.2, q- m: y& [5 C* d' T0 c$ Z3 Q
: V$ {$ f! s- B9 ^1 k& ~2 L
# W3 x6 w! K0 [. O40MB文件,(bin固件直接导出rootfs.img是38.1MB,40MB是后边有FF的空数据), G% o" E' f( ?: B# R; w
* @& T) z) O i4 ?
6、从备份还原
& C0 ~4 V( O2 D" q" Jdd if=ubootA.bin of=/dev/mtdblock3: g' \7 N( D; r' r5 c( B
或者
- m6 Y* K* D% |5 Pmtd -r write /dev/shm/rootfsA.bin rootfsA
1 `* A; e: ~2 y3 M7 \1 R& C
9 h( j1 Q' M" z) v6 q5 G4 b; g* |# Y6 _; ^
0 y, c6 F; p# G: F9 X2 N
1 B4 b6 O" z. a9 d ~
' i7 C/ I) }$ v' @3 C! w/ v0 N% z" L) N0 S
* ~. \) ]5 z1 p2 {; _ultraedit查看如下:; u; y) ]' `3 {% o! k
! n( W" B) S$ Y9 O ]2 T- @9 e) e; `. k9 _
hwfw_gui导出的rootfs.img
, [2 z- I2 [ \# V4 `+ K2 K* J; H9 P& }8 a1 H+ }
备份的rootfs
g, l, s4 W8 M2 h, P/ ]' ^5 b4 E. }2 O
. I( ~, ]9 y& y/ d% U/ K. E" \* C+ E/ R: I L4 s$ d) b2 E( y6 F
最后说一下,备份时候一定要确认你选的目录有足够的空间,备份完毕后可以df查看目录使用率是否达到100%,如果达到表示固件基本上没有备份完全。没备份完全的不要刷,刷了就会变砖。5 w* ?+ T6 A! H
, g/ a$ z- |4 L
# o) M/ a- b' d5 k& }7 I" R/ c7 X(PS一句 如果你备份的bin文件16进制末尾不是FFFFFF那么你基本备份失败,因为mtd一般都会比img固件大,所以不会完全写满mtd设备,这样备份出来的bin末尾必定是FF空段)
9 \2 z3 o* a) f$ {
% [! C; @+ ?) b. H7 l+ V
# u# Y' a( J* l. {2 ~/ A
" ], P! L. x, v( x9 G- G3 R2 j O6 j
4 q- ~% h& h* _) K. f! B8 A参考来源:( b M2 Y4 ^# O, A9 _
https://blog.csdn.net/chang198932/article/details/36435209
* x# Z# U$ U3 N- W$ |https://blog.csdn.net/kepa520/article/details/511954397 K" A9 V. @7 a i3 |2 H& e u" W
http://man.linuxde.net/tftp
& e* f2 z. [- {0 A1 z+ e! x2 B$ F) n; O
2 s8 b+ z' p" g' M! p, N
最最最后希望猫友可以帮忙备份一下 HS8145V的R018所有固件。拜谢!' ~# C6 F- N: }& Y
& P& X6 K; t" D; y
可以参考这个帖子回复$ e% i) S$ w$ G3 t
& D6 {" C# m4 jhttps://www.chinadsl.net/forum.php?mod=viewthread&tid=158559&highlight=%B1%B8%B7%DD3 L0 U, o+ C5 _ C! j$ f
+ u8 s! X% B; {9 Q9 {1 i8 ?) D7 o/ M1 x8 b
# O, Q& h4 y1 e' S% {# Z% @3 \
- T6 M$ D1 A0 @) k0 \. G
4 K) I4 h9 \0 U' x
" {' w8 q. C1 r% ^7 y |