共计 3747 个字符,预计需要花费 10 分钟才能阅读完成。
这篇文章主要为大家展示了“Navicat 中如何查看已连接保存的密码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“Navicat 中如何查看已连接保存的密码”这篇文章吧。
怎么查看 Navicat 已连接保存的数据库密码?下面本篇文章给大家介绍一下查看 navicat 已保存密码的方法,希望对大家有所帮助!
在使用 Navicat 是都是习惯性的保存了密码,久而久之后 就会忘记数据库密码,这就很不舒服了,
但是,这有个技巧,可以查看 navicat 已连接保存的密码
首先去 导出连接
导出连接获取到 connections.ncx 文件
这里记着 导出密码!!!不然导出的文件里不包含加密的密码
然后找到 文件里 password 字段的值
把他复制出来
开始破译密码
多亏一位 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
以上是“Navicat 中如何查看已连接保存的密码”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!