资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Python

【navicat 密码查看】小技巧navicat 如何查看密码

Python 更新时间: 发布时间: 计算机考试归档 最新发布

【navicat 密码查看】小技巧navicat 如何查看密码

时间久了,当我们以前连上了navicat 之后,密码忘记了,但是依然能连接,此时我们想查看密码,应该如何操作呢?

步骤1:点击navicat 文件选项,导出连接,勾选需要导出的数据库,导出的时候一定要勾选导出密码

导出之后,我们会得到一个connections.ncx文件中找到password,然后复制出来


复制出来password内容

然后我们要对这个password 密码进行解密。打开小工具 网站:

小工具解密网站

将如下PHP代码复制进去:

    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(11);//这里我指定的12的版本,原先指定的11,执行之后的密码是乱码$navicatPassword = new NavicatPassword(12); //解密//$decode = $navicatPassword->decrypt('15057D7BA390');$decode = $navicatPassword->decrypt('AE137B98AB3AD0F913EBEF2E8D3C52E9');echo $decode."n";?>

点击执行,右边运行得到密码。

方法2:可以使用python 代码。

navicat 加密方式

# -*- coding: utf-8 -*-from Crypto.Cipher import AESfrom binascii import b2a_hex, a2b_hex# 如果text不足16位的倍数就用空格补足为16位def add_to_16(text):    if len(text.encode('utf-8')) % 16:        add = 16 - (len(text.encode('utf-8')) % 16)    else:        add = 0    text = text + ('0' * add)    return text.encode('utf-8')# 加密函数def encrypt(text):    key = 'libcckeylibcckey'.encode('utf-8')    mode = AES.MODE_CBC    iv = b'libcciv libcciv '    text = add_to_16(text)    cryptos = AES.new(key, mode, iv)    cipher_text = cryptos.encrypt(text)    print(b2a_hex(cipher_text))    # 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串    return b2a_hex(cipher_text)# 解密后,去掉补足的空格用strip() 去掉def decrypt(text):    key = 'libcckeylibcckey'.encode('utf-8')    iv = b'libcciv libcciv '    mode = AES.MODE_CBC    cryptos = AES.new(key, mode, iv)    plain_text = cryptos.decrypt(a2b_hex(text))    return bytes.decode(plain_text).rstrip('0').replace('','')if __name__ == '__main__':    # e=encrypt('root')    d = decrypt('AE137B98AB3AD0F913EBEF2E8D3C52E9')  # 解密    # print("加密:",e)    print("解密:", d)
解密: hzjy&flzx3qcProcess finished with exit code 0
转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1096178.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【【navicat 密码查看】小技巧navicat 如何查看密码】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2