ホームページ  >  記事  >  データベース  >  Navicat で接続および保存されたパスワードを表示する方法の簡単な分析

Navicat で接続および保存されたパスワードを表示する方法の簡単な分析

青灯夜游
青灯夜游転載
2022-03-02 10:59:5613869ブラウズ

Navicat接続して保存したデータベースのパスワードを確認するには? Navicat に保存されているパスワードを確認する方法については、次の記事でご紹介しますので、お役に立てれば幸いです。

Navicat で接続および保存されたパスワードを表示する方法の簡単な分析

Navicat を使用するときは、パスワードを保存するのが習慣です。時間が経つと、データベースのパスワードを忘れてしまいます。これは非常に不快です。

しかし、ここにあります。裏技として、navicat 接続によって保存されたパスワードを表示できます

最初に接続をエクスポートします

接続をエクスポートし、connections.ncx ファイルを取得します

Navicat で接続および保存されたパスワードを表示する方法の簡単な分析#ここでエクスポートのパスワードを覚えておいてください。 ! !それ以外の場合、エクスポートされたファイルには暗号化されたパスワードが含まれていません

Navicat で接続および保存されたパスワードを表示する方法の簡単な分析

#ファイル内のパスワード フィールドの値を見つけます

彼をコピーしてください

Navicat で接続および保存されたパスワードを表示する方法の簡単な分析

パスワードの解読を開始します

偉い人に感謝します書き込み用に Github にプログラムがあります。暗号化されたパスワードを直接解読できます。

プログラムは PHP です。PHP がローカルにインストールされていない場合でも、問題はありません。オンラインで実行できるツールを見つけてください https:/ /tool.lu/coderunner/

コードを貼り付けるだけです

最後から 2 行目の値をコピーした暗号化されたパスワードに置き換えて実行します

$decode = $navicatPassword->decrypt('999239DEBFA1960BCCB12566F1F417A6');

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
$navicatPassword = new NavicatPassword(12);
//$navicatPassword = new NavicatPassword(11);
 
//解密
//$decode = $navicatPassword->decrypt('15057D7BA390');
$decode = $navicatPassword->decrypt(&#39;999239DEBFA1960BCCB12566F1F417A6&#39;);
echo $decode."\n";

関連する推奨事項: Navicat で接続および保存されたパスワードを表示する方法の簡単な分析navicat チュートリアル

以上がNavicat で接続および保存されたパスワードを表示する方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。