本帖最后由 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 J5 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/ Uhttps://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 |