如何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年4月28日
    0583
  • 个必备有用的开源日志分析工具,有哪些好用的开源日志分析工具

    针对2026年海量数据实时分析需求,推荐ELK Stack(Elasticsearch+Logstash+Kibana)、Loki、Fluent Bit、Grafana Loki与ClickHouse组合方案,其中Loki因低存储成本与云原生兼容性成为中小企业首选,ELK则是大型企业高并发场景的标准配置,为什么……

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

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

      2026年1月10日
      020
  • 供应链融资双十一促销活动,供应链融资双十一活动

    2026年供应链融资双十一促销活动的核心结论是:通过“数据增信+动态利率折扣”模式,将传统依赖抵押物的融资转变为基于真实交易流水的信用融资,平均融资成本可降低15%-25%,审批时效从周级缩短至分钟级,2026年双十一供应链融资促销的核心逻辑与机制从“抵押驱动”到“数据驱动”的范式转移在2026年的数字经济背景……

    2026年5月20日
    0405
  • asp.net Table导出为Excel的方法详解,有哪些常见技巧和注意事项?

    在ASP.NET中生成Excel表格是一个常见的需求,可以帮助开发者将数据以表格形式导出,方便用户查看和打印,以下是在ASP.NET中生成Excel表格的方法,包括使用C#和HTML等技术的详细步骤,引入必要的命名空间确保在C#代码中引入了必要的命名空间,以便使用Excel相关的类和方法,using Syste……

    2025年12月21日
    02410

发表回复

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