|
本帖最后由 achaoge 于 2018-10-11 17:59 编辑
" X t4 j1 i8 C8 g% k. K( W) S6 Q$ ^
前言: 手头有一个华为的光猫 HS8145V,在补全Shell 的路上跌跌撞撞,终于在论坛翻楼找到了适合的方法。在此感谢各路神仙的探索和无私的分享。在摸索的过程中,发现光猫本身的系统没有提供自启动应用的入口,如果想在光猫上玩些花样也无能为力。但发现光猫除了本身的系统外,为了实现运营商的需求,还隐藏了一个openwrt 系统,我们倒是可以在这个系统里面,自由的做我们想做的事情。0 v5 t B- E0 f/ E* d
- Z; ]7 x3 v6 m: t! S4 X
使用前提:/ j0 J6 G: _, h6 G
- 要有运营商定制文件的华为光猫,比如说天翼智能网关(其它家没有试过)。
- 要有telnet,需要补全shell。+ j* ~7 ~4 v' M/ w: p
) s. c# _4 E9 F4 Z( J \& w! b; x
# ~6 r2 O) v9 K. P3 t e F原理:8 S: x S6 i% s' C
为了满足运营商的需求,除了光猫自己的管理界面外,华为的光猫还有一个系统,配合运营商的管理需求。而这个系统,是运行在容器中的 openwrt 系统,在我手头的 HS8145v 光猫里面,就在 mtd17、mtd18、mtd19 分区上,分别挂载在 /opt/upt/framework 和 /opt/upt/apps 下面。其中 framework 分区为只读,映射为 openwrt 的 rootfs分区, apps 分区为可读写,映射为openwrt 的overlayer,可用容量为90多M。在启动过程中,华为的 saf-huawei 程序会在容器内完整的启动这个 openwrt 系统。. g$ ]& V& f) J, D
所以,只要我们把需要的文件放入这个内嵌的openwrt 系统,就可以像操普通的 openwrt 系统一样了,比如说启动 dropbear,asterisk 等等。
) S9 p, z b- U! v, @" l+ b 在我的光猫里面,内嵌的openwrt 是 CC,所以我找的软件源是 openwrt cc for omap,源:http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/* w, Y' K, d' y3 W) y5 J+ K
$ z9 u* z8 Q5 Z- C. I) H3 N) A0 v操作过程:( D: k& I% \7 p% a6 m' n
- 要操openwrt 系统,当然首先是准备好 dropbear 7 R6 f; N- b0 q, H
1.1 首先禁用光猫自带的 dropbear,并开启防火墙的22端口,这一步编辑的文件是 /mnt/jffs2/hw_ctree.xml 文件,因为文件有加密,所以需要解密编辑之后,再加密放回去,注意先备份 hw_ctree.xml !。- cd /tmp
. e( ~& J8 J F - cp /mnt/jffs2/hw_ctree.xml hw_ctree.xml.gz+ Q) S( C1 y& F& u% F
- aescrypt2 1 hw_ctree.xml.gz tmp5 w0 m5 ^! \/ I. [* ~( b/ r
- gunzip hw_ctree.xml.gz2 }. w/ w) [% B8 e4 L; v
- sed -i 's/\(X_HW_CLISSHControl Enable="\)./\10/;s/\(AclServices.*SSHLanEnable="\)./\11/' hw_ctree.xml
5 q+ F* K: I' d$ ]0 A - gzip hw_ctree.xml9 V4 S) @% b. J* n0 J" `% p
- aescrypt2 0 hw_ctree.xml.gz tmp0 X. J9 V/ W) n9 E
- cp hw_ctree.xml.gz /mnt/jffs2/hw_ctree.xml
复制代码 1.2 下载 dropbear 的包,解压,放入正确的位置。
* O; J/ z/ S( o: y8 s: G) ?- cd /tmp
) v" {! i4 I* m3 ~ - wget http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base/dropbear_2015.67-1_omap.ipk5 L6 T+ K+ K+ x1 t6 |* h9 D$ v# W* x
- tar xzf dropbear_2015.67-1_omap.ipk
5 `! B3 f3 z5 p3 M" |5 ^, T - cd /opt/upt/apps/apps/0 d3 t# o' _5 E
- tar xzf /tmp/data.tar.gz
+ O9 J% Q& _2 l9 l; F& ~ - mkdir etc/rc.d && cd etc/rc.d* |9 r& m3 `# a, V* W0 ]
- ln -s ../init.d/dropbear S50dropbear
$ o5 o- j m* _4 Q. F - rootpw=$(grep root /etc/shadow|cut -d: -f2)* {! F( x8 U0 ]% x
- sed -i "s/root:/root:$rootpw/" ../shadow
复制代码 1.3 这个系统里面root 密码在上一步已经设置为跟光猫的系统密码一致(我的机器上密码是 admin)。如果要免密登录openwrt 系统,需要自己创建ssh密钥对,将自己的公钥放到 /opt/upt/apps/apps/etc/dropbear 下面,并命名为 authorized_keys。0 K9 A$ d# O L: w
OK,基本的系统操作完成,现在可以重启光猫了。 - 重启光猫后,现在应该可以ssh 远程登录系统了,登录进去之后,我们得到一个 openwrt 系统的界面。8 k6 H) b! X# x0 s$ ?, {7 a
2.1 系统默认的软件源是不存在的,需要我们修改一下,指向一个arm架构的 openwrt cc 源,我的系统修改如下:- root@SAF:~# cat /etc/opkg/distfeeds.conf5 T; H2 h. M' Y* ]; V& i0 T" i# c
- src/gz chaos_calmer_base http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base
. o B/ b) ?+ ]9 `5 U - src/gz chaos_calmer_luci http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/luci
5 `5 B9 O7 N8 W6 h - src/gz chaos_calmer_management http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/management6 U8 i4 P- Y$ ?3 p
- src/gz chaos_calmer_packages http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/packages. ~+ o7 i0 G" m4 g" g; d% y
- src/gz chaos_calmer_routing http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/routing
( Q; u' S1 }2 z- m* N1 C; d - src/gz chaos_calmer_telephony http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/telephony
复制代码 2.2 修改之后,要让系统能够接受omap 源的包,需要修改 /etc/opkg.conf 文件,请加入 arch omap 10 这一行,根据自己的情况编辑。我的文件内容如下:- root@SAF:~# cat /etc/opkg.conf8 T& Q: M) A5 C5 y% c* ^
- dest root /
; U, Z* X4 w0 y6 @* Y8 r3 T - dest ram /tmp% F1 E1 ]9 I, }1 ?$ e8 G3 x, J. E
- lists_dir ext /var/opkg-lists ~: v' G$ v: W8 k/ i
- option overlay_root /overlay c* y% J; ]5 K& Q
- option check_signature 1
A( ~/ O% Y8 \ - arch all 1
u# i5 L* Y' X! n5 g - arch noarch 1
/ Z1 o0 I+ k) R$ q1 X( s - arch omap 10
/ Y+ N, k: x) m0 k- P3 c" A - arch sd5116v1 12
复制代码 2.3 现在可以运行 opkg 命令更新源,并查看软件信息了。但是奇怪的是,华为似乎阉割了 opkg 的安装功能,所以我们还需要替换掉系统的opkg命令,具体操作命令如下:- wget http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base/opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9_omap.ipk
; T$ N @7 M' R( g' Z7 C; J - tar xzf opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9_omap.ipk ./data.tar.gz5 ]: a! M) E! H, H
- tar xzf data.tar.gz ./bin/opkg
; [; \ h. }* I/ {7 v V - cp bin/opkg /bin/
复制代码 现在应该就可以愉快的操 openwrt 系统了。
9 d# P% ~" g$ _6 V$ C
o+ @/ @% W9 v5 f/ n7 _ W
* |/ d/ {' r8 `' S% h T" m5 A, D$ d H( }- t! v# U6 V
o5 r% ~& p# [% k. r5 N4 {8 O0 [
e! {' f- |0 z) l+ P! c" G) D. G6 u
- T9 L B8 u8 w补充内容 (2018-11-2 11:44):; C2 F, E# d4 k5 ~0 L. D5 E0 o
有的同学测试过不成功,后来我弄一个新的光猫的时候发现问题出来哪里了。
# i8 Z/ A& u) j7 ^+ C; t5 V* b- p新的猫,在 hw_ctree.xml 这个文件里面应该是没有X_HW_CLISSHControl这一行的,所以 sed 命令也不会报错,但是却无法关闭光猫自身的dropbear
' Y, U C% X% Q
8 S$ y6 D/ {. p' L9 Z2 O补充内容 (2018-11-2 11:46):2 E5 {" r Q) d
所以解决方法就是在 telnet 的 wap 命令界面,随便输入一个关于 ssh 的命令,比如说我就是改变了 ssh 的认证模式,然后在 hw_ctree.xml 里面就会有关于 ssh 的那一行了。' ]' G3 j) B- C/ z& _1 E; \
再执行一遍操作过程应该就可以了。
; \4 A5 W, G; Z' r# G: Q& v; `
9 r8 i: w2 K. p, i& P8 U3 o补充内容 (2018-11-23 11:28):
, y$ p' E- o) b4 {$ Q1 |还不清楚ssh那行怎么处理的,请参考#48 楼的图。 |
|