navicat密码查看

image-20230725103518469

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?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('密码');
echo $decode."\n";

https://tool.lu/coderunner/

navicat16激活破解教程中文版设置

首先我一开始是找了个一个英文版的navicat16破解版,但是感觉英文版看着好别扭,所以就想给他改成中文版,但是当时下载的版本并没有更改语言的选择,所以从官网重新下载了一个,之后把安装目录设置到原来的目录下就可以了。

但是换成新的版本就会造成一个问题以前的破解失效了。

所以就需要重新破解,在吾爱上发现可以通过修改注册表来进行重新试用,但是实际操作发现并没有什么用。

于是尝试了一下别的,也就是本文的主角navicat-keygen

这个其实已经有教程了,我简单说一下步骤。

首先需要将文件编译出来,这里需要

  1. Visual Studio 2022 或者更高版本。因为这是一个VS2022项目。
  2. vcpkg 以及下面几个库:
  • fmt:x64-windows-static
  • fmt:x86-windows-static
  • openssl:x64-windows-static
  • openssl:x86-windows-static
  • rapidjson:x64-windows-static
  • rapidjson:x86-windows-static
  • keystone:x64-windows-static
  • keystone:x86-windows-static
  • unicorn:x64-windows-static
  • unicorn:x86-windows-static

vcpkg的安装

  1. 从git下载git clone https://github.com/microsoft/vcpkg
  2. 添加到环境变量D:downloadvcpkg
  3. 使用powershell打开bootstrap-vcpkg.bat这里建议加上代理$env:HTTP_PROXY="xxx" $env:HTTPS_PROXY='xxxx',然后就会下载一个vcpkg.exe的文件
  4. 输入vcpkg integrate install
  5. 安装vcpkg环境
1
2
3
4
5
6
7
8
9
10
vcpkg install fmt:x64-windows-static
vcpkg install fmt:x86-windows-static
vcpkg install openssl:x64-windows-static
vcpkg install openssl:x86-windows-static
vcpkg install rapidjson:x64-windows-static
vcpkg install rapidjson:x86-windows-static
vcpkg install keystone:x64-windows-static
vcpkg install keystone:x86-windows-static
vcpkg install unicorn:x64-windows-static
vcpkg install unicorn:x86-windows-static

navicat-keygen通过git下载到本地并解压

1
git clone -b windows --single-branch https://notabug.org/doublesine/navicat-keygen.git

然后打开Visual Studio,打开前面下载的navicat-keygen项目文件。

image.png

将debug改成release

image.png

选择 生成 > 生成解决方案

image.png

生成完成后,你会在 bin/ 文件夹下看到编译后的keygen/patcher。

之后根据教程进行注册即可,记得要把网络断了。

或者修改host127.0.0.1 activate.navicat.com这样也可以达到断网的效果。

  1. 使用navicat-patcher.exe替换掉navicat.exelibcc.dll里的Navicat激活公钥。
1
navicat-patcher.exe [-dry-run] <Navicat Install Path> [RSA-2048 PEM File Path]
  • [-dry-run]: 运行patcher但不对Navicat程序做任何修改。

    这个参数是可选的。

  • <Navicat Install Path>: Navicat的完整安装路径。

    这个参数必须指定。

  • [RSA-2048 PEM File Path]: RSA-2048私钥文件的完整路径或相对路径。

    这个参数是可选的。 如果未指定,navicat-patcher.exe将会在当前目录生成一个新的RSA-2048私钥文件。

例如:(在cmd.exe中)

1
navicat-patcher.exe "C:\Program Files\PremiumSoft\Navicat Premium 16"

Navicat Premium 16.0.7 英文版 已通过测试。下面将是一份样例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
***************************************************
* navicat-patcher by @DoubleLabyrinth *
* version: 16.0.7.0 *
***************************************************

[+] Try to open libcc.dll ... OK!

[*] patch_solution_since<16, 0, 7, 0>: m_va_CSRegistrationInfoFetcher_WIN_vtable = 0x00000001837759f0
[*] patch_solution_since<16, 0, 7, 0>: m_va_CSRegistrationInfoFetcher_WIN_GenerateRegistrationKey = 0x0000000181fa52d0
[*] patch_solution_since<16, 0, 7, 0>: m_va_iat_entry_malloc = 0x0000000183439bd0
[+] patch_solution_since<16, 0, 7, 0>: official encoded key is found.

[*] Generating new RSA private key, it may take a long time...
[*] Your RSA private key:
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAvxaFFjTE6hi80nhjgfFMM3yPer122OIWIbbumFIuAOcCF6D3
PnRHBdP9IqB99K6Nv6vKK3Jf0Y+dc5ETrg0l0AHYq+dTFTiWusHuRMx6xFjWzO96
7mFmJq6P28dUucKnr6yG1TQeZaq+mHh2DNEnNEYgV7cLVT1unUmMOL/PBh/eCcaJ
8hQNTQafQQknzCnAKC89v33y+rKInJNy9B+zSB0BGCz+eS8MKf6zc78JMSOnF2uj
NK+QEwaYw8lAbJve1F+rCQS0mbm0QvHhZYZrblVHI5l/8LkX5qBtKw7duUhXHxmO
fQieF23bBk9HDp5uQUGsdbKX6ZWitn/h926xyQIDAQABAoIBAQCHXxDRdni5zuSV
xivYdnUhVHDg5zA23ZQINmw5BJ8KjJzy2FnPqNhXzKJb0Y7ptG8/BhinRtOSxkcp
A/IJL89F2MkCn1JAimJd091UZ/fg+X7SmCVikyWm6auIa2IeZ0QcNAEhMVcHdzqn
EU+wLMu1QKjQ+x/QN0ERtHTeDyQ+lUNB+bvAjx3LHN9Zh8weVBHHtwDoyyZDdJPw
NWgpgcW+uYzlT66uh7LPPaRsEZgAkPIkhzZnwmugXdhlWxtYHKTEfe5gCqubQICc
I/x1yBP1EZFm6qBQD4/49775ZbXwxgaWvBXG+Aah9x8JYtVUS4MgrAiC4a8NQqFp
nwKVjUIBAoGBAOWsj9GGb2KYbfLzJNRrSxhs4TUBfpHteKSm2pL92NAbIOjssNhL
hLY3gBFX2RnYmoGD6YT84JNykuAictgAd5GwvLIbaVF9l7MQn8APRbe2CzQ+/494
9hpn33MZOBNd3I+a5+2qoFbXI04loyYDJkkeOqbwZzJjs7k9HmZMNwY5AoGBANT9
tRFWFDvA0pPgGoHhzlsAUAmrbSfCPkhrRXpE9fgl3VnV+NRtjCf9NhJt0uaIokZ5
oSf+jClcwU8N4EvGxMBaCHTqBzgc4dLPWpMAhPoMjjv1Oyug2iBcuTasHVP+Jdgq
CaNzpXOuq4upaaNrq+QMsI6O9wA/zWhWPmnYQYgRAoGAUk56471noU+65zvXUQB6
UvCB7Hrynt0ZRPg+kDrEPh/atV5NKdY2Yw6UqKJwvOBwzkU1pGDzIiQHGqd9vIa+
Usmhdbp5DakSeitU9IEEnQdyEHEbKJFSsLfUzeyVuesDJbt/rh5dg4Fpt5GpW+/5
Am8A2d6BPP+Z4qJSiJp7hZECgYEAy64TCZEXqEytE1yr/KjDfaK+54BX0j2e8gIj
XtmznqoXE2Hboslfzp4Gp3j+xhbDmEGYK3bw8l0RP1g1tkFOxeNTUvq6DJ8SFVbV
dt54S+bV3eCVxRL9hRUmyXGuWjQgXKdWsEhXYFkZE2Xe77h3mI3KCYoOCt74v146
MV3szQECgYEAozTO7Wuum+VMKIY35hmHMjUiYmLl3EXWwMBT2VSsk8Siu0XoH0yd
KoxsLDUBMS8sWKCZhFwU+Fx8UZjfo+xE3H4UTyVsw5EDpB9gSud928gNADwxTKor
3s4jnUzb4XRQ0qN2jXzdNuqXNV1ozeqajbM2oSZqbSnWSs5g6DpIs1Q=
-----END RSA PRIVATE KEY-----

[*] patch_solution_since<16, 0, 7, 0>: Patch has been done.
[*] New RSA-2048 private key has been saved to
C:\Users\DoubleSine\source\repos\navicat-keygen\bin\x64-Release\RegPrivateKey.pem


*******************************************************
* PATCH HAS BEEN DONE SUCCESSFULLY! *
* HAVE FUN AND ENJOY~ *
*******************************************************
  1. 接下来使用navicat-keygen.exe来生成序列号和激活码
1
navicat-keygen.exe <-bin-text> [-adv] <RSA-2048 Private Key File>
  • <-bin-text>: 必须是-bin-text

    如果指定了-binnavicat-keygen.exe最终将生成license_file文件。这个选项是给Navicat旧激活方式使用的。

​ 如果指定了-textnavicat-keygen.exe最终将生成Base64样式的激活码。这个选项是给Navicat新激活方式使用的。

这个参数必须指定。

  • [-adv]: 开启高级模式。

    这个参数是可选的。 如果指定了这个参数,navicat-keygen.exe将会要求你手工填写产品ID号、语言标识号。这个选项一般是给以后用的。

  • <RSA-2048 Private Key File>: RSA-2048私钥文件的完整路径或相对路径。私钥必须是PEM格式的。

    这个参数必须指定。

例如:(在cmd.exe中)

1
navicat-keygen.exe -text .\RegPrivateKey.pem

你会被要求选择Navicat产品类别、语言以及输入主版本号。之后会随机生成一个序列号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
***************************************************
* navicat-keygen by @DoubleLabyrinth *
* version: 16.0.7.0 *
***************************************************

[*] Select Navicat product:
0. DataModeler
1. Premium
2. MySQL
3. PostgreSQL
4. Oracle
5. SQLServer
6. SQLite
7. MariaDB
8. MongoDB
9. ReportViewer

(Input index)> 1

[*] Select product language:
0. English
1. Simplified Chinese
2. Traditional Chinese
3. Japanese
4. Polish
5. Spanish
6. French
7. German
8. Korean
9. Russian
10. Portuguese

(Input index)> 0

[*] Input major version number:
(range: 11 ~ 16, default: 16)> 16

[*] Serial number:
NAVL-GFKA-T5SR-ZFTK

[*] Your name:

你可以使用这个序列号暂时激活Navicat。

接下来你会被要求输入用户名组织名;请随便填写,但不要太长。

1
2
3
4
[*] Your name: Double Sine
[*] Your organization: PremiumSoft CyberTech Ltd.

[*] Input request code (in Base64), input empty line to end:

之后你会被要求填入请求码。注意 不要关闭命令行 .

  1. 断开网络 并打开Navicat。找到注册窗口,并填入keygen给你的序列号。然后点击激活按钮。
  2. 一般来说在线激活肯定会失败,这时候Navicat会询问你是否手动激活,直接选吧。
  3. 手动激活窗口你会得到一个请求码,复制它并把它粘贴到keygen里。最后别忘了连按至少两下回车结束输入。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[*] Your name: Double Sine
[*] Your organization: PremiumSoft CyberTech Ltd.

[*] Input request code (in Base64), input empty line to end:
CpgnfbIJGmAcxCuo/pAb8EeoS0audZn2NNemg6c3NPK/dWgb343IZQrFwoBZY6lpxE4Fq1BoNmCM75P03XpiXQ+hErcvFWk6iQPDCk/d4msf/AoprIqAMpXFoFLkeP0G93UIIEeBsUej8SrxdDgQDM585iPok5fUW+fTDCD1VICr7DBdL3c/69IxeIgiOQSuImdIQiM3/EOfDiFbAJL9vHW5LxFT8jj+8RPXehwPTBphpInmGdzxVZUZJwAGlXt7orrRbzafdeBjz6MnTajTcJP3SS2dBCiR33UScnyxYGEXdzv7+QLScTmCvI7gqg3Z8DMhroKMoHmy1AvC16FKVw==

[*] Request Info:
{"K":"NAVLGFKAT5SRZFTK", "DI":"7D48FCBD093C778879A1", "P":"WIN"}

[*] Response Info:
{"K":"NAVLGFKAT5SRZFTK","DI":"7D48FCBD093C778879A1","N":"Double Sine","O":"PremiumSoft CyberTech Ltd.","T":1644387294}

[*] Activation Code:
vwLGmQIWg/DtzHMcaKCDHAjTcBNbTo2VmNllphUSUMgGjgvL6v82ue+GqXB6M/qn48Rj4D4Joqqisr6UwMSclNmQxOQz4RftEpLtG6KBjDo4LM71qn9R/jWoZV5EoHPQkX5gzhO/D7GammrRGn2MV+zI6dJ4c4SBFNnNyjAeEqNzinrQwjB7lUVTlpHEe/SMrdCsGliPZQ/X+5ASbEsq3D8PZsjysJv98MIJrZvdTdznrRe8JzYP+8sbIPQMIX1UDmdyDpbpSl45N92OhO4htz1kFjUEfnrwY0GMOhdYHv/PfMI7RiQzkRyY7pLvX7muJ4dkA+CmMmwew3gy3MWjig==

如果不出意外,你会得到一个看似用Base64编码的激活码。直接复制它,并把它粘贴到Navicat的手动激活窗口,最后点激活按钮。如果没什么意外的话应该能成功激活。