如何Navicat查看已保存的数据库密码

在使用专业数据库软件Navicat 是都是习惯性的保存了默认密码,但是久而久之后 就会忘记数据库密码,然后自己也没备份,软件上面不可以直接查看填写密码, 这就很不舒服了,

但是,有个小技巧,可以查看navicat 已连接保存的密码。

第一步:首先去 导出连接
导出连接获取到 connections.ncx 文件

如何Navicat查看已保存的数据库密码

这里记着 导出密码!!! 不然导出的文件里不包含加密的密码

如何Navicat查看已保存的数据库密码

用notepad++打开,然后找到 文件里 password 字段的值

把他复制出来

如何Navicat查看已保存的数据库密码

第二步:开始破译密码

多亏一位Github上的大佬写了个程序;可以直接破解这个加密密码

程序是php语言的;如果本地没装php也没关系(也可以弄个服务器测试) , 直接找个在线运行的工具 https://tool.lu/coderunner/

把代码粘上去就行了

然后把刚复制的 加密密码 替换倒数第二行 里的值 , 然后运行就行了

$decode = $navicatPassword->decrypt('999239DEBFA1960BCCB12566F1F417A6');

附带代码行

<?php

namespace FatSmallTools;

class NavicatPassword
{
protected $version = 0;
protected $aesKey = 'libcckeylibcckey';
protected $aesIv = 'libcciv libcciv ';
protected $blowString = '3DC5CA39';
protected $blowKey = null;
protected $blowIv = null;

public function __construct($version = 12)
{
$this->version = $version;
$this->blowKey = sha1('3DC5CA39', true);
$this->blowIv = hex2bin('d9c7c3c8870d64bd');
}

public function encrypt($string)
{
$result = FALSE;
switch ($this->version) {
case 11:
$result = $this->encryptEleven($string);
break;
case 12:
$result = $this->encryptTwelve($string);
break;
default:
break;
}

return $result;
}

protected function encryptEleven($string)
{
$round = intval(floor(strlen($string) / 8));
$leftLength = strlen($string) % 8;
$result = '';
$currentVector = $this->blowIv;

for ($i = 0; $i < $round; $i++) {
$temp = $this->encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector));
$currentVector = $this->xorBytes($currentVector, $temp);
$result .= $temp;
}

if ($leftLength) {
$currentVector = $this->encryptBlock($currentVector);
$result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
}

return strtoupper(bin2hex($result));
}

protected function encryptBlock($block)
{
return openssl_encrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING); 
}

protected function decryptBlock($block)
{
return openssl_decrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING); 
}

protected function xorBytes($str1, $str2)
{
$result = '';
for ($i = 0; $i < strlen($str1); $i++) {
$result .= chr(ord($str1[$i]) ^ ord($str2[$i]));
}

return $result;
}

protected function encryptTwelve($string)
{
$result = openssl_encrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
return strtoupper(bin2hex($result));
}

public function decrypt($string)
{
$result = FALSE;
switch ($this->version) {
case 11:
$result = $this->decryptEleven($string);
break;
case 12:
$result = $this->decryptTwelve($string);
break;
default:
break;
}

return $result;
}

protected function decryptEleven($upperString)
{
$string = hex2bin(strtolower($upperString));

$round = intval(floor(strlen($string) / 8));
$leftLength = strlen($string) % 8;
$result = '';
$currentVector = $this->blowIv;

for ($i = 0; $i < $round; $i++) {
$encryptedBlock = substr($string, 8 * $i, 8);
$temp = $this->xorBytes($this->decryptBlock($encryptedBlock), $currentVector);
$currentVector = $this->xorBytes($currentVector, $encryptedBlock);
$result .= $temp;
}

if ($leftLength) {
$currentVector = $this->encryptBlock($currentVector);
$result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
}

return $result;
}

protected function decryptTwelve($upperString)
{
$string = hex2bin(strtolower($upperString));
return openssl_decrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
}
}


use FatSmallTools\NavicatPassword;

//需要指定版本,11或12
$navicatPassword = new NavicatPassword(12);
//$navicatPassword = new NavicatPassword(11);

//解密
//$decode = $navicatPassword->decrypt('15057D7BA390');
$decode = $navicatPassword->decrypt('999239DEBFA1960BCCB12566F1F417A6');
echo $decode."\n";

最后注意下:乱码

​ 可能解码的时候遇到乱码,这时只需要修改一下指定的版本就行了

可能11版本是乱码。

如何Navicat查看已保存的数据库密码

给他修改成12版本就正常了,具体测试看那个正常。

如何Navicat查看已保存的数据库密码

以上是关于“如何Navicat查看已保存的数据库密码”的介绍,如需购买测试PHP主机,推荐酷番云共享虚拟主机、独享IP虚拟主机齐备,各类配置均有,满足不同网站建设需求;价格实惠;最低9元/月,提供免费备案。另外提供免费虚拟主机,可供测试,让您快速上线网站。

选购地址:https://www.kufanyun.com/host/

图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/1018.html

(0)
上一篇 2021年9月13日 17:03
下一篇 2021年9月15日 15:40

相关推荐

  • 个易于开发的移动应用开发框架,什么移动应用开发框架易于开发

    2026年移动端开发首选跨平台框架是Flutter与React Native,其中Flutter凭借原生级渲染性能在复杂交互场景中胜出,而React Native依托庞大生态在快速迭代项目中更具性价比,核心框架深度解析在2026年的移动开发市场,单一技术栈已无法满足多元化需求,开发者需根据项目特性选择最适配的工……

    2026年5月20日
    01913
  • 如何实现ASP.NET可视化开发?推荐高效工具与教程解析

    ASP.NET可视化:构建高效、直观现代Web应用的核心之道ASP.NET可视化开发彻底改变了Web应用的构建方式,将抽象的后端逻辑与复杂的用户界面设计转化为直观、高效的拖放式操作流程,这不仅是生产力的飞跃,更是企业级应用开发在用户体验、开发效率和可维护性上实现质的突破的关键技术路径,ASP.NET可视化技术深……

    2026年2月7日
    02220
  • asp.net eval如何定义变量|asp.net eval使用技巧

    在ASP.NET的数据绑定表达式(如Eval)中,直接定义变量会报错,因为Eval是运行时计算的表达式,不支持声明变量,以下是几种有效的解决方法:方法1:使用<%# %>代码块定义局部变量(推荐)在数据绑定项内部使用代码块定义局部变量,然后复用变量:<asp:Repeater ID=&quot……

    2026年2月7日
    02190
    • 服务器间歇性无响应是什么原因?如何排查解决?

      根源分析、排查逻辑与解决方案服务器间歇性无响应是IT运维中常见的复杂问题,指服务器在特定场景下(如高并发时段、特定操作触发时)出现短暂无响应、延迟或服务中断,而非持续性的宕机,这类问题对业务连续性、用户体验和系统稳定性构成直接威胁,需结合多维度因素深入排查与解决,常见原因分析:从硬件到软件的多维溯源服务器间歇性……

      2026年1月10日
      020
  • CDN直播一体机为何成为直播领域必备神器?它能带来哪些实际优势?

    在数字化时代,直播已成为人们获取信息、娱乐和社交的重要方式,而CDN直播一体机作为一种集成了CDN(内容分发网络)和直播功能的设备,它在直播行业中扮演着至关重要的角色,以下是CDN直播一体机的用途及其优势的详细介绍,CDN直播一体机的主要用途提高直播画质和流畅度CDN直播一体机通过将直播内容分发到全球多个节点……

    2025年11月2日
    02160

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注