首页 > 其他分享 >如何查看Navicat已有连接的密码(简单清晰)

如何查看Navicat已有连接的密码(简单清晰)

时间:2023-08-22 15:33:22浏览次数:49  
标签:function return string 查看 currentVector Navicat 密码 protected result

1.打开Navicat,File > Export Connections

2.选择你想查看的数据库,并勾选下方的 【导出密码】,导出

3.去文件里找到Password

 4.打开网址 https://tool.lu/coderunner 复制下面的代码放进去,然后把倒数第二行换成上面复制的密码

<?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,12 以上用 12,以下用 11
$navicatPassword = new NavicatPassword(12);
//$navicatPassword = new NavicatPassword(11);
 
//解密
$decode = $navicatPassword->decrypt('这边放刚刚的Password');
echo $decode."\n";

5.点执行即可出现密码

 

标签:function,return,string,查看,currentVector,Navicat,密码,protected,result
From: https://www.cnblogs.com/murmansk/p/17648639.html

相关文章

  • linux忘记root密码
    转https://www.rstk.cn/news/292606.html?action=onClick 1、虚拟机运行到这个页面,按下‘e’键 2、找到ro 3、将ro改成rw并在后面加一个rd.break 4、敲下以下代码,这里我们改的是root的密码,输入密码不会显示,且要输两遍密码,之后touch一个文件--> /.autorela......
  • 前端input自动填充账号密码问题处理
    1. autocomplete="off" input添加autocomplete属性2.<formautocomplete="off"> 在表单标签上添加autocomplete="off"属性。有些浏览器可能会尊重表单级别的autocomplete属性。3.最上面增加一个隐藏的表单,自动填充密码会填充在隐藏表单里面具体生效看浏览器自身,可以1,2,3方......
  • 查看cpu或内存占用最多的进程
    通过ps命令查找,并对指定参数进行排序,然后取前10命令如下:ps-aux|sort-k3nr|head-10或者ps-aux|sort-k4nr|head-10ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可......
  • Web_PHP_DedeCMS_忘记后台admin密码怎么办?
    1、进入mysql修改进入mysql对应数据库,找到dede_admin表,用c3949ba59abbe56e057f代替admin原有的密码并保存,这时admin的密码就重设为123456;2、无法进入数据库,或者无法进入空间管理地址,那么这种情况,应该如何解决这个问题呢?解决方法:复制链接http://pan.baidu.com/share/link?shar......
  • K8s 日志高效查看神器!
    K8s日志高效查看神器!Escape K8S中文社区 2023-08-2119:57 发表于湖南通常情况下,在部署了 K8S 服务之后,为了更好地监控服务的运行情况,都会接入对应的日志系统来进行检测和分析,比如常见的 Filebeat+ElasticSearch+Kibana 这一套组合来完成。虽然该组合可以满......
  • 软件安装_安装Mysql(启动服务、连接Mysql、修改临时密码)
         ......
  • 注销用户及修改密码
    1.使用场景:注销用户:点击下拉框注销登录,弹出确认框,确认后注销,并重定向到登录页面修改密码:点击下拉框修改密码,弹出新密码和确认密码,输入后确认,并重定向到登录页面重新登录<el-dropdown-item><span@click="changePasswd">修改密码</span></el-dropdown-item><el-dropdown-item>......
  • Q:查看服务器内存和cpu占用排名
    pid表示进程ID,cmd表示进程命令行,%mem表示进程占用内存百分比,%cpu表示进程占用CPU百分比,--sort=-%mem表示按照内存占用率从高到低排序。1、内存占比排序ps-eopid,cmd,%mem,%cpu--sort=-%mem2、cpu占比排序ps-eopid,cmd,%mem,%cpu--sort=-%cpu如果展示......
  • 20. 文本:文本框,密码框,文本域
    **文本:文本框,密码框,文本域**packageGUI;importjavax.swing.*;importjava.awt.*;//文本:文本框,密码框,文本域publicclassTest20{publicstaticvoidmain(String[]args){newJTextFieldDemo();newJPasswordFieldDemo();}}//文本框......
  • 搭建自己的私人密码库!Bitwarden 部署安装教程 (免费 1Password 替代品)
    常生活中我们几乎每个人都会拥有大量网站帐号,时间久远了密码很容易忘记。因此,像1Password等密码管理+同步+一键登录的工具成为了很多人的首选。然而1Password毕竟要付费,也有人会担心这类工具有隐私泄露的风险。其实,如果你有一台自己的VPS服务器,那么就能用开源的Bitwar......