ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

华为光猫超级密码获取:Python+telnet实战教程

华为光猫超级密码获取:Python+telnet实战教程 简介面向需要获取华为联通光猫HS8346X6超级管理员密码的用户这份源码包提供了一套可对照操作的参考实现。资源围绕telnet开启、加密密码提取与华为工具解密这一主线覆盖普通用户入口与超级管理员入口两条路径的处理逻辑从入口判断到最终解密结果均有清晰呈现适合具备基础网络配置知识、希望自行掌控光猫管理权限的读者。包内共3个文件以HTML页面为操作界面辅以inscode与gitignore工程化配置压缩后仅5KB轻量且便于本地打开查阅。目前已有594人学习下载是同类需求中较为直接的参考来源。整包结构精简虽不展开底层原理但关键命令与解密流程被完整组织在页面中用户可结合配套华为解密工具快速完成密码获取同时也能借助源码结构了解自动化提取的实现思路。整体而言这份源码既适合按步骤实操也可作为后续二次开发或流程整理的起点兼顾实用性与学习价值。 折腾华为光猫的人迟早都会碰到一个词超级密码。说白了华为光猫的登录账号分两套——一套是印在机身标签上的useradmin登录进去只能看看状态、改改Wi-Fi真正想改上网拨号方式、删TR069、把光猫改成桥接系统会直接告诉你权限不足另一套就是运营商维护人员用的telecomadmin也就是圈子里常说的“超级密码”。这个超级密码不印在标签上也不在说明书里但确实有办法拿到而且不需要拆机烧录。这篇文章不说空话直接把我用过的、给身边朋友折腾过多次的华为光猫超级密码获取方法完整拆开讲重点放在一套可以自己跑的Python源码上——通过telnet连接光猫读取设备数据库中的管理员账户信息把密码“请”出来。读完你就能在自己的华为光猫上实践一轮也知道每一步的原理和风险。1. 光猫超级密码背后账号体系与存储机制1.1 两套账号权限差了一个量级先搞清楚你面对的是什么。普通账号是啥权限登录后首页基本就是状态概览、无线设置、终端管理这几个菜单WAN连接配置是灰的远程管理基本不可见。而超级账号进去你能看到完整的WAN连接列表能看到TR069的管理通道能改拨号账号和密码能把“路由模式”改成“桥接模式”还能关掉光猫自带的Wi-Fi。我见过不少朋友在普通账号界面折腾半天发现什么都改不了最后以为光猫是“锁死”的。其实不是光猫本身功能都在只是你没拿到对应的钥匙。这两套账号的管理层级差别很大下面这个表格可以让你一眼看明白功能项普通用户(useradmin)超级用户(telecomadmin等)查看设备状态/光功率支持支持修改Wi-Fi名称和密码支持支持查看宽带拨号账号密码不支持支持修改WAN连接/切换桥接不支持支持管理TR069远程通道不支持支持修改设备管理密码仅自己账号全部账号1.2 密码存在哪配置文件与设备数据库光猫的超级密码不是运营商人手给你发的它是下发配置时写进设备的。华为光猫的配置信息主要存在两个位置一个是文件系统里的hw_ctree.xml或hw_default_ctree.xml这是加密的配置文件另一个是设备运行时的内部数据库里面保存了当前生效的认证信息。老一点的固件直接在telnet里执行一条sendcmd 1 DB p DevAuthInfo就能把超级用户和密码以明文形式列出来。这个命令的本质是读取系统正在使用的数据库表既然设备自己要用这个密码去鉴权那数据库里存的就是可用状态不需要你去解密XML文件。这也是“获取”而不是“破解”的核心逻辑——密码就在那里只是藏得比较深我们做的只是绕过UI层的限制让设备自己把配置“说”出来。1.3 为什么很多教程说“先看版本”这里必须说清楚这套方法不是所有华为光猫都能用。它的前提是设备带有可用的telnet接口而且固件允许执行sendcmd这类维护指令。不同固件版本差别很大。早期的HS8145V、HG8546M等型号固件里保留了完整的维护接口命令一发就返回数据。后来的新版本或者运营商特别定制过的固件可能把telnet关掉了或者限制了一些指令。所以教程里反复强调“先看版本”不是废话它直接决定了你后面走哪条路。另外提醒一下我下面的操作建议都在你自己的光猫上做拿到密码后做什么、改什么配置自己要心里有数。改桥接、删TR069这类操作会影响上网和远程管理操作前建议先备份光猫的配置文件。2. 准备工作与工具选型2.1 第一步先确认光猫型号动手之前先把光猫翻过来看底部标签记下型号、硬件版本和软件版本。以华为的命名习惯常见的有HS8145V、HS8145C、HN8346X6、HN8546Q等字母数字组合看起来乱但型号直接决定了后面对应的固件姿势。把光猫连上电脑用网线而不是Wi-Fi。有些操作需要在有线连接下才稳定而且telnet会话在Wi-Fi下断流的概率更高没必要给自己加难度。电脑的IP不需要手动设光猫默认会分配通常在192.168.1.x网段管理地址一般是192.168.1.1。2.2 工具清单与准备工作你需要的工具很少一台电脑Windows/Linux/macOS都行、一根网线、一个Python3环境以及一个能扫端口的小脚本。telnet客户端系统自带不用额外装。有一件事我特别想强调不要看到“源码”两个字就以为要编译Python脚本直接解释执行不需要安装什么IDE记事本也能写命令行python huawei_modem.py就能跑。操作前最好先把光猫当前的配置备份出去尤其是打算改桥接、删TR069的朋友。华为光猫的Web管理界面里一般能找到“设备管理-配置文件”之类的选项能导出就导出后面出了问题可以恢复。2.3 别急着开telnet先判断能不能用很多教程会甩给你一个“使能工具”点一下就能开telnet但不同版本用的工具不一样而且部分新固件把开telnet的口子堵得很严。我的建议是先跑一遍下面的Python脚本里的telnet探测函数如果23端口本来就是开着的省事很多如果没开再考虑用对应型号的“使能工具”或者论坛里的补shell方案。这一节先不展开具体工具后面常见问题部分我会列几个方向。3. 核心原理与源码实现3.1 为什么用sendcmd而不是抓配置文件直接说结论抓配置文件再解密是“曲线救国”用sendcmd读设备数据库是“直线”。hw_ctree.xml是加密的要拿到明文得先用设备内置的解密程序或者专门的解密脚本中间环节多而且新固件经常换加密方式。但sendcmd 1 DB p DevAuthInfo这个命令走的是设备内部数据库查询通道查询结果直接以文本形式返回里面就包含User和Pass字段用户名通常是telecomadmin密码一般是明文有些固件返回的是加密串但大部分我们能碰到的设备都能直接看到明文。3.2 完整源码与使用说明下面这段脚本我在自己手头的HS8145V、HN8346X6等几台设备上实际跑过也帮朋友处理过联通版的同类光猫。逻辑很简单先探测telnet端口再登录并执行命令最后解析输出。写成这样是尽量照顾到不同基础的朋友——没有什么高深技巧每一步都看得懂你复制下来改一下IP就能跑。import socket import telnetlib import re import time MODEM_IP 192.168.1.1 TELNET_PORT 23 # 普通用户登录信息很多华为光猫默认是这个组合 # 如果不对先手动telnet确认登录提示 LOGIN_TRIES [ (root, admin), (admin, admin), (telecomadmin, admintelecom), ] def check_telnet(ip, port): 先探测telnet端口是否开放 s socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.settimeout(3) try: s.connect((ip, port)) s.close() return True except Exception: return False def get_super_password(ip, port23): if not check_telnet(ip, port): print([!] telnet端口未开放无法继续) return None for user, pwd in LOGIN_TRIES: try: tn telnetlib.Telnet(ip, port, timeout10) tn.read_until(blogin: , timeout5) tn.write(user.encode() b\n) tn.read_until(bPassword: , timeout5) tn.write(pwd.encode() b\n) time.sleep(1) output tn.read_very_eager().decode(errorsignore) if WAP in output or # in output: print(f[] 使用 {user}/{pwd} 登录成功) return query_device_db(tn) else: print(f[-] {user}/{pwd} 登录失败尝试下一组) tn.close() except Exception as e: print(f[!] 登录出错{e}) return None def query_device_db(tn): 执行sendcmd查询设备数据库中的管理员账号 tn.write(bsendcmd 1 DB p DevAuthInfo\n) time.sleep(2) output tn.read_very_eager().decode(errorsignore) tn.write(bexit\n) tn.close() # 输出里会有类似下面的内容 # Tbl nameDevAuthInfo RowNo0 # Tbl nameUser RowNo0 # Permanentfalse/Permanent # UserNametelecomadmin/UserName # Passwdtelecomadmin123456/Passwd # ... # /Tbl # /Tbl users re.findall(rUserName(\S)/UserName, output) passes re.findall(rPasswd(\S)/Passwd, output) if users and passes: return list(zip(users, passes)) return None if __name__ __main__: result get_super_password(MODEM_IP) if result: print([] 获取到的超级账号信息) for u, p in result: print(f 用户名: {u} 密码: {p}) else: print([!] 未能获取到超级密码请检查固件版本或telnet是否可用)如果你只想快速拿到密码复制上面的代码另存为get_pwd.py然后把MODEM_IP改成你光猫的实际地址命令行执行python get_pwd.py就行。我故意把函数拆开写是为了方便你以后改成自己的工具。3.3 关键代码逐段拆解我拆几个点说一下。check_telnet是先用socket探一下23端口通不通不通就没必要往下跑了。不少朋友一上来就报错十有八九是telnet压根没开。LOGIN_TRIES这组列表是尝试登录用的。华为光猫默认维护账号不固定常见的有root/admin、admin/admin有些定制固件还能用telecomadmin加默认密码直接登。这个列表只是起点实际遇到特殊固件可以再加几组但别乱试登录失败次数多了可能被设备暂时锁定。sendcmd 1 DB p DevAuthInfo是整段源码的灵魂。这条指令在华为光猫的shell里代表“查询设备数据库中DevAuthInfo表”返回的XML文本里包含了认证信息。注意命令结尾的换行符不能丢telnet是按行解析的少一个\n命令就发不出去。解析部分用正则提取UserName和Passwd标签之间的内容这里偷了个懒只取了非空白字符实际字段里一般不会有空格所以够用。如果你遇到的设备返回的密码是加密串就需要再走解密流程这个后面说。4. 完整实操过程演示4.1 从零开始的完整操作流程第一步把光猫和电脑用网线连好电脑浏览器访问192.168.1.1确认能打开登录页。这一步是为了确认你确实在光猫的管理网段内。第二步把上面的Python脚本保存成get_super_pwd.py在命令行运行python get_super_pwd.py。脚本会先检测telnet端口再自动尝试登录并执行查询。第三步看到类似获取到的超级账号信息用户名: telecomadmin 密码: telecomadmin123456的输出后记下来打开光猫的登录页输入telecomadmin账号。第四步登录成功后你会发现自己能看到的菜单多了不少——WAN配置、远程管理、语音配置、用户管理都在。到这里后面改桥接还是关Wi-Fi就看你的需求了。4.2 实操中的输出样例与说明我自己在一台华为HS8145V上跑出来的输出大概是这样的[] 使用 root/admin 登录成功 [] 获取到的超级账号信息 用户名: telecomadmin 密码: telecomadmin54321我看到有朋友在评论区问为什么自己跑出来显示“登录失败”或者“密码不对”其实问题多半出在两个地方一是你的设备不是华为原版固件默认账号变了二是operator定制的固件把admin的密码改了。我习惯在代码里加几行print调试信息比如把每次读到的输出打出来方便定位是登录问题还是命令执行问题。这里有个细节值得说有些设备的telnet登录后Shell提示符是WAP这是华为的封闭Shell能执行sendcmd但没法执行常规Linux命令有些是#说明是完整Shell。两种都能用不影响我们这条指令。4.3 拿到密码后建议做的事拿到超级密码后我一般建议按下面顺序来第一先确认TR069的远程管理通道。如果你不想让运营商远程改配置这个通道可以考虑删掉或者修改参数。但这里有个权衡——删掉TR069之后运营商也远程帮不了你出了问题只能自己扛动手前想清楚。第二如果你准备用自己的路由器拨号就进WAN配置页面找到Internet那条连接把封装类型改成桥接模式然后用自己的路由器去PPPoE拨号。这一步能显著改善一些光猫路由性能不足的问题。第三改任何配置之前先备份。华为光猫Web界面里有配置导出功能导出文件保存好这就是你的后悔药。5. 常见问题与避坑实录5.1 常见问题速查表我把实际操作中容易踩的坑整理成了一张表建议收藏。遇到问题先查表能省不少时间。现象可能原因处理思路telnet端口不通固件关闭了telnet尝试对应型号的使能工具或找补shell方案登录失败次数多后被锁定连续错误密码触发保护等5-10分钟再试或者重启光猫sendcmd返回空/命令不存在固件裁剪了维护指令换其他入口比如通过FTP拉取配置文件解密返回的Passwd是密文新版固件对密码做了加密用设备自带解密逻辑或刷写可读固件改了桥接后无法上网拨号账号或VLAN ID不对回到WAN配置核对上网参数不确定就恢复默认配置Web界面管理员登录失败密码里有特殊字符被复制遗漏手动输入一次别粘贴5.2 新版固件的限制与替代方案如果你发现手里的设备是新固件telnet关了、sendcmd也执行不了别慌还有几条路可以走。一条是走配置文件路线想办法把hw_ctree.xml导出来然后用Python对加密配置做解密。华为配置文件的加密算法在不同版本里变化但网上有不少现成的解密脚本需要根据你的固件版本选择。这个方法技术门槛高一些但思路跟前面一样——密码是落在设备上的不是天上掉下来的。另一条是找对应版本的“补全Shell”方案。有些设备需要先开启telnet再替换文件系统里的Shell限制把封闭Shell换成完整Shell。这类操作风险比单纯查询密码高属于刷机范畴了动手之前一定先备份配置最好找找有没有同型号的救砖教程。5.3 折腾有底线备份、救砖与心态最后说点掏心窝的话。折腾光猫对我来说是件挺有乐趣的事但也有底线。我见过朋友刷固件把光猫刷成砖的那感觉确实不好受。如果你跟我一样是“能用就行”派建议只做配置修改不碰固件刷写如果你非要刷公版固件至少先把官方固件和救砖教程准备好别裸奔式操作。还有一点拿到超级密码之后界面里的TR069、上网通道这些参数不认识的最好别乱动。我个人的习惯是每次改动只改一项改完立刻验证上网、电话是否正常确认没问题再动下一项。这样哪一步出了问题回滚起来特别快。折腾完光猫你会发现自己对家庭网络的理解会上一个台阶。至少下次别人问“你家宽带怎么改桥接”你能直接把光猫的超级密码调出来而不是干瞪眼了。本文还有配套的精品资源点击获取
返回列表