MySQL密码忘记怎么办?Navicat中取密码?

工作中各种各样的密码多不胜数,有好的记录习惯的会将各登录账号以及密码保存到常用的文件里面,需要的时候从里面查看。但是,有时候总会忘记去记录,这时候怎么办?本人在安装完MySQL后密码设置的超级简单,觉得没必要去记录,长时间不用后面向再去使用的时候,欸欸欸,密码是啥?幸好再Navicat中保存过密码,那么怎么拿出来呢?

通过度娘娘我悟了浅析Navicat中怎么查看已连接保存的密码-navicat-PHP中文网怎么查看Navicat已连接保存的数据库密码?下面本篇文章给大家介绍一下查看navicat已保存密码的方法,希望对大家有所帮助!https://www.php.cn/tool/navicat/489434.html

Navicat可以导出连接,再连接的配置中包含密码

注意一定要勾选“导出密码”,导出的ncx文件打开后 是这样的

我这里导出了三个连接。在每个连接后找到“password”的配置,可以看到是一段密文,那么怎么解析呢,当然是通过工具了 9.9

解析密文

利用在线运行的工具 https://tool.lu/coderunner/解析(大佬写的PHP程序)

1. 将解析程序复制过去;

2. 将password的一段密文将倒数第二行的密文的位置

3. 直接运行即可        

<?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('833E4ABBC56C89041A9070F043641E3B');

echo $decode."\n";

嘿嘿,齐活儿!!! 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼_Posin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值