恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 24362|回复: 187

唤醒华为智能网关光猫隐藏的小宇宙:OpenWRT

    [复制链接]
发表于 2018-11-7 18:01 | 显示全部楼层 |阅读模式
本帖最后由 achaoge 于 2019-9-11 08:40 编辑

本文先发于 chinadsl, 链接:http://www.chinadsl.net/forum.php?mod=viewthread&tid=158737


言:
    手头有一个华为的光猫 HS8145V,在补全Shell 的路上跌跌撞撞,终于在chinadsl论坛翻楼找到了适合的方法。在此感谢各路神仙的探索和无私的分享。在摸索的过程中,发现光猫本身的系统没有提供自启动应用的入口,如果想在光猫上玩些花样也无能为力。但发现光猫除了本身的系统外,为了实现运营商的需 求,还隐藏了一个openwrt 系统,我们倒是可以在这个系统里面,自由的做我们想做的事情。

使用前提:
  • 要有运营商定制文件的华为光猫,比如说天翼智能网关(其它家没有试过)。
  • 要有telnet,需要补全shell。

原理:
    为了满足运营商的需求,除了光猫自己的管理界面外,华为的光猫还有一个系统,配合运营商的管理需求。而这个系统,是运行在容器中的 openwrt 系统,在我手头的 HS8145v 光猫里面,就在 mtd17、mtd18、mtd19 分区上,分别挂载在 /opt/upt/framework 和 /opt/upt/apps 下面。其中 framework 分区为只读,映射为 openwrt 的 rootfs分区, apps 分区为可读写,映射为openwrt 的overlayer,可用容量为90多M。在启动过程中,华为的 saf-huawei 程序会在容器内完整的启动这个 openwrt 系统。
所以,只要我们把需要的文件放入这个内嵌的openwrt 系统,就可以像操普通的 openwrt 系统一样了,比如说启动 dropbear,asterisk 等等。
在我的光猫里面,内嵌的openwrt 是 CC,所以我找的软件源是 openwrt cc for omap,源:

操作过程:
  • 要操openwrt 系统,当然首先是准备好 dropbear
    1.1 首先禁用光猫自带的 dropbear,并开启防火墙的22端口,这一步编辑的文件是 /mnt/jffs2/hw_ctree.xml 文件,因为文件有加密,所以需要解密编辑之后,再加密放回去,注意先备份 hw_ctree.xml !。
    1.1.1 先telnet 连接到光猫,在 wap > 界面下操作 ssh 配置,命令如下(这一步是保证在光猫的配置文件中,确认有关于 X_HW_CLISSHControl 的命令行):
    1. ssh authentication-type mode 1
    2. save data
    复制代码

    1.1.2 然后在 wap> 界面下,连续输入 su 命令提权、shell 命令入 linux 命令行界面,之后在Linux命令行界面下依次输入以下命令:
    1. cd /tmp && rm hw_ctree*
    2. cp /mnt/jffs2/hw_ctree.xml hw_ctree.xml.gz
    3. aescrypt2 1 hw_ctree.xml.gz tmp
    4. gunzip hw_ctree.xml.gz
    5. sed -i 's/\(X_HW_CLISSHControl Enable="\)./\10/;s/\(AclServices.*SSHLanEnable="\)./\11/' hw_ctree.xml
    6. gzip hw_ctree.xml
    7. aescrypt2 0 hw_ctree.xml.gz tmp
    8. cp hw_ctree.xml.gz /mnt/jffs2/hw_ctree.xml
    复制代码

    1.2 下载dropbear的包,解压,放入正确的位置。
    1. cd /tmp
    2. wget http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base/dropbear_2015.67-1_omap.ipk
    3. tar xzf dropbear_2015.67-1_omap.ipk
    4. cd /opt/upt/apps/apps/
    5. tar xzf /tmp/data.tar.gz
    6. mkdir etc/rc.d && cd etc/rc.d
    7. ln -s ../init.d/dropbear S50dropbear
    8. rootpw=$(grep root /etc/shadow|cut -d: -f2)
    9. sed -i "s/root:/root:$rootpw/" ../shadow
    复制代码

    1.3 这个系统里面root 密码在上一步已经设置为跟光猫的系统密码一致(我的机器上密码是 admin)。如果要免密登录openwrt 系统,需要自己创建ssh密钥对,将自己的公钥放到 /opt/upt/apps/apps/etc/dropbear 下面,并命名为 authorized_keys。 OK,基本的系统操作完成,现在可以重启光猫了。

  • 重启光猫后,现在应该可以ssh 远程登录系统了,登录进去之后,我们得到一个 openwrt 系统的界面。 2.1 系统默认的软件源是不存在的,需要我们修改一下,指向一个arm架构的 openwrt cc 源,我的系统修改如下:
    1. root@SAF:~# cat /etc/opkg/distfeeds.conf
    2. src/gz chaos_calmer_base http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base
    3. src/gz chaos_calmer_luci http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/luci
    4. src/gz chaos_calmer_management http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/management
    5. src/gz chaos_calmer_packages http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/packages
    6. src/gz chaos_calmer_routing http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/routing
    7. 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 这一行,根据自己的情况编辑。我的文件内容如下:
    1. root@SAF:~# cat /etc/opkg.conf
    2. dest root / dest
    3. ram /tmp
    4. lists_dir ext /var/opkg-lists
    5. option overlay_root /overlay
    6. option check_signature 1
    7. arch all 1
    8. arch noarch 1
    9. arch omap 10
    10. arch sd5116v1 12
    复制代码

    2.3 现在可以运行 opkg 命令更新源,并查看软件信息了。但是奇怪的是,华为似乎阉割了 opkg 的安装功能,所以我们还需要替换掉系统的opkg命令,具体操作命令如下:
    1. wget http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base/opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9_omap.ipk
    2. tar xzf opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9_omap.ipk ./data.tar.gz
    3. tar xzf data.tar.gz ./bin/opkg
    4. cp bin/opkg /bin/
    复制代码

    现在应该就可以愉快的操 openwrt 系统了。

  • 完善 OpenWRT 的一些功能
    3.1 把 aescrypt2 的功能放到OpenWRT 里面来,免得每次修改文件都要 telnet 到原生系统里面去。 telnet 进原生系统后,操作命令:
    1. cd /tmp
    2. tar czf aescrypt2.tgz /lib/libubacktrace* /lib/libhw_ssp_basic.so /bin/aescrypt2 /etc/wap/aes_string
    复制代码

    然后在OpenWRT 里面运行命令:
    1. tar xzf /e8ctmp/aescrypt2.tgz -C /
    复制代码

    3.2 把 iptables 防火墙配置命令放到OpenWRT 里面来。 还是telnet进原生系统,打包相关文件:
    1. cd /tmp
    2. tar czf iptables.tgz /lib/xtables /lib/libip* /lib/libxt* /sbin/ip* /sbin/xtables-multi /lib/pkgconfig/*
    复制代码

    然后在OpenWRT 里面运行命令:
    1. tar xzf /e8ctmp/iptables.tgz -C /
    复制代码



我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-7 18:39 | 显示全部楼层
留名,支持一下
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-7 18:42 | 显示全部楼层
安装了插件,没界面也不好操作,不折腾
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-7 18:54 | 显示全部楼层
意思是在定制界面下才能玩吧,恢复成原厂系统无效/??

点评

有网友的光猫运行的是华为的界面,但是在查看进程的时候发现有 saf-huawei 这个进程。 理论上讲, saf-huawei 就是用来启动 OpenWRT 子系统的,所以应该也是可以的。但手头没有华为界面的猫,没有测试。  详情 回复 发表于 2018-11-8 09:57
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-7 19:22 | 显示全部楼层
楼主厉害了啊,同HS8145V,一直在想这猫性能也可以,要是有个固件就好了
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-7 19:33 | 显示全部楼层
学习学习!感谢楼主分享!!!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-7 20:47 | 显示全部楼层
这个很叼。
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2018-11-8 09:57 | 显示全部楼层
邪恶海盗 发表于 2018-11-7 18:54
意思是在定制界面下才能玩吧,恢复成原厂系统无效/??

有网友的光猫运行的是华为的界面,但是在查看进程的时候发现有 saf-huawei 这个进程。
理论上讲, saf-huawei 就是用来启动 OpenWRT 子系统的,所以应该也是可以的。但手头没有华为界面的猫,没有测试。

点评

实测华为界面的也是可以的  详情 回复 发表于 2019-9-26 09:07
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2018-11-8 10:02 | 显示全部楼层
    有同学问是不是必须要运营商界面才可以,手头没有华为界面的猫,所以并没有测试,如果哪位同学有条件的话,也可以按这个方法走一遍。
    华为光猫里面的OpenWRT 子系统是通过 saf-huawei 这个进程来启动的,而有同学反应说在华为界面的光猫里面,有这个进程运行,所以理论上讲,应该也是可以的。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-15 11:26 | 显示全部楼层
记号 谢谢 记号 谢谢 记号 谢谢
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-16 18:24 | 显示全部楼层
这个厉害了,大雕,lintel这些大神赶紧研究下就好了。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-16 18:51 | 显示全部楼层
真是大佬级别的骚操作啊,一直想给8145v加插件,但官方没有插件,但看起来折腾起来还真需要一定功底,有空了试试吧
来自安卓客户端来自安卓客户端
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-22 10:50 | 显示全部楼层
厉害了,先留贴备用!
我的恩山、我的无线 The best wifi forum is right here.
发表于 2018-11-25 00:07 | 显示全部楼层
第一步wget http://archive.openwrt.org/chaos ... _2015.67-1_omap.ipk 这里提示错误,提示无法链接到网站,但我用浏览器可以打开,我光猫已经关闭路由功能,改桥接了,是不是跟这有关呢????

点评

是的,这一步需要光猫能上网,这个有多种方式实现。 1 如果运营商允许多拨,在光猫上建一个拨号链接就可以了 2 如果不能多拨,那建立到拨号路由器的连接,建立静态路由到下载网址,或者路由上跑个代理。 3 预先把  详情 回复 发表于 2018-11-25 13:00
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2018-11-25 13:00 来自手机 | 显示全部楼层
aini50563 发表于 2018-11-25 00:07
第一步wget http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base/dropbear_2015. ...

是的,这一步需要光猫能上网,这个有多种方式实现。
1 如果运营商允许多拨,在光猫上建一个拨号链接就可以了
2 如果不能多拨,那建立到拨号路由器的连接,建立静态路由到下载网址,或者路由上跑个代理。
3 预先把要下载的东西丢到光猫上。

点评

这个我昨天已经试过了,确实是改桥接后光猫不能联网导致的。但cd /tmp && rm hw_ctree* 我这一步就开始卡壳了,提示没有文件。可以跳过,我估计这个命令只是谨慎作用,然后到mkdir etc/rc.d && cd etc/rc.d这里又报  详情 回复 发表于 2018-11-25 20:53
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2020-4-10 10:02

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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