在使用专业数据库软件Navicat是都是习惯性地保存了默认密码,但是久而久之后就会忘记数据库密码,然后自己也没备份,软件上面不可以直接查看填写密码,这就很不舒服了,
但是,有个小技巧,可以查看navicat已连接保存的密码。
第一步:首先去导出连接
导出连接获取到connections.ncx文件
这里记着导出密码!!!不然导出的文件里不包含加密的密码
用notepad++打开,然后找到文件里password字段的值
把它复制出来
第二步:开始破译密码
多亏一位Github:https://github.com/tianhe1986/FatSmallTools上的大佬写了个程序;可以直接破解这个加密密码
程序是php语言的;如果本地没装php也没关系(也可以弄个服务器测试),直接找个在线运行的工具https://tool.lu/coderunner/
把代码粘上去就行了
然后把刚复制的加密密码替换倒数第二行里的值,然后运行就行了
$decode=$navicatPassword->decrypt('999239DEBFA1960BCCB12566F1F417A6');
附带代码行
<?phpnamespaceFatSmallTools;classNavicatPassword{protected$version=0;protected$aesKey='libcckeylibcckey';protected$aesIv='libccivlibcciv';protected$blowString='3DC5CA39';protected$blowKey=null;protected$blowIv=null;publicfunction__construct($version=12){$this->version=$version;$this->blowKey=sha1('3DC5CA39',true);$this->blowIv=hex2bin('d9c7c3c8870d64bd');}publicfunctionencrypt($string){$result=FALSE;switch($this->version){case11:$result=$this->encryptEleven($string);break;case12:$result=$this->encryptTwelve($string);break;default:break;}return$result;}protectedfunctionencryptEleven($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);}returnstrtoupper(bin2hex($result));}protectedfunctionencryptBlock($block){returnopenssl_encrypt($block,'BF-ECB',$this->blowKey,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);}protectedfunctiondecryptBlock($block){returnopenssl_decrypt($block,'BF-ECB',$this->blowKey,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);}protectedfunctionxorBytes($str1,$str2){$result='';for($i=0;$i<strlen($str1);$i++){$result.=chr(ord($str1[$i])^ord($str2[$i]));}return$result;}protectedfunctionencryptTwelve($string){$result=openssl_encrypt($string,'AES-128-CBC',$this->aesKey,OPENSSL_RAW_DATA,$this->aesIv);returnstrtoupper(bin2hex($result));}publicfunctiondecrypt($string){$result=FALSE;switch($this->version){case11:$result=$this->decryptEleven($string);break;case12:$result=$this->decryptTwelve($string);break;default:break;}return$result;}protectedfunctiondecryptEleven($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;}protectedfunctiondecryptTwelve($upperString){$string=hex2bin(strtolower($upperString));returnopenssl_decrypt($string,'AES-128-CBC',$this->aesKey,OPENSSL_RAW_DATA,$this->aesIv);}}useFatSmallTools\NavicatPassword;//需要指定版本,11或12$navicatPassword=newNavicatPassword(12);//$navicatPassword=newNavicatPassword(11);//解密//$decode=$navicatPassword->decrypt('15057D7BA390');$decode=$navicatPassword->decrypt('999239DEBFA1960BCCB12566F1F417A6');echo$decode."\n";
最后注意下:乱码
可能解码的时候遇到乱码,这时只需要修改一下指定的版本就行了
可能11版本是乱码。
给他修改成12版本就正常了,具体测试看那个正常。
以上是关于“Navicat连接Mysql的密码是什么”的介绍,如需测试PHP主机,推荐酷番云共享虚拟主机、免费虚拟主机,可供测试,让您快速上线网站。