HN8145XR 光猫折腾记录

本人有幸用上了河南移动网络接入,我们井盖省的网络封闭程度一直是内地省份中数一数二。

相关软件会放在 fuck-wuawei-modem

还原可用的 Shell 环境

来源:分享HN8145XR开telnet及补全shell个人心得

Telnet用户:root

Telnet密码:adminHWHw8@cMcc

  1. 启动 ONT_telnet_enable.exe
  2. 网线连接光猫和电脑/笔记本
  3. 打开使能工具,选择对应有线网卡,展开设备列表
  4. 断开光猫电源
  5. 选择“V5使能”,点击启动
  6. 恢复光猫电源,等待出现“Failed”字样,不用管;待到光猫 LED 灯全部熄灭,点击停止。不要退出使能工具

此处可以检查 Telnet 是否已经可以连接。

  1. 选择“升级”,版本包选择 shell9.bin
  2. 点击开始,再次重启光猫电源
  3. 等待光猫 LED 再次全部熄灭(除下行光),出现 “Failed” 后点击停止,退出使能工具。

基于 Telnet 获取超管密码

参考:通过telnet取得华为HN8145XR超级密码

telnet 192.168.1.1

# -> root
# -> (telnet密码)

su
shell

cd /mnt/jffs2/

cp hw_ctree.xml myconf.xml.gz
aescrypt2 1 myconf.xml.gz tmp # 此处 tmp 被忽略了

zcat myconf.xml.gz \
  | grep 'UserName="CMCCAdmin"' \
  | cut -d " " -f 5 \
  | cut -d = -f 2

可以得到如下结果:

Password="$2...............$"

使用 WW_Dollar2.exe,点击计算,可以解密 $2 密文。

得到的密码可能需要拼接上 CMCCAdmin / CMCCAdmin#,如果是中国移动版。

作者这里得到了一串 sha256sum(-_-|||),还好最终是电话要到了密码。

考虑到河南移动的做法是 CMCCAdmin + 八位随机字符,以目前时代的个人算力基本不可能爆破。

从 Hash 后的宽带密码/超级密码计算原密码

来源:PurePeace 的 获取移动光猫(如HS8545M5等设备)PPPoE密码明文,略有修改

Rust 写了一份,可以用来试试看更长的密码

另外,移动似乎倾向于设置为手机号后六位。

更建议的方式:通过手机营业厅重置密码,获取新的 PPPoE 拨号密码。

移动可以发送 CZKDMM 到 10086。

from sys import argv
import hashlib


def sha256(todo: str):
    return hashlib.sha256(str(todo).encode()).hexdigest()


def md5(todo: str):
    return hashlib.md5(str(todo).encode()).hexdigest()


def find_target(secret: str):
    # 生成六位密码
    for value in range(1000000):
        value = f"{value:06}"
        s = sha256(md5(value))
        if s == secret:
            return value
    return None


if __name__ == "__main__":
    try:
        secret = argv.pop(1)
    except IndexError:
        print("Usage:")
        print(f"    {argv[0]} <sha256hashsecret>")
        exit(1)

    target = find_target(secret)
    print(target if target is not None else "")

恢复华为公版界面

参考:折腾HN8145XR(恢复华为界面 等)

需要先备份好:

  • 宽带帐号
  • 宽带密码
  • ONT 认证密码

如果只修改界面,不直接执行 restore_xxx.sh,可能可以保留下来 ONT 认证密码。

作者的 ONT 注册方式是 Password。

  1. 启动 WW_Dollar2.exe
  2. 在你的电脑启动 ncat

如果没有 ncat,可以:

scoop install nmap
ncat -l -p 9999 > hw_boardinfo
  1. 在光猫中,使用 busybox nc 把 hw_boardinfo 传过来

此处 192.168.1.4 为电脑的局域网 IP

busybox nc 192.168.1.4 9999 < /mnt/jffs2/hw_boardinfo
  1. 备份一份 hw_boardinfo
  2. 打开 hw_boardinfo,修改:
obj.id = "0x0000001a"; obj.value = "COMMON";
obj.id = "0x0000001b"; obj.value = "COMMON";
obj.id = "0x00000031"; obj.value = "NOCHOOSE";
  1. 把修改后的 hw_boardinfo 传回,并覆盖:
/mnt/jffs2/hw_boardinfo
/mnt/jffs2/hw_boardinfo.bak