如何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

相关推荐

  • CDN一Z丫509J足浴器按摩电机,这款足浴器电机性能如何?值得购买吗?

    在快节奏的现代生活中,人们对健康和舒适的需求日益增长,一款性能优良、设计精巧的足浴器,无疑能为人们的日常休闲时光增添一份温馨与惬意,我们将为大家详细介绍一款备受好评的足浴器——CDN一Z丫509J,重点关注其核心部件——按摩电机,CDN一Z丫509J足浴器概述CDN一Z丫509J足浴器是一款集传统足浴功能和现代……

    2025年11月19日
    04380
  • H42W-16C DN80究竟是什么类型的阀门,有什么作用?

    在工业管道系统中,阀门是不可或缺的控制元件,其种类繁多,型号各异,每一种型号都承载着特定的技术参数和功能信息,“H42W-16C DN80”是一个在工程图纸和技术文件中常见的阀门型号,要准确理解其含义,我们需要将其拆解,逐一分析每个字母和数字所代表的特定意义,通过这种方式,我们不仅能知道它是什么阀门,更能深入了……

    2025年10月28日
    03550
    • 服务器间歇性无响应是什么原因?如何排查解决?

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

      2026年1月10日
      020
  • 机房CDN服务器运行原理及机制详解,究竟奥秘何在?

    机房中的CDN服务器是如何工作的:CDN简介CDN(Content Delivery Network,内容分发网络)是一种通过在网络中部署多个边缘节点,将内容分发到用户最近的服务器,从而提高内容访问速度和降低网络延迟的技术,在机房中,CDN服务器作为CDN的核心组成部分,承担着至关重要的角色,CDN服务器工作原……

    2025年11月15日
    03700
  • 有了CDN,带宽需求是否减少?CDN与带宽的互补关系探讨

    有了CDN还需要带宽吗?随着互联网的快速发展,越来越多的企业和个人开始关注网络资源的优化,CDN(内容分发网络)作为一种常见的网络优化技术,被广泛应用于各个领域,有了CDN,我们是否还需要关注带宽问题呢?本文将从以下几个方面进行分析,CDN的作用缓解带宽压力CDN可以将用户请求的内容分发到全球各地的节点,用户访……

    2025年11月26日
    03930

发表回复

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