今天非常的倒霉,因为学习了Vue的相关知识,想自己写一个后端服务器来练习一下Vue

然后 忘记了Docker中Mysql的密码。。。

很抽象

下面是我的解决方法

  • 一、如果在本地的Navicat Premium上连接过数据库,就可以使用工具导出连接

  • 二、用编辑器打开导出的链接文件 就可以看到 用户名、密码、以及相关链接信息
  • 三、我们复制密码(加密后的),进行解密---程序是PHP的 多亏一位Github:https://github.com/tianhe1986/FatSmallTools 上的大佬写了个程序,可以直接破译
  • 选择一个在线编译器 https://tool.lu/coderunner/ 把代码粘上去就行了

代码如下

点击查看代码
<?php

namespace FatSmallTools;

class NavicatPassword
{
protected $version = 0;
protected $aesKey = 'libcckeylibcckey';
protected $aesIv = 'libcciv libcciv ';
protected $blowString = '3DC5CA39';
protected $blowKey = null;
protected $blowIv = null; public function __construct($version = 12)
{
$this->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('999239DEBFA1960BCCB12566F1F417A6');
echo $decode."\n";

* 四、替换代码中的倒数第二行字符串,就可以获得连接密码
最后 还是要好好地记住自己的密码啊

最新文章

  1. js面向对象总结(一)
  2. stm32软件模拟IIC读取PX4FLOW光流传感器数据
  3. Java--剑指offer(10)
  4. [CareerCup] 18.9 Find and Maintain the Median Value 寻找和维护中位数
  5. 深入研究虚拟机之垃圾收集(GC)算法实现
  6. 夺命雷公狗—angularjs—19—angular-route
  7. Yahoo! s4和Twitter storm的粗略比较
  8. 关于byte[]字节传输的大端和小端小议
  9. python 列表函数(转)
  10. ELK 构建 MySQL 慢日志收集平台详解
  11. 第三章&#183; Redis消息队列
  12. 1#Two Sum(qsort用法)
  13. 【BZOJ4891】[TJOI2017]龙舟(Pollard_rho)
  14. 搭建web之 服务器鉴权失败,请确认服务器已启用密码鉴权并且账号密码正确?
  15. PMI网站中pdu查询
  16. Python爬虫Urllib库的基本使用
  17. dubbo 多协议和多注册中心
  18. JavaScript中使用function作为对象键值
  19. java基础71 XML解析中的【DOM和SAX解析工具】相关知识点(网页知识)
  20. linux每天一小步---sed命令详解

热门文章

  1. Aspose.Cells设置单元格背景色不生效
  2. &lt;二&gt;派生类的构造过程
  3. 解决win7设置默认程序打开方式失效
  4. 如何发布一个 TypeScript 编写的 npm 包
  5. 10分钟看懂Docker和K8S,docker k8s 区别
  6. 下载kali以及安装
  7. 学习ASP.NET Core Blazor编程系列十七——文件上传(上)
  8. Jmeter之响应数据乱码问题
  9. 速记&#183;python 123章
  10. 一、对称加密(DES加密)