激活华为光猫的小宇宙-openwrt

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

使用前提:
  1. 要有运营商定制文件的华为光猫,比如说天翼智能网关(其它家没有试过)。
  2. 要有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,源:http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/

操作过程:
  1. 要操openwrt 系统,当然首先是准备好 dropbear 
    1.1 首先禁用光猫自带的 dropbear,并开启防火墙的22端口,这一步编辑的文件是 /mnt/jffs2/hw_ctree.xml 文件,因为文件有加密,所以需要解密编辑之后,再加密放回去,注意先备份 hw_ctree.xml !。
    cd /tmp
    cp /mnt/jffs2/hw_ctree.xml hw_ctree.xml.gz
    aescrypt2 1 hw_ctree.xml.gz tmp
    gunzip hw_ctree.xml.gz
    sed -i 's/\(X_HW_CLISSHControl Enable="\)./\10/;s/\(AclServices.*SSHLanEnable="\)./\11/' hw_ctree.xml
    gzip hw_ctree.xml
    aescrypt2 0 hw_ctree.xml.gz tmp
    cp hw_ctree.xml.gz /mnt/jffs2/hw_ctree.xml
    1.2 下载 dropbear 的包,解压,放入正确的位置。
    cd /tmp
    wget http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base/dropbear_2015.67-1_omap.ipk
    tar xzf dropbear_2015.67-1_omap.ipk
    cd /opt/upt/apps/apps/
    tar xzf /tmp/data.tar.gz
    mkdir etc/rc.d && cd etc/rc.d
    ln -s ../init.d/dropbear S50dropbear
    rootpw=$(grep root /etc/shadow|cut -d: -f2)
    sed -i "s/root:/root:$rootpw/" ../shadow
    1.3 这个系统里面root 密码在上一步已经设置为跟光猫的系统密码一致(我的机器上密码是 admin)。如果要免密登录openwrt 系统,需要自己创建ssh密钥对,将自己的公钥放到 /opt/upt/apps/apps/etc/dropbear 下面,并命名为 authorized_keys。
    OK,基本的系统操作完成,现在可以重启光猫了。
  2. 重启光猫后,现在应该可以ssh 远程登录系统了,登录进去之后,我们得到一个 openwrt 系统的界面。
    2.1 系统默认的软件源是不存在的,需要我们修改一下,指向一个arm架构的 openwrt cc 源,我的系统修改如下:
    root@SAF:~# cat /etc/opkg/distfeeds.conf
    src/gz chaos_calmer_base http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base
    src/gz chaos_calmer_luci http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/luci
    src/gz chaos_calmer_management http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/management
    src/gz chaos_calmer_packages http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/packages
    src/gz chaos_calmer_routing http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/routing
    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.conf
    dest root /
    dest ram /tmp
    lists_dir ext /var/opkg-lists
    option overlay_root /overlay
    option check_signature 1
    arch all 1
    arch noarch 1
    arch omap 10
    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
    tar xzf opkg_9c97d5ecd795709c8584e972bfdf3aee3a5b846d-9_omap.ipk ./data.tar.gz
    tar xzf data.tar.gz ./bin/opkg
    cp bin/opkg /bin/
    现在应该就可以愉快的操 openwrt 系统了。

评论

Unknown说…
博主,我照你的方法试了,发现 ssh 进入的是和 telnet 一样的界面,然后研究了下,发现配置文件里没有 X_HW_CLISSHControl 这个字段…… 请问这个字段应该加在哪里……

此博客中的热门博文

[Google Maps] Where are you from?

Debian: tor + privoxy