Heim  >  Artikel  >  Datenbank  >  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

青灯夜游
青灯夜游nach vorne
2022-03-02 10:59:5613870Durchsuche

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');

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";

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen