Heim > Datenbank > navicat > Eine kurze Analyse, wie verbundene und gespeicherte Passwörter in Navicat angezeigt werden

Eine kurze Analyse, wie verbundene und gespeicherte Passwörter in Navicat angezeigt werden

青灯夜游
Freigeben: 2022-03-30 11:17:13
nach vorne
13983 Leute haben es durchsucht

Wie prüfe ich das von Navicat gespeicherte Datenbankpasswort? Der folgende Artikel zeigt Ihnen, wie Sie die gespeicherten Passwörter von Navicat anzeigen können. Ich hoffe, er ist hilfreich für Sie!

Eine kurze Analyse, wie verbundene und gespeicherte Passwörter in Navicat angezeigt werden

Bei der Verwendung von Navicat vergesse ich das Passwort mit der Zeit, was sehr unangenehm ist.

Es gibt jedoch einen Trick, um das von der Navicat-Verbindung gespeicherte Passwort zu überprüfen

Exportieren Sie zuerst die Verbindung

Exportieren Sie die Verbindung und holen Sie sich die Datei „connections.ncx“

Merken Sie sich hier das Exportkennwort! ! ! Andernfalls enthält die exportierte Datei nicht das verschlüsselte Passwort. Eine kurze Analyse, wie verbundene und gespeicherte Passwörter in Navicat angezeigt werden

Eine kurze Analyse, wie verbundene und gespeicherte Passwörter in Navicat angezeigt werden

Suchen Sie dann den Wert des Passwortfelds in der Datei. Kopieren Sie es heraus. Beginnen Sie mit der Entschlüsselung des Passworts

Dank einer Person, die der große Typ auf Github ein Programm geschrieben hat; Sie können dieses verschlüsselte Passwort direkt knacken. Das Programm ist PHP. Wenn PHP nicht lokal installiert ist, spielt es keine Rolle, finden Sie einfach ein Tool, das online https ausgeführt wird: //tool.lu/coderunner/ Fügen Sie einfach den Code ein

Dann ersetzen Sie den Wert in der vorletzten Zeile durch das verschlüsselte Passwort, das Sie gerade kopiert haben, und führen Sie es dann aus

$decode = $navicatPassword->decrypt('999239DEBFA1960BCCB12566F1F417A6');
Nach dem Login kopieren

Eine kurze Analyse, wie verbundene und gespeicherte Passwörter in Navicat angezeigt werden

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";
Nach dem Login kopieren

Verwandte Empfehlungen: Navicat-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Analyse, wie verbundene und gespeicherte Passwörter in Navicat angezeigt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage