Maison  >  Article  >  base de données  >  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

青灯夜游
青灯夜游avant
2022-03-02 10:59:5613927parcourir

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer