Navicat加密的终极进化:how-does-navicat-encrypt-password解读AES-256-GCM+Windows凭据管理器双重锁

📅 2026/8/24 11:05:53
Navicat加密的终极进化:how-does-navicat-encrypt-password解读AES-256-GCM+Windows凭据管理器双重锁
Navicat加密的终极进化how-does-navicat-encrypt-password解读AES-256-GCMWindows凭据管理器双重锁【免费下载链接】how-does-navicat-encrypt-passwordTransferred from https://github.com/DoubleLabyrinth/how-does-navicat-encrypt-password项目地址: https://gitcode.com/gh_mirrors/ho/how-does-navicat-encrypt-passwordNavicat 会把你保存的数据库密码加密后存进Windows 注册表而开源项目how-does-navicat-encrypt-password逆向破解了它全部三代 Navicat 密码加密算法Blowfish → AES-128-CBC → AES-256-GCM并提供 Python 工具一键还原明文密码。本文带你快速看懂 Navicat 密码加密的完整演进史掌握 AES-256-GCM 与 Windows 凭据管理器双重锁的破解思路。 先看结果密码到底存在哪在 Navicat 中勾选保存密码后加密的密码会写入注册表HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\连接名MySQL、SQL Server、PostgreSQL 等各数据库路径略有不同其中Pwd值就是一串十六进制密文想知道自己机器上存了哪些连接项目自带show-navicat.py在 Windows 上直接运行即可列出注册表中所有 Navicat 连接的 host、用户名和解密后的明文密码。 三代加密算法完整解读项目用 v1 / v2 / v3 给三套算法编号恰好对应 Navicat 不同版本的演进。v1 经典版Blowfish SHA-1 固定密钥老版本 Navicat 的加密流程分三步详见 doc/how-does-navicat-encrypt-password.md生成密钥对固定字符串3DC5CA39做 SHA-1得到 20 字节 Blowfish 密钥——所有人共用同一把钥匙生成 IV用 8 个0xFF填充块加密得到固定初始向量管道式加密每个 8 字节明文块先与向量异或、再经 Blowfish 加密密文同时回传更新向量类似 CBC但异或顺序做了手脚。v2 过渡版AES-128-CBC 硬编码密钥Navicat 12 导出.ncx连接文件时改用AES128/CBC/PKCS7Padding但密钥和 IV 全部硬编码在程序里参数值密钥libcckeylibcckey初始向量libcciv libcciv只要拿到.ncx文件用ncx-dump.py打开就能看到里面每个连接的明文密码。v3 终极版AES-256-GCM Windows 凭据管理器双重锁 ⚡最新版 Navicat 的加密强度实现了质变核心是双重锁设计第一把锁随机密钥不再硬编码。程序启动时从Windows 凭据管理器读取名为navicat_cred的通用凭据32 字节再对其第 25~28 字节做一次查表变换派生出真正的AES-256密钥。密钥只存在于系统凭据库中不同用户、不同机器的密钥天然不同。第二把锁GCM 认证加密。每次加密随机生成 12 字节 nonce采用AES-256-GCM模式密文末尾附带 16 字节认证标签Tag明文前还会加上 2 字节小端长度前缀加随机填充。任何一位密文被篡改都会导致认证失败彻底告别 CBC 模式可被位翻转攻击的弱点。解密流程因此变成Windows 凭据管理器 → navicat_cred → 派生 AES-256 密钥 → GCM 认证解密 → 长度前缀去填充 → 明文。 快速上手三条命令还原密码所有工具都基于 Python 3先安装依赖$ pip install cryptography pywin32克隆仓库$ git clone https://gitcode.com/gh_mirrors/ho/how-does-navicat-encrypt-password然后打开python3/navicat-cipher.py对应的脚本按需选择版本参数# 解密注册表/NCX 中的老版本密文 $ ./navicat-cipher.py dec -v1 0EA71F51DD37BFB60CCBA219BE3A $ ./navicat-cipher.py dec -v2 B75D320B6211468D63EB3B67C9E85933 # 解密最新版 v3 密文自动从 Windows 凭据管理器读取 navicat_cred $ ./navicat-cipher.py dec -v3 67A1E0646999D375...1035 dummy123456不想手动找凭据v3 模式默认自动调用win32cred.CredRead读取navicat_cred也可以用--cred参数手动传入导出文件场景直接用ncx-dump.py 你的文件.ncx批量查看全部连接信息。⚠️ 请仅在自己有权访问的机器和配置上使用本工具未经授权解密他人数据属于违法行为。 多语言实现与项目结构除了 Python项目还以多语言复刻了完整加密逻辑方便你按需阅读Python 工具python3/navicat-cipher.py、python3/ncx-dump.py、python3/show-navicat.pyC/C 参考实现cpp/NavicatCrypto.hpp含 Blowfish、AES、SHA-1 完整源码Java 实现java/NavicatCrypto/Navicat11Cipher.java与Navicat12Cipher.javaC# / VB.NET 实现csharp/NavicatCrypto.cs、vb.net/NavicatEncrypt.vb✅ 小结Navicat 密码加密进化论版本算法密钥来源抗篡改v1Blowfish 管道加密SHA-1 固定密钥❌v2AES-128-CBC硬编码❌v3AES-256-GCMWindows 凭据管理器随机密钥✅ GCM 认证标签从人人共用一把钥匙到凭据管理器 GCM 认证双重锁Navicat 的加密演进正是现代应用密码学落地的一个绝佳案例。理解这套流程你既能看懂自家 Navicat 的Pwd密文也能给自己的工具加上同样的密钥管理思路。【免费下载链接】how-does-navicat-encrypt-passwordTransferred from https://github.com/DoubleLabyrinth/how-does-navicat-encrypt-password项目地址: https://gitcode.com/gh_mirrors/ho/how-does-navicat-encrypt-password创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考