achaoge 发表于 2018-10-10 15:16:09

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

本帖最后由 achaoge 于 2018-10-11 17:59 编辑

前言:    手头有一个华为的光猫 HS8145V,在补全Shell 的路上跌跌撞撞,终于在论坛翻楼找到了适合的方法。在此感谢各路神仙的探索和无私的分享。在摸索的过程中,发现光猫本身的系统没有提供自启动应用的入口,如果想在光猫上玩些花样也无能为力。但发现光猫除了本身的系统外,为了实现运营商的需求,还隐藏了一个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,源:http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/

操作过程:

[*]要操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.xml1.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/" ../shadow1.3 这个系统里面root 密码在上一步已经设置为跟光猫的系统密码一致(我的机器上密码是 admin)。如果要免密登录openwrt 系统,需要自己创建ssh密钥对,将自己的公钥放到 /opt/upt/apps/apps/etc/dropbear 下面,并命名为 authorized_keys。
OK,基本的系统操作完成,现在可以重启光猫了。
[*]重启光猫后,现在应该可以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/telephony2.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 122.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 系统了。







补充内容 (2018-11-2 11:44):
有的同学测试过不成功,后来我弄一个新的光猫的时候发现问题出来哪里了。
新的猫,在 hw_ctree.xml 这个文件里面应该是没有X_HW_CLISSHControl这一行的,所以 sed 命令也不会报错,但是却无法关闭光猫自身的dropbear

补充内容 (2018-11-2 11:46):
所以解决方法就是在 telnet 的 wap 命令界面,随便输入一个关于 ssh 的命令,比如说我就是改变了 ssh 的认证模式,然后在 hw_ctree.xml 里面就会有关于 ssh 的那一行了。
再执行一遍操作过程应该就可以了。

补充内容 (2018-11-23 11:28):
还不清楚ssh那行怎么处理的,请参考#48 楼的图。

achaoge 发表于 2018-11-23 10:57:10

meixianghao 发表于 2018-11-22 13:27
我的机器是r017版本,没有ssh命令,手工修改hw_ctree.xml文件也不行,还有办法吗?
现象跟asakiasako 的一样, ...

看图,在wap> 界面下运行ssh相关命令的示例截图

drelee3653 发表于 2022-6-24 00:54:16

能不能opkg install luci

yang1340751 发表于 2020-1-30 22:33:30

本帖最后由 yang1340751 于 2020-2-5 09:38 编辑

现在开始opkg修改,修改后配置如下
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
root@SAF:~#



安装luci,提示已经安装了最新版的luci,不知道该怎么解决了

root@SAF:~# opkg install luci-base

上述问题解决了,需要先update后再install
root@SAF:~# opkg update
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_base.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/base/Packages.sig.
Signature check passed.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/luci/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_luci.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/luci/Packages.sig.
Signature check passed.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/management/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_management.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/management/Packages.sig.
Signature check passed.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_packages.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/packages/Packages.sig.
Signature check passed.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/routing/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_routing.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/routing/Packages.sig.
Signature check passed.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/telephony/Packages.gz.
Updated list of available packages in /var/opkg-lists/chaos_calmer_telephony.
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/telephony/Packages.sig.
Signature check passed.



安装好了之后,打开浏览器192.168.1.1,提示如下错误



按照隔壁right网友的提示安装luci-theme-bootstrap

root@SAF:~# opkg install luci-theme-bootstrap
Upgrading luci-theme-bootstrap on root from R159 to git-16.018.33482-3201903-1...
Downloading http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/packages/luci/luci-theme-bootstrap_git-16.018.33482-3201903-1_all.ipk.
Removing obsolete file /usr/lib/lua/luci/view/themes/bootstrap/header.html.
Removing obsolete file /usr/lib/lua/luci/view/themes/bootstrap/footer.html.
Configuring luci-theme-bootstrap.
错误少了一点,先这样吧。晚点再看看

上述问题已解决,方法:安装luci-theme-bootstrap之后,重启光猫







achaoge 发表于 2019-4-24 08:42:06

SHB66091471 发表于 2019-4-23 18:48
你好。我的光猫是HG8342R。。能否加个QQ或是微信qq是1305015879微信world566855

我没有 HG8342R 这个型号,所以没有办法帮到你。
你可以加这个群试试,里面玩光猫的人多: Group ID:212496900

ccbcfan 发表于 2018-12-15 12:59:13

本帖最后由 ccbcfan 于 2018-12-15 05:01 编辑

感谢楼主,终于连上openwrt-ssh了。重启后需要再手工运行一次:
iptables -A INPUT_ACL -p tcp -mtcp --dport 22 -j ACCEPT

meixianghao 发表于 2018-11-22 11:36:32

我的机器没有 06.<X_HW_CLISSHControl Enable="0" port="22" Mode="1" AluSSHAbility="0"/>
wap下也没有命令ssh,还有办法吗?

xueli513@cd 发表于 2018-11-6 21:36:19

回复挣猫粮,回复挣猫粮

shring 发表于 2018-10-14 11:37:06

难得的技术贴

achaoge 发表于 2018-10-11 17:55:46

本帖最后由 achaoge 于 2018-10-11 17:58 编辑

消灭零回复!

所有的操作简化到一个文件里面,下载附件里面的文件解压,并传到光猫里面,然后执行下面的命令,重启之后就可以远程 ssh 登录光猫了sh openwrt_fix.sh
另外说明下,我的猫的版本是HS8145V R018版本的,如果型号和版本不一样的话,建议还是按一楼的手动来处理。
看看能赚点猫粮不?

picc745514 发表于 2018-10-13 00:00:21

这么牛逼的东西不支持一下啊?

hyr12358 发表于 2018-10-14 16:45:47

高手啊,真是正姿势了。以前觉得光猫简直没法折腾

墨者春秋 发表于 2018-10-14 19:01:27

高手!膜拜一下~

kinghappysun 发表于 2018-10-14 19:36:05

谢谢分享,有空时再好好研究研究。

pky317 发表于 2018-10-14 20:35:28

折腾无止境,这下有得玩了,多谢分享!

Sc丶Marse 发表于 2018-10-14 20:37:40

gunzip hw_ctree.xml.gz 这一步出错提示

Sc丶Marse 发表于 2018-10-14 20:38:49

本帖最后由 Sc丶Marse 于 2018-10-14 20:50 编辑

gunzip hw_ctree.xml.gz
这一步出错
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 玩机:激活华为光猫的小宇宙-openwrt