Maison > base de données > navicat > Une brève analyse de la façon d'afficher les mots de passe connectés et enregistrés dans Navicat

Une brève analyse de la façon d'afficher les mots de passe connectés et enregistrés dans Navicat

青灯夜游
Libérer: 2022-03-30 11:17:13
avant
13981 Les gens l'ont consulté

Comment vérifier le mot de passe de la base de données enregistré par Navicat ? L'article suivant vous expliquera comment afficher les mots de passe enregistrés de Navicat. J'espère qu'il vous sera utile !

Une brève analyse de la façon d'afficher les mots de passe connectés et enregistrés dans Navicat

Lorsque j'utilise Navicat, j'enregistre habituellement le mot de passe. Au fil du temps, j'oublie le mot de passe de la base de données, ce qui est très inconfortable.

Cependant, il existe une astuce pour vérifier le mot de passe enregistré par la connexion Navicat.

Exportez d'abord la connexion

Exportez la connexion et obtenez le fichier connections.ncx

N'oubliez pas le mot de passe d'exportation ici ! ! ! Sinon, le fichier exporté ne contiendra pas le mot de passe cryptéUne brève analyse de la façon dafficher les mots de passe connectés et enregistrés dans Navicat

Une brève analyse de la façon dafficher les mots de passe connectés et enregistrés dans Navicat

Recherchez ensuite la valeur du champ mot de passe dans le fichier

Copiez-le

Une brève analyse de la façon dafficher les mots de passe connectés et enregistrés dans Navicat

Commencez à déchiffrer le mot de passe

Grâce à une personne Le grand gars de Github a écrit un programme ; vous pouvez directement déchiffrer ce mot de passe crypté

Le programme est PHP ; si PHP n'est pas installé localement, ce n'est pas grave, il suffit de trouver un outil qui s'exécute en ligne https : //tool.lu/coderunner/

Collez simplement le code dessus

Remplacez ensuite la valeur de l'avant-dernière ligne par le mot de passe crypté que vous venez de copier, puis exécutez-le

$decode = $navicatPassword->decrypt('999239DEBFA1960BCCB12566F1F417A6');
Copier après la connexion

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";
Copier après la connexion

Recommandations associées : Une brève analyse de la façon dafficher les mots de passe connectés et enregistrés dans Navicattutoriel navicat

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal