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

MySQL8,Navicat能登陆成功,密码却忘记了

执行成功的图:

以下为步骤:本文一共8个简单步骤。

环境:mysql8、window10、navicat11

1、打开本地电脑window10的命令窗(俗称黑窗口),window+R

2、输入regegit,回车,打开注册表

3、按照此路径【计算机\HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\Navicat\Servers\127.0.0.1本地mysql】找到对应数据库链接的密码

4、复制mysql密码到任意文本中,备用。

5、先打开链接此在线工具:https://tool.lu/coderunner/ ,后复制下面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);
    }
};
 
 
$navicatPassword = new NavicatPassword(11);
$decode = $navicatPassword->decrypt('复制出来的数据库链接密码');
echo $decode."\n";
?>

6、粘贴刚刚复制的php代码到左侧文本框中,下图左侧红框部分

7、将倒数第三行中的密码改为刚才复制到的mysql链接密码,倒数第四行中是navicat版本,输入你电脑上安装的navicat版本。

8、点击右上角【执行】按钮,右侧就会出现解析后的密码。

                    【完】美解决

相关文章:

  • 使用 Outlook 窃取 NetNTLMv2 哈希
  • 植物大战僵尸杂交版如何手动修改金币钻石数
  • Golang | Leetcode Golang题解之第169题多数元素
  • Windows 通过代理服务器调用 openai 的 api
  • [大师C语言(第三十六篇)]C语言信号处理:深入解析与实战
  • UE4_材质_湿度着色器及Desaturation算法_ben材质教程
  • 头歌——机器、深度学习——手写体识别
  • Go语言之基础入门
  • 汉语拼音字母表 (声母表和韵母表)
  • 【AI大模型】驱动的未来:穿戴设备如何革新血液、皮肤检测与营养健康管理
  • Go团队的工作方式
  • 第一章 通信系统基本概念
  • 网络安全和信息安全
  • Python编程技巧:如何正确使用with语句(Python中with用法详解)
  • PostgreSQL与MySQL的区别探究
  • Android框架之Volley
  • DataBase in Android
  • ES10 特性的完整指南
  • iOS小技巧之UIImagePickerController实现头像选择
  • JAVA 学习IO流
  • mysql 数据库四种事务隔离级别
  • Python 基础起步 (十) 什么叫函数?
  • React中的“虫洞”——Context
  • Redis的resp协议
  • Ruby 2.x 源代码分析:扩展 概述
  • swift基础之_对象 实例方法 对象方法。
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • vue:响应原理
  • 基于Android乐音识别(2)
  • 区块链将重新定义世界
  • 实习面试笔记
  • 小程序开发之路(一)
  • 协程
  • 以太坊客户端Geth命令参数详解
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (转)用.Net的File控件上传文件的解决方案
  • ******IT公司面试题汇总+优秀技术博客汇总
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Framework杂记
  • .net操作Excel出错解决
  • .net中生成excel后调整宽度
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @AutoConfigurationPackage的使用
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [Android] 修改设备访问权限
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [C++]C++基础知识概述
  • [C++初阶]string类的详解