HS8145C5/V5 开启Telnet获取超管权限
目录
文章转载自:https://www.crsay.com/blog/network/hs8145c5-v5-telnet-telecomadmin.html
本文主要解决的问题是
- 开通Telnet
- 获取超管权限
- 运营商与华为操作界面互换
- 更改MAC/SN/EPON/GPON
- 激活Lxc容器内的OpenWRT
- 其他
备份是个好习惯,事先务必记录一些资料
- 光猫的LOID
- PPP/ITV/TR069的VLAN ID,
- MAC地址和设备SN
- 宽带账号与密码
需要准备的工具:
1.ONT维修使能工具(用于开启路由器Telnet) 2.华为配置加解密工具(密文解密-用$2解密) 3.电脑安装有Telnet或者直接下载一个telnet.exe 也可
一、开启Telnet #
- 光猫拔除所有线缆,然后LAN1口插网线直接与电脑连接,通电
- 电脑上ipv4地址设置为192.168.1.x(小于255且不为1)
- 电脑上打开ONT维修使能工具,点V5使能(对应天翼网关的版本),选择连接LAN1口的网卡,按“启动”按钮,等待使能成功(直到当前成功总数为1),此时右侧设备列表会显示绿色的success,光猫上所有指示灯常亮,不用管它,点击停止,拔线重启。
- 重启完毕后电脑上
telnet 192.168.1.1
root #用户名
adminHW #密码
su #提权,此时只能使用华为内置的定制命令,输入?显示所有可用的命令。
shell #进入shell
ls #能列出文件即表示shell补全成功。
此时shell用户其实是srv_ssmp,可以再输入一次su(密码:admin)提升为root。
二、获取超管权限 #
获取超管权限有三种方式
- 提升useradmin为超级权限用户
- 查询超管用户telecomadmin密码
- 增加一个超管用户
先Telnet进去
telnet 192.168.1.1
root
adminHW
su
shell
cd /mnt/jffs2/ #进入/mnt/jffs2目录
cp -f hw_ctree.xml hw_ctree.xml.bak #备份是个好习惯
cp -f hw_ctree.xml mycfg.xml.gz #拷贝一份出来
aescrypt2 1 mycfg.xml.gz tem #1为解密 0为加密,tem是key,加密也用这个
gzip -d mycfg.xml.gz #解压
到这里为止我们得到了一个解密后的mycfg.xml文件
看看其中用户设置部分
<X_HW_WebUserInfo NumberOfInstances="2">
<X_HW_WebUserInfoInstance InstanceID="1" ModifyPasswordFlag="0" UserName="useradmin" Password="$2yyyyyyyyyyyyyyyyyyy" UserLevel="1" Enable="1" Alias="cpe-1" Salt="c3d06c58fc5ad62c23979eff" PassMode="3"/>
<X_HW_WebUserInfoInstance InstanceID="2" ModifyPasswordFlag="1" UserName="telecomadmin" Password="$2;xxxxxxxxxxxxxxxxxx$" UserLevel="0" Enable="1" Alias="cpe-2" PassMode="3" Salt="50181e70bec28dd7aaa6f4f5"/>
</X_HW_WebUserInfo>
----------------------------------------
NumberOfInstances=2 用户总数为2
InstanceID="1" 用户序号
UserLevel="1" 1为普通用户 0为超级用户
Enable="1" 1启用 0禁用
Alias="cpe-1" 别名,不重要
Salt="c3d06c58fc5ad62c23979eff" 盐,加密用的随机数
PassMode="3" 加密模式 ,0表示明文不加密
搞懂这段代码的含义就可以修改了,根据自己需要选择下面三个操作中的任意一个或几个
1、提升useradmin为超级权限 把useradmin这一行的UserLevel=”1″改为UserLevel=”0″即可
2、查询超管telecomadmin的密码 telecomadmin这一行内$与$之间的xxxxxxxxxxxxxx$就是超管密码,用华为解密工具的密文解密里的$2解密即可
grep WebUserInfoInstance mycfg.xml #提取包含有超管密码的项password字段
另:其实获取超管密码还有另一个相对简单的办法
telnet 192.168.1.1
root
adminHW
display current-configuration grep telecomadmin
屏幕上会直接打印出含有telecomadmin账户密码的行,解密即可
3.增加一个超管用户
修改
<X_HW_WebUserInfo NumberOfInstances="2">
为
<X_HW_WebUserInfo NumberOfInstances="3">
在telecomadmin这一行下面新增一行,表示新增一个超管admin密码为newpasswd
<X_HW_WebUserInfoInstance InstanceID="3" ModifyPasswordFlag="0" UserName="admin" Password="newpasswd" UserLevel="0" Enable="1" Alias="cpe-3" PassMode="0" />
完成修改以后
gzip mycfg.xml #压缩
aescrypt2 0 mycfg.xml.gz tem #加密
cp -f mycfg.xml.gz /mnt/jffs2/hw_ctree.xml #替换
reboot #重启生效
注意:以上三种方式中,useradmin提权最简便,但如果在前台WEB界面修改useradmin的密码,useradmin可能会变回普通用户,未验证!第二种方式不需要修改文件,但如果运营商下发数据的话应该会发生改变,我采用的是第三种方式新增一个超管用户。
三、运营商界面与华为操作界面互换 #
cp -f /mnt/jffs2/hw_ctree.xml /mnt/jffs2/hw_ctree_bak.xml (备份运营商hw_ctree文件)
cp -f /mnt/jffs2/hw_boardinfo /mnt/jffs2/hw_boardinfo_bak ( 备份运营商hw_boardinfo文件)
cp -f /etc/wap/hw_default_ctree.xml /mnt/jffs2/hw_ctree.xml ( 拷贝华为原厂hw_ctree文件)
sed -i 's/^.*obj.id = "0x0000001a" ; obj.value =.*$/obj.id = "0x0000001a" ; obj.value = "COMMON";/' /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x0000001b" ; obj.value =.*$/obj.id = "0x0000001b" ; obj.value = "COMMON";/' /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x00000031" ; obj.value =.*$/obj.id = "0x00000031" ; obj.value = "NOCHOOSE";/' /mnt/jffs2/hw_boardinfo
reboot (重新启动)
1a, 1b, 31这三行sed
替换的命令 用vi
直接编辑hw_boardinfo
其实更加方便。
注意:因为替换了华为原厂的ctree文件,此时连接telnet的话,需要把电脑的IP地址修改为192.168.100.0/24地址段的,连接192.168.100.1
,WEB登陆的密码则是telecomadmin: admintelecom
,登录进去以后恢复设置就可以以192.168.1.1来连接了。
恢复电信界面的话反向操作即可,要把上面那三行替换为COMMON
和NOCHOOSE
的项再换回去
以湖北电信为例
telnet 192.168.100.1
root
admin
wap>su
wap>shell
cp -f /mnt/jffs2/hw_ctree_bak.xml /mnt/jffs2/hw_ctree.xml
cp -f /mnt/jffs2/hw_boardinfo_bak /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x0000001a" ; obj.value =.*$/obj.id = "0x0000001a" ; obj.value = "E8C";/' /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x0000001b" ; obj.value =.*$/obj.id = "0x0000001b" ; obj.value = "HUBCT";/' /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x00000031" ; obj.value =.*$/obj.id = "0x00000031" ; obj.value = "CHOOSE_XINAN";/' /mnt/jffs2/hw_boardinfo
reboot
如果要永久启用华为界面,会清除运营商的定制信息,那可就再也回不去运营商界面了,慎用!
restorehwmode.sh
reboot
替换为华为界面的话会多出来很多设置,但对家庭用户而言大部分没什么用,比较有价值的是可以设定dhcp静态绑定和删除tr069,但是无法开放usb的匿名共享。
说到这个tr069的话,在运营商界面里是没法删除和禁用的,在华为的界面里倒是可以直接操作,但是telnet显然更方便一些
telnet 192.168.1.1
root
adminHW
su
display waninfo interface wan1 #tr069连接
ip interface config interface wan1 status Disable #禁用tr069 Enable启用
四、切换EPON/GPON和修改MAC和SN #
MAC和SN的修改较为简单,直接替换相应字段即可。
telnet 192.168.1.1 #hw:100.1
root
adminHW #hw:admin
su
shell
cd /mnt/jffs2
vi hw_boardinfo
obj.id = "0x00000001" ; obj.value = "4"; 可以修改为:1、GPON 2、EPON 4、双模
obj.id = "0x00000002" ; obj.value = "485754444AB7AB9A";光猫标签上的 PON NO 序号 可以修改!
obj.id = "0x00000008" ; obj.value = "2150083444AAA6000999";光猫标签上的 PROD ID 序号 可以修改
obj.value = "F1:51:81:81:81:C0"; MAC地址(12位),可以改成你需要的MAC地址!
obj.id = "0x0000000b" ; obj.value = "F1:51:81:81:81:C8";从这一行开始,MAC地址只能修改前11位,最后一位不能修改!
obj.id = "0x00000022" ; obj.value = "F1:51:81:81:81:C9"; 最后一位不能修改!
obj.id = "0x00000023" ; obj.value = "F1:51:81:81:81:CA";最后一位不能修改!
obj.id = "0x00000024" ; obj.value = "F1:51:81:81:81:CB";最后一位不能修改!
obj.id = "0x0000002d" ; obj.value = "F1:51:81:81:81:CC"; 最后一位不能修改!
obj.id = "0x0000002e" ; obj.value = "F1:51:81:81:81:CD";最后一位不能修改!
obj.id = "0x0000002f" ; obj.value = "F1:51:81:81:81:CE";最后一位不能修改!
obj.id = "0x00000030" ; obj.value = "F1:51:81:81:81:CF";最后一位不能修改!
obj.id = "0x0000000c" ; obj.value = "F1:51:81:81:81:C1";最后一位不能修改!
obj.id = "0x0000000d" ; obj.value = "F1:51:81:81:81:C2";最后一位不能修改!
obj.id = "0x0000000e" ; obj.value = "F1:51:81:81:81:C3";最后一位不能修改!
obj.id = "0x0000000f" ; obj.value = "F1:51:81:81:81:C4";最后一位不能修改!
obj.id = "0x00000010" ; obj.value = "F1:51:81:81:81:C5";最后一位不能修改!
obj.id = "0x00000011" ; obj.value = "F1:51:81:81:81:C6";最后一位不能修改!
obj.id = "0x00000012" ; obj.value = "F1:51:81:81:81:C7";最后一位不能修改!
obj.id = "0x00000013" ; obj.value = "F1:51:81:81:81:C0";最后一位不能修改!
obj.id = "0x00000025"; obj.value = "F1:51:81:81:81:C0";这一行的MAC地址要修改为12位!
修改完毕保存退出,重启后生效。
改单双模风险极高,务必慎重!!!
hw_boardinfo中每个obj对应的字段意义可以参考一下
01.
02.\#define HW_DM_PD_PON_MODE_OBJ_ID (0x00000001) /* 上行口模式 */
03.\#define HW_DM_PD_SN_OBJ_ID (0x00000002) /* PON SN */
04.\#define HW_DM_PD_SN_PASSWORD_OBJ_ID (0x00000003) /* GPON Password */
05.\#define HW_DM_PD_SN_HEX_PASSWORD_OBJ_ID (0x00000004) /* GPON Password HEX */
06.\#define HW_DM_PD_EPON_KEY_OBJ_ID (0x00000005) /* EPON Key */
07.\#define HW_DM_PD_EPON_PWD_OBJ_ID (0x00000006) /* EPON pwd */
08.\#define HW_DM_PD_BOARD_ITEM_OBJ_ID (0x00000007) /* 单板条码 */
09.\#define HW_DM_PD_MACHINE_ITEM_OBJ_ID (0x00000008) /* 整机条码 */
10.\#define HW_DM_PD_OPTIC_ITEM_OBJ_ID (0x00000009) /* 光模块条码 */
11.\#define HW_DM_PD_LAN_MAC_OBJ_ID (0x0000000a) /* LAN MAC */
12.\#define HW_DM_PD_WLAN_MAC_OBJ_ID (0x0000000b) /* WLAN MAC */
13.\#define HW_DM_PD_WAN_1_MAC_OBJ_ID (0x0000000c) /* WAN1 MAC */
14. \#define HW_DM_PD_WAN_2_MAC_OBJ_ID (0x0000000d) /* WAN2 MAC */
15. \#define HW_DM_PD_WAN_3_MAC_OBJ_ID (0x0000000e) /* WAN3 MAC */
16. \#define HW_DM_PD_WAN_4_MAC_OBJ_ID (0x0000000f) /* WAN4 MAC */
17. \#define HW_DM_PD_WAN_5_MAC_OBJ_ID (0x00000010) /* WAN5 MAC */
18. \#define HW_DM_PD_WAN_6_MAC_OBJ_ID (0x00000011) /* WAN6 MAC */
19. \#define HW_DM_PD_WAN_7_MAC_OBJ_ID (0x00000012) /* WAN7 MAC */
20. \#define HW_DM_PD_WAN_8_MAC_OBJ_ID (0x00000013) /* WAN8 MAC */
21. \#define HW_DM_PD_LOID_OBJ_ID (0x00000016) /* GPON/EPON LOID */
22. \#define HW_DM_PD_LOID_PASSWORD_OBJ_ID (0x00000017) /* GPON/EPON LOID Password */
23. \#define HW_DM_PD_CHIP_INFO_OBJ_ID (0x00000018) /* 非关键芯片信息 */
24. \#define HW_DM_PD_E8C_SN_OBJ_ID (0x00000019) /* 中国电信SN */
25. \#define HW_DM_PD_BIN_WORD_OBJ_ID (0x0000001a) /* 程序定制特征字 */
26. \#define HW_DM_PD_CFG_WORD_OBJ_ID (0x0000001b) /* 配置定制特征字 */
27. \#define HW_DM_PD_OPTIC_MODE_CAP_OBJ_ID (0x0000001c) /* 光模块能力 */
28. \#define HW_DM_PD_OPTIC_CLASS_OBJ_ID (0x0000001d) /* 光模块CLASS */
29. \#define HW_DM_PD_OPTIC_MONITOR_CAP_OBJ_ID (0x0000001e) /* 光模块监控能力 */
30. \#define HW_DM_PD_OPTIC_WDM_CAP_OBJ_ID (0x0000001f) /* 光模块是否支持WDM */
31. \#define HW_DM_PD_PROVISION_CODE_OBJ_ID (0x00000020) /* PROVISION CODE */
32. \#define HW_DM_PD_PTC_FLAG_OBJ_ID (0x00000021) /* PTC FLAG */
输入Loid注册光猫卡在40%,ITMS注册不成功的话也可修改hw_boardinfo
<X_HW_UserInfo UserName="" UserId="" Status="99" Limit="10" Times="0" Result="99" X_HW_InformStatus="0" X_HW_AcsCnnctSatus="0" ForceSupport="1" SameWithPonInfo="1" X_HW_RegisterMode="0"/>
修改为:
<X_HW_UserInfo UserName="" UserId="" Status="0" Limit="10" Times="0" Result="1" X_HW_InformStatus="0" X_HW_AcsCnnctSatus="0" ForceSupport="1" SameWithPonInfo="1" X_HW_RegisterMode="0"/>
五、激活OpenWRT #
http://192.168.1.1:8080/访问的是华为的WEB,而http://192.168.1.1/访问的实际上是光猫内置的openwrt内的web,这个openwrt运行在一个lxc容器内,可以直接ssh连接到这个容器,甚至替换掉里面的除网络接口之外的功能,这样就等于有了一个oPenwrt系统了,操作稍复杂,方法详见:https://www.right.com.cn/forum/thread-352805-1-1.html
cat /etc/banner
cat /etc/openwrt_release
cat /proc/cpuinfo
参照cat出来的信息: 内置的openwrt是CHAOS CALMER 2.1即15.05.x版本。 软件源:http://archive.openwrt.org/chaos_calmer/15.05.1/omap/generic/ OPKG源:
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 sd5117 12
因为需要用omap架构的sshpass,网上到处找不到所以只能自己编译。编译过程很简单。
cd ~
#下载OPENWRT SDK
wget https://downloads.openwrt.org/chaos_calmer/15.05/mvebu/generic/OpenWrt-SDK-15.05-mvebu_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2
#解压
tar -xf OpenWrt-SDK-15.05-mvebu_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2
#目录命名
move OpenWrt-SDK-15.05-mvebu_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64 openwrtsdk
环境搭建好,接下来准备编译
#创建源码目录
mkdir -p ~/openwrtsdk/package/sshpass
#下载源码,如果wget失败可以手动下载sshpass的源码
wget http://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz
tar zxvf sshpass-1.06.tar.gz
mv sshpass-1.06 ~/openwrtsdk/package/sshpass/src
cd ~/openwrtsdk/package/sshpass
#创建Makefile
vi Makefile
include $(TOPDIR)/rules.mk
# Name and release number of this package
PKG_NAME:=sshpass
PKG_RELEASE:=1.06
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/sshpass
SECTION:=utils
CATEGORY:=Utilities
TITLE:=sshpass
endef
define Package/sshpass/description
Sshpass is a tool for non-interactivly performing password authentication with SSH's
endef
# Specify what needs to be done to prepare for building the package.
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
TARGET_LDFLAGS+= -L$(TOOLCHAIN_DIR)/usr/lib -L$(TOOLCHAIN_DIR)/lib -Wl,-rpath=$(TOOLCHAIN_DIR)/lib
# Specify where and how to install the program.
define Package/sshpass/install
$(INSTALL_DIR) $(1)/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/sshpass $(1)/bin/
endef
# This line executes the necessary commands to compile our program.
$(eval $(call BuildPackage,sshpass))
#开始编译
make V=99
#如果使用的是多核心的 CPU,可以选择加上 -j 参数,例如8核:
make -j 8 V=99
#因为仅编译IPK,速度飞快
#编译成功以后,ipk 包在 bin/omap/packages/base/ 目录中(注意 omap 是对应 CPU 的名子)
ls ~/openwrtsdk/bin/omap/packages/base/
如果有对应的 ipk 文件的话,就说明成功了。
sshpass编译成功以后赶紧加入crond
crontab -e
分 时 日 月 周 sshpass -p password ssh user@host command
结果发现没有执行!
ps | grep cron
发现crond服务没有启动
手动启动crond后sshpass正常运行 /etc/rc.d/init.d/crond start
于是重新telnet进去一路进入shell
vi /opt/upt/apps/apps/etc/rc.local
添加一行
/usr/sbin/crond -f -c /etc/crontabs -l 5
至此终于大功告成。
六、其他 #
1、修改hw_ctree.xml的另一种方法
Telnet进去修改hw_ctree.xml有时候操作不便,还可以通过导出配置,修改,再恢复的方法来修改。
- 在http://192.168.1.1:8080/用超管登陆
- 插一个U盘到光猫的USB口,备份光猫配置文件到U盘,得到一个“/usb_disc/e8_config_backup:ctce8_HS8145C5.cfg”文件。
- 用华为加解密工具里的“CFG解密”来给这个CFG文件解密。
- 文本编辑器打开解密后的“ctce8_HS8145C5.cfg”会发现这实际上就是hw_ctree.xml。
- 用文本编辑器修改然后cfg加密再web恢复配置即可。
以获取宽带账号密码为例
搜索宽带账号(也可在web页“网络”选项卡查看),账号后面是“Password=$-=加密的宽带密码=-$”,将“$”开头与结尾的全部内容复制到华为解密工具的“密文解密”用“$2解密”即可。
![]()
再比如定义自动重启
<X_HW_AutoReboot Enable="1" RunningDays="3" TrafficLimit="1000" TrafficKeepTime="10" RebootStartTime="120" RebootEndTime="330" DelayMode="none"/>
2、DHCP STATIC和SAMBA共存 在运营商界面无法给dhcp server设定静态地址绑定,在华为界面则无法启动USB设备的SMB共享。为了让两者都可以使用,可以先进华为界面设置DHCP,将IP与MAC绑定(指定的地址需要包含在DHCP SPOOL内,否则不会生效),然后切换到运营商界面开放USB的网络共享即可。或者保持运营商界面,手动修改hw_ctree.xml,需要修改两处,一是LANHostConfigManagement部分的DHCPStaticAddressNumberOfEntries数量,二是DHCPStaticAddress部分,需要定义NumberOfInstances数量和具体的IP/MAC绑定。
3、关闭appmgr和easymesh等进程
进入openwrt
/etc/init.d # vi appmgr
#将函数start_service的内容全部注释
#!/bin/sh /etc/rc.common
# Copyright (C) 2013-2014 OpenWrt.org
START=15
USE_PROCD=1
PROG=/sbin/appmgr
start_service(){
# procd_open_instance
# procd_set_param command "$PROG"
# procd_set_param respawn 3600 5 0
# procd_close_instance
}
easymesh、vpnclient、cloudclt、dnsproxy和dsmonitor同样按照这个方法关掉,其他的几个插件不知道是什么作用,就先不处理了
到目前为止运行良好,系统load不及原来的一半,CPU波动极小。至于网上一些文章所说的禁用这些服务以后导致ipv6地址无法获取的情况我到没有遇到,反倒是提示了几次IPV6 MTU太大,进入后台修改IPV6的MTU为1280,问题解决。至于还有没有其他后遗症暂且不知。
4、SAMBA共享 SMB是比较吃性能的,华为界面无法开启SMB,只允许使用FTP。在运营商界面启用SAMBA,通过局域网读取或写入较大文件后,猫的内存会很快用完,free的几乎没有,会全部转换为cache。
最好还是设置一个cron每天早上清理一下
sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches