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

1:从注册表中查看加密后的密码。

  1.1:windows键+r,输入 regedit

 

  1.2:在注册表中找到 \HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\navicat\servers 并找到 UserName 即 账号

 

    1.3:从上面步骤中,打开注册表、并找到如下图片中的密码栏:Pwd(加密的密码)

 

 

 

2:解密密码,打开在线工具运行一下代码,并修改倒数第二行代码,将上面的密码写入decrypt(’’);中,点击运行。即可

  2.1:在线编码网址,https://tool.lu/coderunner/

       2.2:解密代码:

  1 <?php
  2 class NavicatPassword
  3 {
  4     protected $version = 0;
  5     protected $aesKey = 'libcckeylibcckey';
  6     protected $aesIv = 'libcciv libcciv ';
  7     protected $blowString = '3DC5CA39';
  8     protected $blowKey = null;
  9     protected $blowIv = null;
 10      
 11     public function __construct($version = 12)
 12     {
 13         $this->version = $version;
 14         $this->blowKey = sha1('3DC5CA39', true);
 15         $this->blowIv = hex2bin('d9c7c3c8870d64bd');
 16     }
 17      
 18     public function encrypt($string)
 19     {
 20         $result = FALSE;
 21         switch ($this->version) {
 22             case 11:
 23                 $result = $this->encryptEleven($string);
 24                 break;
 25             case 12:
 26                 $result = $this->encryptTwelve($string);
 27                 break;
 28             default:
 29                 break;
 30         }
 31          
 32         return $result;
 33     }
 34      
 35     protected function encryptEleven($string)
 36     {
 37         $round = intval(floor(strlen($string) / 8));
 38         $leftLength = strlen($string) % 8;
 39         $result = '';
 40         $currentVector = $this->blowIv;
 41          
 42         for ($i = 0; $i < $round; $i++) {
 43             $temp = $this->encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector));
 44             $currentVector = $this->xorBytes($currentVector, $temp);
 45             $result .= $temp;
 46         }
 47          
 48         if ($leftLength) {
 49             $currentVector = $this->encryptBlock($currentVector);
 50             $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
 51         }
 52          
 53         return strtoupper(bin2hex($result));
 54     }
 55      
 56     protected function encryptBlock($block)
 57     {
 58         return openssl_encrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
 59     }
 60      
 61     protected function decryptBlock($block)
 62     {
 63         return openssl_decrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
 64     }
 65      
 66     protected function xorBytes($str1, $str2)
 67     {
 68         $result = '';
 69         for ($i = 0; $i < strlen($str1); $i++) {
 70             $result .= chr(ord($str1[$i]) ^ ord($str2[$i]));
 71         }
 72          
 73         return $result;
 74     }
 75      
 76     protected function encryptTwelve($string)
 77     {
 78         $result = openssl_encrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
 79         return strtoupper(bin2hex($result));
 80     }
 81      
 82     public function decrypt($string)
 83     {
 84         $result = FALSE;
 85         switch ($this->version) {
 86             case 11:
 87                 $result = $this->decryptEleven($string);
 88                 break;
 89             case 12:
 90                 $result = $this->decryptTwelve($string);
 91                 break;
 92             default:
 93                 break;
 94         }
 95          
 96         return $result;
 97     }
 98      
 99     protected function decryptEleven($upperString)
100     {
101         $string = hex2bin(strtolower($upperString));
102          
103         $round = intval(floor(strlen($string) / 8));
104         $leftLength = strlen($string) % 8;
105         $result = '';
106         $currentVector = $this->blowIv;
107          
108         for ($i = 0; $i < $round; $i++) {
109             $encryptedBlock = substr($string, 8 * $i, 8);
110             $temp = $this->xorBytes($this->decryptBlock($encryptedBlock), $currentVector);
111             $currentVector = $this->xorBytes($currentVector, $encryptedBlock);
112             $result .= $temp;
113         }
114          
115         if ($leftLength) {
116             $currentVector = $this->encryptBlock($currentVector);
117             $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
118         }
119          
120         return $result;
121     }
122      
123     protected function decryptTwelve($upperString)
124     {
125         $string = hex2bin(strtolower($upperString));
126         return openssl_decrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
127     }
128 };
129  
130  
131 //需要指定版本两种,11或12
132 //$navicatPassword = new NavicatPassword(12);
133 $navicatPassword = new NavicatPassword(11);
134  
135 //解密
136 $decode = $navicatPassword->decrypt('5658213B');
137 echo $decode."\n";
138 ?>

 

posted @ 2022-08-18 11:03  低调小雄  阅读(7463)  评论(0编辑  收藏  举报