首页 > 数据库 >如何查看Navicat已连接数据库的密码

如何查看Navicat已连接数据库的密码

时间:2024-03-12 11:46:18浏览次数:29  
标签:function return string 数据库 currentVector Navicat 密码 protected result

0、步骤概览

  1. 注册表找到加密后的密码字符串
  2. 在线代码工具运行代码解密获得原密码字符串

1、注册表找到加密后的密码字符串

  1. 快捷键win + r,输入regedit打开注册表

  2. 目录\HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\navicat\servers找到对应的数据库连接

  3. 找到key为pwd的值(加密后的密码字符串)

    1-3

2、在线代码工具运行代码解密获得原密码字符串

  1. 编程语言:php,在线编码地址:https://tool.lu/coderunner/

  2. 复制下面解密代码到【在线编码】中,修改倒数第二行代码,将上面的pwd的值写入decrypt(’’);中,点击运行即可获得解密后的密码。

  3. 解密代码

    <?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(12);
    $navicatPassword = new NavicatPassword(11);
    
    //解密
    $decode = $navicatPassword->decrypt('5658213B');
    echo $decode."\n";
    ?>
    
    2-3

3、参考

  1. 如何查看navicat已连接用户的密码

标签:function,return,string,数据库,currentVector,Navicat,密码,protected,result
From: https://www.cnblogs.com/lannntuuu/p/18067954

相关文章

  • Sql Server 查询数据库表结构
    记录一下,感觉之后有可能会用得上SELECTCASEWHENsc.column_id=1THENso.nameELSE''END表名,CASEWHENsc.column_id=1THENISNULL(pt.value,'')ELSE''END表说明,sc.column_id字段序号,sc.name字段名,ISNULL(pc.value,''......
  • 实例带你了解GaussDB数据库的LOCK TABLE
    本文分享自华为云社区《GaussDB数据库SQL系列-LOCKTABLE》,作者:酷哥。一、前言GaussDB是一款高性能、高可用的分布式数据库,广泛应用于各类行业和场景。在GaussDB中,锁是实现并发控制的关键机制之一,用于协调多个事务之间的数据访问,确保数据的一致性和完整性。本文将围绕GaussDB数......
  • Ubuntu重置登录密码
    1、一直按住shift键,并重启计算机,进入到GRUB引导界面,选择AdvancedoptionsforUbuntu 2、选择带recoverymode恢复模式的菜单 3、选择Droptorootshellprompt选项菜单 4、出现以#开头表示已进入root账户权限 5、输入passwd账户名,输入两次新密码后,当提......
  • 银河麒麟忘记密码,如何重置?
    本文为自己记的笔记,缺少图片1.正常开机进入多个操作系统列表界面按“e”进入编辑界面。2.grup编辑界面输入代码在linux一段后面加上:(这一段我有断行,我加在了中间)console=tty0init=/bin/bash按下Ctrl+X进入单用户模式3.重置密码进入之后在root后输入代码如果忘记或......
  • Ubuntu.software.rabbitsvc 电脑死活没有右键rabbitsvc菜单+密码没有记住没法保存
    本来这个想发到每日运维的,但是觉得这个比较典型,适合拿来单独说。 现象:其他人电脑装rabbitsvc一次就成功,有的不成功重启一下就好了,或是使用nautilus-a重启一下文件管理器就好了,但是这一台就是不行,版本同样是20.04,太奇怪了小知识:ubuntu20.04有两种文件管理器,一个是nautil......
  • 6.Python操作数据库
    1.操作mysql数据库importpymysql#连接数据库conn=pymysql.connect(host="127.0.0.1",port=3306,user="root",password="123456",database="a",autocommit=True)#创建游标进行数据库操作以及获取数据cursor=conn.cursor(cursor=pymysql.cursors.DictCu......
  • MySQL数据库表关系详解
    MySQL数据库表关系详解(1)一对一一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面一对一的关系就是一种特殊的多对多的关系,一张表A中的一条记录只能对应另一张表B中的一条记录,另一张表B中的一条记......
  • RC4算法:流密码算法的经典之作
    一、RC4算法的起源与演变RC4算法是由著名密码学家RonRivest在1987年设计的一种流密码算法,其名字来源于RivestCipher4。RC4算法简单高效,被广泛应用于数据加密和网络安全领域。尽管RC4算法在早期被广泛使用,但随着时间的推移,一些安全性问题逐渐暴露,导致其在一些场景下被取代......
  • 在数据库中使用UUID+自增长ID混合方式,同时满足系统安全性和查询效率
    在数据库中使用UUID+自增长ID混合方式,可以达到较好的安全性和查询效率。具体的实现方式如下:在数据库表中创建两个字段,一个是UUID字段作为全局唯一主键,另一个是自增长的整型字段作为局部有序键。例如:sql:CREATETABLE`table_name`(`uuid`CHAR(36)NOTNULL,--UUID......
  • 客户说|从4小时到15分钟,一次分布式数据库的丝滑体验
    文/识货运维总监瞿晟荣识货APP致力于为广大用户提供专业的网购决策指导,为喜欢追求性价比的网购朋友带来及时劲爆的运动、潮流、生活、时尚等网购优惠资讯,产品覆盖国内外主流购物商城。它提供了全球范围内的时尚品牌、潮流单品的信息,帮助用户发现和购买最新、最热、最具性价......