用Python+SQLite搭建路由器默认密码查询库与调试流程

发布时间:2026/10/24 17:07:58
用Python+SQLite搭建路由器默认密码查询库与调试流程 简介面向网络运维初学者与家庭、小型办公网络调试人员的默认登录信息速查文档围绕各类路由器与ADSL设备的出厂IP、默认用户名、密码及恢复方式展开解决设备初次配置或忘记管理凭证时难以入门的实际问题也可作为网络故障排查时的参考清单。资源包仅含1个doc文件约60KB体量轻便适合本地保存或打印备查文档以条目化方式汇总多个品牌型号的登录参数并提及Web界面、Telnet及厂商配置程序等常见调试入口。目前已有274人学习。内容覆盖艾玛、实达、神州数码、华为、TP-LINK、全向、中兴等设备的默认地址与账号组合还整理了复位恢复、密码找回及首次登录后修改默认密码、更新固件等安全提示。读者可据此快速定位设备管理入口减少反复试错并建立基本的设备安全维护意识。1. 从一份 .doc 密码表说起能查到不等于能连上手里这份「各类路由器默认密码.doc」我第一次打开时当成速查表用后来才发现卡住人的地方是查到却连不上。路由器默认密码这套东西横跨艾玛、实达、全向、合勤、华为、大亚、科迈易通等几十个型号默认 IP 在 192.168.1.1、10.0.0.2、192.168.0.1、192.168.7.1 之间来回跳本机网卡不改网段浏览器只回一个超时。更常见的是密码填对了却栽在大小写、备用账号、Telnet 端口没开这些细节上。这篇文章写给两类人手上有一台来源清楚、自己有处置权的旧 ADSL 猫或路由器要调通的人以及想把这份文档整理成可查、可复现的本地环境的人。下面按「建库、配网段、接设备、复位救急、验证」的顺序走一遍每一步都能抄。2. 建库用 Python 3.11 SQLite 把文档变成可查表文档最大的问题是线性阅读。你要找「10.0.0.2 网段的设备有哪些」只能从头扫到尾扫到一半还容易被两段重复的内容绕晕原文里全向 QL1680 的密码在不同段落出现过 qxcomm1680、qxcommsupport 两个值一个是登录密码一个是管理员密码混着读必然出错。我一般先把这份 .doc 转成结构化的库后面配网段、验证登录都从库里取数不再翻原文。2.1 把 .doc 拆成九个字段先想清楚要存什么。原文每条信息其实都能拆成固定的几项品牌、型号、默认 IP、主账号、主密码、备用账号、备用密码、接入通道、备注。备用账号是真实存在的实达 2110EH 那台同时给了 user/password 和 root/grouter 两组GVC DSL-802E/R3A、WST ART18CX、UTStar ut-300R 都是这个套路UTStar 的账号甚至是「root or admin」这种二选一写法。备注字段用来放复位方式和高阶入口比如大亚 DB102 的高级设置路径、华为 SmartAX MT800 的两种恢复方式。字段类型取值示例说明brandTEXT全向、实达、合勤品牌或系列名modelTEXTQL1680、2110EH型号尽量精确到后缀ipTEXT10.0.0.2出厂默认管理地址usernameTEXTadmin主账号可为空passwordTEXTqxcomm1680主密码alt_userTEXTroot备用账号alt_passTEXTgrouter备用密码channelTEXTweb / telnet / serial / utility接入通道noteTEXT断电按住 Reset 上电复位与特殊入口提示channel 这一列别省。合勤 642 那台原文明确写了走 telnet 192.168.1.1 再输 1234如果库里只记账号密码不记通道排错时会白白多试十分钟。2.2 建表和导入的代码环境用 Python 3.11 就够了sqlite3 是标准库不用额外装包。先在项目目录里建两个文件router_defaults.db由脚本生成defaults.csv是你从文档里整理出来的表用 UTF-8 存。import csv import pathlib import sqlite3 # 库文件和 CSV 都放在当前目录避免路径写死 BASE pathlib.Path(__file__).resolve().parent DB_PATH BASE / router_defaults.db CSV_PATH BASE / defaults.csv SCHEMA CREATE TABLE IF NOT EXISTS device ( id INTEGER PRIMARY KEY AUTOINCREMENT, brand TEXT NOT NULL, model TEXT NOT NULL, ip TEXT NOT NULL, username TEXT, password TEXT, alt_user TEXT, alt_pass TEXT, channel TEXT NOT NULL DEFAULT web, note TEXT ); CREATE INDEX IF NOT EXISTS idx_ip ON device(ip); CREATE INDEX IF NOT EXISTS idx_brand ON device(brand); def init_db() - sqlite3.Connection: conn sqlite3.connect(DB_PATH) conn.executescript(SCHEMA) return conn def load_csv(conn: sqlite3.Connection) - int: # newline 交给 csv 模块自己处理换行避免多出空行 with CSV_PATH.open(encodingutf-8, newline) as f: rows list(csv.DictReader(f)) sql INSERT INTO device (brand, model, ip, username, password, alt_user, alt_pass, channel, note) VALUES (:brand, :model, :ip, :username, :password, :alt_user, :alt_pass, :channel, :note) # 空字符串统一转成 None查询时 IS NULL 才判得准 cleaned [{k: (v if v not in (, None) else None) for k, v in r.items()} for r in rows] conn.executemany(sql, cleaned) conn.commit() return len(cleaned) if __name__ __main__: conn init_db() n load_csv(conn) print(fimported {n} rows - {DB_PATH}) conn.close()代码分三段init_db建表和两个索引索引落在 ip 和 brand 上因为日常查询基本就是按网段找和按品牌找load_csv用DictReader按列名取值不依赖列顺序后期你在 CSV 里调整列序不会把数据插错位空字符串转 None 这一步是为了让「东信 Ea700 用户名为空、密码 password」这种记录能被WHERE username IS NULL准确命中否则空串和 NULL 在 SQL 里行为不一致很容易翻车。跑起来就一行python3 import_defaults.py导入完做一次抽查确认网段分布对得上原文# 统计各网段有多少台设备快速核对有没有漏导 sqlite3 router_defaults.db SELECT substr(ip,1,length(ip)-2) AS seg, COUNT(*) \ FROM device GROUP BY seg ORDER BY COUNT(*) DESC;参数说明substr(ip,1,length(ip)-2)是把最后一个点后面的主机位切掉192.168.1.1 会变成 192.168.110.0.0.2 会变成 10.0.0这样分组才有意义。如果这一步统计出来只有 192.168.1 一个网段说明 CSV 整理时把 10.0.0.2 和 192.168.7.1 那几台漏了。2.3 目录结构和常用查询我习惯把环境摆成下面这样换机器时整目录拷走就能用不依赖全局安装adsl-defaults/ ├── defaults.csv # 人工整理的原始表UTF-8 ├── import_defaults.py # 建表与导入脚本 ├── query.sh # 几个高频查询的封装 └── router_defaults.db # 脚本生成不进版本库query.sh里我封了三个最常敲的查询#!/usr/bin/env bash # 用法: ./query.sh ip 10.0.0.2 | ./query.sh brand 全向 | ./query.sh telnet DB$(dirname $0)/router_defaults.db case $1 in ip) sqlite3 -header -column $DB \ SELECT brand,model,username,password,alt_user,alt_pass \ FROM device WHERE ip$2; ;; brand) sqlite3 -header -column $DB \ SELECT model,ip,username,password FROM device WHERE brand$2; ;; telnet) sqlite3 -header -column $DB \ SELECT brand,model,ip,password FROM device WHERE channeltelnet; ;; *) echo usage: $0 {ip|brand|telnet} [value] ;; esac-header打表头-column做对齐看结果时不用自己数第几列。telnet这个子命令我单独留出来是因为老设备里走字符界面的不多但每次都容易忘合勤 642、伊泰克 ADSL_T07L006.0 这类设备在浏览器里打不开界面时直接查一下是不是该走 Telnet 通道。3. 配网段把本机网卡塞进设备的网段里设备默认 IP 就那几个但你的笔记本只有一个 Wi-Fi 地址通常是 192.168.1.x 或者运营商分配的网段。绝大部分产品调试前都要先把本机网卡设成跟设备同一网段这一步原文讲得很直白但很多人跳过结果就是 ping 不通就开始怀疑设备坏了。3.1 先看设备落在哪个网段把表里的 IP 归一下类实际就四组192.168.1.x 占绝大多数10.0.0.x 是一批192.168.0.x 是另一批还有一台台湾突破 EA110 落在 192.168.7.1。前三个网段用同一个子网掩码 255.255.255.0 就够EA110 那台也一样。加地址前先确认本机现有地址和新地址不冲突Windows 下用ipconfigLinux 下用ip addr看一眼当前网段有没有已经占掉你要用的主机位。需要提醒的是网段冲突这个坑。家里主路由常常就是 192.168.1.1你把网卡配成 192.168.1.10 去接 ADSL 猫流量会优先走主路由浏览器打开的还是主路由的管理页。这种时候要么临时断开上游网络要么用第二个地址加一条更具体的路由别指望系统自己选对。3.2 Windows 11 用 netsh 加第二个地址Windows 图形界面加第二个 IP 藏在高级设置里点七八下才到用 netsh 一条命令就行。先用管理员权限打开 PowerShell 或 CMD。# 查看当前接口名和索引拿到你要改的那块网卡名 netsh interface show interface # 给有线网卡追加 192.168.1.10/24保留原有地址不动 netsh interface ipv4 add address name以太网 address192.168.1.10 mask255.255.255.0 # 换成 10.0.0.x 网段时把上一条的 name 换成同一块网卡即可 netsh interface ipv4 add address name以太网 address10.0.0.10 mask255.255.255.0参数说明add address是追加不是覆盖原有地址会保留所以不用怕把 Wi-Fi 弄断name必须和show interface里显示的完全一致中文系统常见「以太网」「以太网 2」带空格要引号包住mask用 255.255.255.0设备侧没有跨网段需求。调完设备记得删掉# 调试结束后清理临时地址避免下次接别的网络撞段 netsh interface ipv4 delete address name以太网 address192.168.1.10delete只删你加的那条不影响原有配置这是我用 netsh 而不用图形界面的主要原因——图形界面加完第二个地址过两周你根本想不起来自己加过什么。3.3 Ubuntu 22.04 用 nmcli 追加地址Linux 这边我习惯用 nmcli因为它写进连接配置重启后还在不污染路由表。# 先看连接名一般是 Wired connection 1 或者自定义名 nmcli connection show # 给有线连接追加一个 192.168.1.10/24网关留空 sudo nmcli connection modify Wired connection 1 \ ipv4.addresses 192.168.1.10/24 # 同一块网卡再加 10.0.0.10/24命令可以连着跑 sudo nmcli connection modify Wired connection 1 \ ipv4.addresses 10.0.0.10/24 # 地址生效 sudo nmcli connection up Wired connection 1ipv4.addresses前面的加号是关键没有加号会把原有地址替换掉我在这上面栽过不止一次改完发现原来的 DHCP 地址没了还得重新激活。网关不填是故意的这些 ADSL 设备大多不提供上游路由填了网关反而会把默认路由抢过去导致你连不上外网。如果你不想动图形化配置临时验证一台设备用ip addr add更快缺点是重启即失效sudo ip addr add 192.168.1.10/24 dev enp3s0 # 排查完删掉 sudo ip addr del 192.168.1.10/24 dev enp3s03.4 三条接入通道和它们的端口网段配好之后是选通道。表里 channel 字段对应的就是这三条路端口和参数记牢能少走弯路通道端口/参数典型设备首次验证命令WebTCP 80TP-LINK TD-8800、华为 MT800curl 探响应头TelnetTCP 23合勤 642、伊泰克某些型号/dev/tcp 探端口串口RS232 38400 8N1台湾突破 EA110minicom / PuTTY厂商程序随附光盘工具CyberLink 6307/6309KGDSLCom.exe原文里明确提到厂商自带配置程序那条路现在低端产品已经很少用了CyberLink 6307/6309KG 用的是光盘里的 DSLCom.exe出厂 IP 192.168.1.1、密码 stm。这类工具多半是十几年前的 32 位程序在 64 位系统上要先确认能不能跑起来跑不动就退回 Web 或 Telnet别在兼容性上耗太久。4. 接设备三种登录方式与两条复位路径网段通了只是第一步真正登录时的差异全在细节里。同一个密码浏览器里能进、Telnet 里进不去或者反过来都是常事。4.1 Web 方式先用 curl 确认服务活着全向 QL1680 那台浏览器地址栏敲 10.0.0.2弹框输 admin 和 qxcommsupport 就能进管理员界面这是最常见的做法。但我建议先不急着开浏览器用 curl 打一发把「网络不通」「服务没起」「登录失败」这三种情况区分开。# 只取响应头3 秒连接超时5 秒总超时避免浏览器长时间转圈 curl -sS -I --connect-timeout 3 --max-time 5 http://10.0.0.2/ # 需要看认证方式是 Basic 还是表单加上 -v 观察 401 和 WWW-Authenticate curl -sS -v --connect-timeout 3 --max-time 5 http://10.0.0.2/ 21 | head -20-sS是静默模式但保留错误输出出问题时不会一片空白-I只发 HEAD 请求速度快--connect-timeout和--max-time分开设前者管 TCP 握手后者管整体耗时老设备响应慢把--max-time设太小会误判成不可达。如果返回 401 加WWW-Authenticate: Basic说明设备用的是 HTTP 基本认证账号密码直接在弹框里填如果返回 200 但页面是表单那就是设备自己做了登录页得在页面里提交。带认证的请求也可以用 curl 直接验证密码对不对省得反复开浏览器# -u 后面跟 用户名:密码只看状态码不下载页面内容 curl -sS -o /dev/null -w %{http_code}\n \ --connect-timeout 3 -u admin:qxcommsupport http://10.0.0.2/-o /dev/null丢掉响应体-w %{http_code}\n只打状态码。返回 200 说明这组凭据有效返回 401 就是密码不对。这招在批量核对表里哪几组账号还有效时特别好用一次跑十几台不费劲。4.2 Telnet 方式合勤 642 的字符界面合勤 642 这台原文写得很清楚运行里敲telnet 192.168.1.1然后输密码 1234进的是全英文的字符界面。这类老设备没有 Web 管理页或者 Web 页只是个壳子真正的配置项都在 Telnet 菜单里。先在 Linux 或 macOS 上确认 23 端口开着不依赖 telnet 客户端# 用 bash 内建的 /dev/tcp 探端口3 秒超时不用装 nc timeout 3 bash -c cat /dev/null /dev/tcp/192.168.1.1/23 \ echo 23 open || echo 23 closedtimeout 3是为了在端口被防火墙丢弃时不要让命令一直挂着/dev/tcp/主机/端口是 bash 的伪设备写法能建立 TCP 连接就算通。确认开着再上 telnet 客户端# Ubuntu 22.04 装 telnet 客户端服务端不用装 sudo apt-get install -y telnet # 连接后按提示输密码合勤 642 直接要密码不要账号 telnet 192.168.1.1Windows 11 默认没开 telnet 客户端在「启用或关闭 Windows 功能」里勾上 Telnet Client 就行或者直接用 PowerShell 的Test-NetConnection 192.168.1.1 -Port 23先探端口。Telnet 有个绕不开的问题连接成功但全是乱码。这种情况多半是字符编码或者终端类型不对老设备只认 ASCII别在客户端里设 UTF-8另外有些型号输完密码要按一次回车才出菜单别以为卡死了就断开重连。我一般把 PuTTY 0.80 留着当备用客户端它的 Telnet 模式对这类老设备兼容性比较好能单独设本地回显和字符集。4.3 串口和厂商程序EA110 的 38400台湾突破 EA110 那台走的是 RS232参数 38400IP 192.168.7.1账号 SL 密码 SL。串口这条路现在用得少但遇到完全不通网的设备只能靠它。需要一个 USB 转串口线芯片常见 CH340 或 FT232Ubuntu 22.04 自带驱动插上后看/dev/ttyUSB0有没有出现。# 确认串口设备识别到了 ls -l /dev/ttyUSB* # 把当前用户加进 dialout 组否则没权限打开串口 sudo usermod -aG dialout $USER # 这一步要重新登录才生效 # minicom 2.8 接串口波特率 384008 位数据位 minicom -D /dev/ttyUSB0 -b 38400 -8-D指定设备文件-b是波特率-8是 8 位数据位。8N1 里的 N 和 1 在 minicom 里默认就是无校验、1 位停止位一般不用改。如果连上后按键没反应先确认收发线是不是交叉接的TX 对 RX、RX 对 TX接反了能连上但一个字都收不到。Windows 上更简单PuTTY 0.80 选 Serial填 COM 口和 38400 就能连。厂商配置程序那条路只在确实拿得到原厂工具时才走像 DSLCom.exe 这种先在一台干净的环境里跑别直接往生产机上装。4.4 复位断电按住 Reset 再上电密码被改过、IP 被改过最有效的办法还是恢复出厂。原文给了两种手法一种是通用做法设备断电一直按住复位键然后通电持续一小段时间后松开出厂默认值就回来了。另一种是华为 SmartAX MT800 专有的两种连续按 MODEM 背后的 RESET 键三次或者在配置菜单的 SAVEREBOOT 里选恢复默认配置。复位这件事有几个细节值得说清楚。第一按住复位键的时长各家不同常见做法是通电后保持 10 到 30 秒看到指示灯一起闪或者全灭再闪就松开按早了等于没按。第二复位要在设备通电的瞬间就开始按先按再上电和先上电再按效果不一样前者成功率高得多。第三复位会把宽带账号密码一起清掉如果这台设备还在承载线路复位前先把 PPPoE 账号记下来不然恢复完上不了网还得再找运营商。复位完成后 IP 会回到出厂值这时候前面配的网段可能就不对了。比如你把网卡配成 192.168.1.10 去调一台原来在 192.168.0.1 的设备复位后它回到 192.168.1.1反而通了反过来也有可能。所以复位后第一件事是回表里查这台型号的默认 IP重新确认本机地址。5. 避坑记录五条踩过的坑5.1 能 ping 通但网页打不开现象ping 192.168.1.1有回应浏览器打开一直转圈最后超时。原因设备只开了 Telnet 没开 Web或者 Web 服务端口不是 80。老款 ADSL 猫里这种情况不少尤其是一些只提供字符界面的型号。解决先用端口探测确认 80 和 23 哪个开着再决定走哪条通道。合勤 642 就是典型23 通、80 不通直接 telnet 进去输 1234。查表时看 channel 字段我建库时专门留了这一列就是为了这个场景。5.2 账号密码明明对却提示错误现象表里查到的 admin/admin 输进去页面提示用户名或密码错误。原因三个可能。一是设备区分大小写华为 MT800 的用户名和密码都是大写 ADMIN表里如果按小写记就进不去二是你填的是主密码设备要的是管理员密码全向 QL1680 登录密码是 qxcomm1680管理员密码是 qxcommsupport两个不一样三是设备已经被改过密码出厂值失效。解决先把 alt_user / alt_pass 两组都试一遍再核对大小写。全向那台优先试 qxcommsupport 进管理员界面。两组都不行就说明设备被改过直接走复位流程。5.3 复位之后 IP 变了网段对不上现象复位前能连复位后彻底失联ping 不通也打不开。原因复位把 IP 恢复成出厂值而你的网卡还停在复位前那个网段。原文里 10.0.0.2、192.168.1.1、192.168.0.1、192.168.7.1 四个网段都存在复位后跳到哪个网段取决于型号。解决复位后立刻回库里按型号查 ip 字段把网卡地址改成同网段再试。我现在的习惯是复位前先查好这台型号的默认 IP复位后直接照着配不猜。5.4 Telnet 连上了但是乱码或者没反应现象telnet 192.168.1.1提示连接成功屏幕上一堆乱码或者按回车毫无反应。原因终端字符集设成了 UTF-8老设备只发 ASCII或者客户端开了本地回显但设备没回显看着像没反应。解决把客户端字符集改成 ASCII 或 Latin-1关掉本地回显。Windows 的 telnet 客户端用telnet命令进set localecho关掉回显再连。实在不行换 PuTTY 的 Telnet 模式它对老设备的兼容性更好本地回显、字符集、换行符都能单独调。5.5 改完密码把自己关在门外现象按提示把默认密码改了改完下次登录进不去新密码怎么输都不对。原因改密码时输入法还在中文状态或者密码里带了特殊字符被设备截断。老设备的密码字段长度有限超过就截。解决改密码时切英文输入法长度控制在 8 到 16 位只用字母和数字。改完立刻退出重登一次验证别等下次配网才发现。这一步是后悔药做完再走。原文那句话说得对拿到设备后应及时修改默认密码但改之前先确认自己能登回来。6. 装完怎么验证15 分钟跑通一套自检环境搭好、库导进去、网段会配了剩下最要紧的是确认这套东西真的能跑通而不是看起来能跑。我一般按下面这个顺序走一遍15 分钟内能出结论。第一步验库。跑一条覆盖多个网段的查询确认数据完整# 每个网段取一台做样本能查出来说明导入没漏大块 sqlite3 -header -column router_defaults.db \ SELECT brand,model,ip,username,password FROM device \ WHERE ip IN (192.168.1.1,10.0.0.2,192.168.0.1,192.168.7.1) \ GROUP BY ip;GROUP BY ip保证每个网段只出一条四个网段都有结果就说明表里至少覆盖了这四类。如果 10.0.0.2 查不到回去看 CSV 里全向 QL1680、QL1688、GVC DSL-802E/R3A 这几条是不是漏了。第二步验网段。挑一台手边的设备把网卡配成同网段用 ping 和端口探测两条命令确认链路# 先 ping 确认三层通再探 80 和 23两个都试 ping -c 3 192.168.1.1 timeout 3 bash -c cat /dev/null /dev/tcp/192.168.1.1/80 echo 80 open timeout 3 bash -c cat /dev/null /dev/tcp/192.168.1.1/23 echo 23 open第三步验登录。用 curl 带凭据打一发看返回码检查项命令通过标准链路可达ping -c 3 设备IP有回包丢包 0Web 服务curl -I 设备IP有 200 或 401 响应头凭据有效curl -u 账号:密码 -w %{http_code}返回 200复位可用断电按住 Reset 上电指示灯齐闪后回到默认 IP第四步验复位。这一步建议只在确认设备可复位的情况下做因为复位会清掉所有配置。做法是断电、按住复位键、上电、保持 20 秒左右松开然后看设备能不能用表里记录的默认地址和默认密码登进去。能登进去说明你手上这套表和流程是闭环的——查得到、连得上、救得回。第五步也是最容易被跳过的一步把默认密码改掉。验证时用默认值进去改完密码再退出重登一次确认新密码生效。前面四步证明的是「这套环境能用」这一步证明的是「用完不会留下隐患」。原文最后那句提醒不是客套话默认密码公开写在文档里谁都能查到设备挂在网上一分钟就有被扫到的风险。从那以后我每次调这类老设备都强制走一遍「查库、配网段、探端口、改密码」这四步哪怕只是临时接一下看看配置也不省最后一步。血泪经验就是省掉改密码那次设备在网上一挂就是三个月。希望这套流程能帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询