当前位置: 首页 > backend >正文

如何看navicat数据库连接的密码

一、版本问题
场景:在配置数据库连接后,忘记了数据库的密码,想要找回来。

其实有些版本(好像是低版本才有,具体哪个版本就没去研究了)在配置连接页面,是有个选项勾选是否显示密码的,有的话就简单了。

这里主要是介绍不能直接显示密码的版本,忘记密码后,如何进行查看密码(前提是你之前配置的是正确的!)。

二、不支持直接查看密码的版本,查看密码的步骤
第一步:导出链接,导出连接获取到 connections.ncx 文件
在这里插入图片描述

这里需要勾选 导出密码!!! 不然导出的文件里不包含加密的密码

在这里插入图片描述

第二步:找到加密密码,进行破解
在导出的connections.ncx文件中找到password,然后复制出来
在这里插入图片描述
找个在线执行php的网站(如果你本地有的话,也行),就找了一个:https://www.w3cschool.cn/tryrun/runcode?lang=php,
打开这个网址https://www.w3cschool.cn/tryrun/runcode?lang=php,把下面的代码复制进去,并且把倒数第三行换成你需要解密的密码

<?php
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);}
};//需要指定版本两种,11或12
//$navicatPassword = new NavicatPassword(11);
//这里我指定的12的版本,原先指定的11,执行之后的密码是乱码
$navicatPassword = new NavicatPassword(12);//解密
//$decode = $navicatPassword->decrypt('15057D7BA390');
$decode = $navicatPassword->decrypt('复制出来的密码');
echo $decode."\n";
?>

在这里插入图片描述
如图得到了解析出来的密码,文章来自https://blog.csdn.net/weixin_41287260/article/details/141476859,我害怕原来博主删文章什么的,重新复制一份。

http://www.xdnf.cn/news/8207.html

相关文章:

  • C++效率掌握之STL库:unordered_map unordered_set底层剖析
  • JavaScript【8】异步请求与本地存储
  • 巢票赛演协议逆向分析
  • 建设工程窝工、停工损失案件庭审发问提纲
  • [Dify] 在Dify中优雅处理本地部署LLM的Token超限问题
  • TransMorph:用于无监督医学图像配准的变压器
  • 网络编程中的 Protobuf 和 JsonCpp 全面解析
  • 视频监控管理平台EasyCVR结合AI分析技术构建高空抛物智能监控系统,筑牢社区安全防护网
  • Dify-4:API 后端架构
  • C#学习11——集合
  • 电机试验平台:实现高效精密测试的关键工具
  • 蓝桥杯 10. 安全序列
  • 今日行情明日机会——20250522
  • Linux 部署 RocketMQ
  • 基于江协标准库所出现的定时器5678以及串口45等无法使用的问题解析
  • 写实交互数字人在AI招聘中的应用方案
  • UE5 Va Res发送请求、处理请求、json使用
  • React 如何封装一个可复用的 Ant Design 组件
  • 学习日记-day13-5.22
  • Dockers Compose常用指令介绍
  • matlab实现无线通信组
  • PG Craft靶机复现 宏macro攻击
  • 第33节:迁移学习与模型微调策略
  • 微服务的应用案例
  • HashMap的基础用法(java)
  • [Harmony]WebView基本用法
  • WebGL基本概念
  • C++:RAII的不能顾名思义?
  • docker多阶段构建镜像
  • gd32e230c8t6 驱动ws2812