找回密码
 注册

QQ登录

只需一步,快速开始

查看: 138870|回复: 265

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

  [复制链接]
发表于 2018-10-10 15:16:09 | 显示全部楼层 |阅读模式
本帖最后由 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 !。
    1. cd /tmp
    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 /
    3. dest 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 系统了。







补充内容 (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 楼的图。

点评

麻烦楼主或管理员把我上一个友情提示删掉,顺带这一条,谢谢  发表于 2020-1-16 03:24
友情提示,隔壁网站也有楼主的帖子,那篇稍晚点,不过也更详细些,评论里也都是人才  发表于 2020-1-16 03:18
还是不能愉快的操作openwrt,想安装openv p n,结果各种报错,也找不到防火墙文件,各种依赖,核心都不对  发表于 2020-1-13 00:22
注意:希望楼主补充下,直接输入或复制的指令会报错,每次输入命令,或黏贴前,按几下退格键,就会发现不报错了,原理不知道,感觉#后面有东西  发表于 2020-1-11 11:22
浏览器怎么进入 我192.168.1.1还是电信界面什么地址  发表于 2019-8-11 01:05
 楼主| 发表于 2018-10-11 17:55:46 | 显示全部楼层
本帖最后由 achaoge 于 2018-10-11 17:58 编辑

消灭零回复!

所有的操作简化到一个文件里面,下载附件里面的文件解压,并传到光猫里面,然后执行下面的命令,重启之后就可以远程 ssh 登录光猫了
  1. sh openwrt_fix.sh
复制代码

另外说明下,我的猫的版本是HS8145V R018版本的,如果型号和版本不一样的话,建议还是按一楼的手动来处理。
看看能赚点猫粮不?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

点评

这个opnetwrt包刷进光猫里的那个文件下。亲。怎么没有说明呢。 我刷jffs2文件里不好管用呀。  详情 回复 发表于 2019-8-16 18:33
兄弟,俺还没仔细研究,但看起来很厉害,我向你先致敬,并祝您万事如意、万万岁!  详情 回复 发表于 2019-7-26 18:41
 楼主| 发表于 2018-10-15 21:48:29 | 显示全部楼层
Sc丶Marse 发表于 2018-10-14 21:07
第一步完成了    以上问题是我复制了两次导致的  
但问题来了  SSH并不能连接上

两种可能
1,是第一步没有成功,即关闭系统的ssh,且开启防火墙的 ssh 端口。
查看这个不是否成功的方法,就是 telnet 进去之后,把系统的 hw_ctree.xml 解密解压之后,看看ssh的相关配置,我的文件如下:
  1. WAP(Dopra Linux) # cp /mnt/jffs2/hw_ctree.xml .
  2. WAP(Dopra Linux) # mv hw_ctree.xml hw_ctree.xml.gz
  3. WAP(Dopra Linux) # aescrypt2 1 hw_ctree.xml.gz tmp
  4. WAP(Dopra Linux) # gunzip hw_ctree.xml.gz
  5. WAP(Dopra Linux) # grep -i ssh hw_ctree.xml
  6. <X_HW_CLISSHControl Enable="0" port="22" Mode="1" AluSSHAbility="0"/>
  7. <AclServices HTTPLanEnable="1" HTTPWanEnable="0" FTPLanEnable="1" FTPWanEnable="0" TELNETLanEnable="1" TELNETWanEnable="0" SSHLanEnable="1" SSHWanEnable="0" SamBaLanEnable="1" SamBaWanEnable="0" HTTPPORT="80" FTPPORT="21" TELNETPORT="23" SSHPORT="22" WebPermanentCloseControl="0" HTTPWifiEnable="1" TELNETWifiEnable="1" WebAccessControl="1" TrustHost="" HTTPSWanEnable="0"/>
复制代码


2,第一步操作成功,但是第二步 ssh 没有启动,这个可以看一看 ps 命令的输出情况来判断:
  1. ps -w|grep dropbear
  2. 3156 root      1000 S    /usr/sbin/dropbear -F -P /var/run/dropbear.1.pid -p 22 -K 300
复制代码

如果是系统自带的 dropbear 的话,dropbear 命令应该是没有带/usr/sbin 的路径信息。
 楼主| 发表于 2018-11-12 12:58:08 | 显示全部楼层
asakiasako 发表于 2018-11-11 03:06
我的配置里没有 X_HW_CLISSHControl,但我在打包前将

这一行手动添加上去了,通过重新解压可以确定这两 ...

手动加那一行不是很好处理,因为不知道你是加到哪个位置的。
看你的输出的信息,你 openwrt 里面的 ssh 是启动了的,但是华为光猫的 dropbear 没有禁用,所以你 ssh 连接到光猫的时候 ,还是进入到光猫的原生界面。

你在光猫的 wap > 这个提示符下面,连续输入
ssh authentication-type mode 1
save data
附图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2018-11-19 11:40:31 | 显示全部楼层
江山2018 发表于 2018-11-18 23:06
请问楼主,如何查看并得知自己光猫里op系统的版本是CC?

开了 ssh 登录了系统就有提示是CC啊

另外如果没有登录到OP系统的时候,在华为光猫的命令提示符下可以看
cat /opt/upt/framework/saf/rootfs/etc/opkg/distfeeds.conf 这个文件,里面也有提示是CC。

点评

hn8245q r016版找不到distfeeds.conf文件,putty用ssh进去也没有提示op版本,咋整?  详情 回复 发表于 2018-11-23 09:10
 楼主| 发表于 2018-11-22 09:42:37 | 显示全部楼层

有这个包,
udpxy - 2015-03-08-c045a1e855a8033c5d70ab3e42271ba5636eb520-1 - udproxy makes it possible to convert UDP IPTV streams into HTTP
streams which can be viewed even over WLANs. HTTP streams do
not generate huge amounts of multicast traffic, so a sd stream
only takes about 300k. Interesting for peoply who have IPTV at
home and do not want to rent multiple decoders from their
provider but just use their own streaming client (for example
popcornhour/mediatomb/vlc).

 楼主| 发表于 2018-11-22 10:32:39 | 显示全部楼层
meixianghao 发表于 2018-11-22 09:49
如果能安装的话,就厉害了,光猫完全可以当普通的openwrt路由器用了
udpxy这个包可以用来将iptv的组播流转成 ...

不懂这个。
那如果要换频道看怎么处理?
 楼主| 发表于 2018-11-23 10:57:10 | 显示全部楼层
meixianghao 发表于 2018-11-22 13:27
我的机器是r017版本,没有ssh命令,手工修改hw_ctree.xml文件也不行,还有办法吗?
现象跟asakiasako 的一样, ...

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

点评

牛逼的东西不支持一下啊?  详情 回复 发表于 2021-3-28 11:44
 楼主| 发表于 2018-11-23 11:45:31 | 显示全部楼层
江山2018 发表于 2018-11-23 09:10
hn8245q r016版找不到distfeeds.conf文件,putty用ssh进去也没有提示op版本,咋整?

江苏的1000M壕。
op的提示信息是在你启用OP之后才会有的。putty 进去之后,应该默认是华为光猫的 dropbear 吧?没有hn8245q 这款猫,网上这款猫的资料也不多,很心仪啊,一起学习下?截个图看看呗。

点评

加好友呗66821847  发表于 2018-11-23 20:36
 楼主| 发表于 2018-12-11 09:24:51 | 显示全部楼层
anysoft 发表于 2018-12-4 10:54
楼主可否提供你的hw_ctree.xml? 我参考你的配置文件手动添加ssh选项,目前我的wap界面也是没有ssh相关命 ...

正好之前也是有坛友有同样的疑问,下面是当时的回复,已经实验成功:

的确差异比较大, 我也有一个R017 的,配置文件看起来确实不一样。
如果要修改OP里面 dropbear 的端口,配置文件是 /opt/upt/apps/apps/etc/config/dropbear ,我的文件配置是这个样子的:
  1. cat /opt/upt/apps/apps/etc/config/dropbear
  2. config dropbear
  3.         option PasswordAuth 'on'
  4.         option RootPasswordAuth 'on'
  5.         option Port         '22'
复制代码

不过你要改端口的话,相对来说要麻烦一些,因为华为光猫默认是把其它端口都给关闭了,所以这里面就需要你自己开防火墙的端口,具体的操作就是用 iptables 命令把你开的端口设置为允许。
  1. iptables -A INPUT_ACL -p tcp -mtcp --dport your_dropbear_port -j ACCEPT
复制代码

替换 your_dropbear_port 成你修改的端口。
这个开防火墙的命令,可以在你设置好OP后,加到OP的启动命令里面,就不用自己手动输入了。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|宽带技术网 |网站地图

粤公网安备 44152102000001号

GMT+8, 2024-4-26 04:14 , Processed in 0.035002 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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