Navicat获取密码
时间:2020-05-09
本文章向大家介绍Navicat获取密码,主要包括Navicat获取密码使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Navicat获取密码
有大神写了解析Navicat中连接的密码的PHP,想要解析密码,需要:
- 将连接导出
- 配置php(本地不需要安装PHP,网上有运行的网页)
- 运行获取密码
导出Navicat连接
- 文件-导出连接-选择想要解析的连接,导出文件即可
解析密码
打开ncx文件,Password里就是密码,
- 打开 https://tool.lu/coderunner/
- 将下面代码拷贝进去
x
1
<?php
2
3
namespace FatSmallTools;
4
5
class NavicatPassword
6
{
7
protected $version = 0;
8
protected $aesKey = 'libcckeylibcckey';
9
protected $aesIv = 'libcciv libcciv ';
10
protected $blowString = '3DC5CA39';
11
protected $blowKey = null;
12
protected $blowIv = null;
13
14
public function __construct($version = 12)
15
{
16
$this->version = $version;
17
$this->blowKey = sha1('3DC5CA39', true);
18
$this->blowIv = hex2bin('d9c7c3c8870d64bd');
19
}
20
21
public function encrypt($string)
22
{
23
$result = FALSE;
24
switch ($this->version) {
25
case 11:
26
$result = $this->encryptEleven($string);
27
break;
28
case 12:
29
$result = $this->encryptTwelve($string);
30
break;
31
default:
32
break;
33
}
34
35
return $result;
36
}
37
38
protected function encryptEleven($string)
39
{
40
$round = intval(floor(strlen($string) / 8));
41
$leftLength = strlen($string) % 8;
42
$result = '';
43
$currentVector = $this->blowIv;
44
45
for ($i = 0; $i < $round; $i++) {
46
$temp = $this->encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector));
47
$currentVector = $this->xorBytes($currentVector, $temp);
48
$result .= $temp;
49
}
50
51
if ($leftLength) {
52
$currentVector = $this->encryptBlock($currentVector);
53
$result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
54
}
55
56
return strtoupper(bin2hex($result));
57
}
58
59
protected function encryptBlock($block)
60
{
61
return openssl_encrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
62
}
63
64
protected function decryptBlock($block)
65
{
66
return openssl_decrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
67
}
68
69
protected function xorBytes($str1, $str2)
70
{
71
$result = '';
72
for ($i = 0; $i < strlen($str1); $i++) {
73
$result .= chr(ord($str1[$i]) ^ ord($str2[$i]));
74
}
75
76
return $result;
77
}
78
79
protected function encryptTwelve($string)
80
{
81
$result = openssl_encrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
82
return strtoupper(bin2hex($result));
83
}
84
85
public function decrypt($string)
86
{
87
$result = FALSE;
88
switch ($this->version) {
89
case 11:
90
$result = $this->decryptEleven($string);
91
break;
92
case 12:
93
$result = $this->decryptTwelve($string);
94
break;
95
default:
96
break;
97
}
98
99
return $result;
100
}
101
102
protected function decryptEleven($upperString)
103
{
104
$string = hex2bin(strtolower($upperString));
105
106
$round = intval(floor(strlen($string) / 8));
107
$leftLength = strlen($string) % 8;
108
$result = '';
109
$currentVector = $this->blowIv;
110
111
for ($i = 0; $i < $round; $i++) {
112
$encryptedBlock = substr($string, 8 * $i, 8);
113
$temp = $this->xorBytes($this->decryptBlock($encryptedBlock), $currentVector);
114
$currentVector = $this->xorBytes($currentVector, $encryptedBlock);
115
$result .= $temp;
116
}
117
118
if ($leftLength) {
119
$currentVector = $this->encryptBlock($currentVector);
120
$result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
121
}
122
123
return $result;
124
}
125
126
protected function decryptTwelve($upperString)
127
{
128
$string = hex2bin(strtolower($upperString));
129
return openssl_decrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
130
}
131
}
132
133
134
use FatSmallTools\NavicatPassword;
135
136
//需要指定版本,11或12
137
$navicatPassword = new NavicatPassword(12);
138
//$navicatPassword = new NavicatPassword(11);
139
140
//解密
141
//$decode = $navicatPassword->decrypt('15057D7BA390');
142
$decode = $navicatPassword->decrypt('EDB0DE94B9A53CD3F03A934A9DBE8359');
143
echo $decode."\n";
144
- 设置Navicat的版本(基本现在是12了)
- 在 $navicatPassword->decrypt('')中设置密码
- 执行之后,在右边就解析出密码了
参考:
- https://tool.lu/coderunner/
- https://blog.csdn.net/CCESARE/article/details/104746596
- https://blog.csdn.net/weixin_40903194/article/details/103233127
原文地址:https://www.cnblogs.com/ziyue7575/p/08be7f769a38eb4e13679e268fbea79c.html
- 移动Web 开发中的一些前端知识收集汇总
- Angularjs基础(七)
- WordPress 中八个有用的代码片段
- 【释疑文】DeveMobile、EaseMobile 及Devework 主题的区别
- DeveMobile/EaseMobile 主题双双更新1.1,增加离线存储,社交媒体关注等功能
- Angularjs基础(六)
- 如果机器人拥有痛觉,这个世界会怎样
- 阻止iOS Web APP中点击链接跳转到Safari 浏览器新标签页
- 专门攻击工资支付系统的网络犯罪
- Angularjs基础(五)
- DW Replace Open Sans:将WordPress 后台中的open-sans字体加载源从Google Fonts换为360 CDN
- Google Fonts 已可正常访问,相关插件可卸
- 微信支付宝完成这几个设置,别人偷不走你一毛钱!
- Angularjs基础(四)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 谈一谈Flutter外接纹理
- Python文件复制
- 一文读懂jar包的小秘密
- visdom安装及启动
- 在java中使用SPI创建可扩展的应用程序
- java安全编码指南之:基础篇
- Java并发必知必会第三弹:用积木讲解ABA原理 |老婆居然又听懂了!
- CTO写的代码,真是绝了!
- 用 BERT 精简版 DistilBERT+TF.js,提升问答系统 2 倍性能
- docker浅入深出
- 一篇文章快速搞懂Qt文件读写操作
- C++核心准则T.20:避免定义没有明确语义的“概念”
- 机器学习之独热编码(One-Hot)详解(代码解释)
- TypeScript 实战算法系列(四):实现集合和各种集合运算
- 不知道怎么封装代码?看看这几种设计模式吧!