# Navicat Keygen 这份repo将会告诉你Navicat是怎么完成离线激活的。 [注册机是怎么工作的?](HOW_DOES_IT_WORK.zh-CN.md) __注意:仅支持Navicat Premium。__ ## 1. 如何编译 * 在编译之前,你应该确保你有如下几个库: ``` openssl capstone keystone rapidjson libplist ``` 如果你有`brew`的话,你可以通过 ``` $ brew install openssl $ brew install capstone $ brew install keystone $ brew install rapidjson $ brew install libplist ``` 来完成它们的安装。 * Clone `mac` 分支,并编译keygen和patcher ```bash $ git clone -b mac --single-branch https://github.com/DoubleLabyrinth/navicat-keygen.git $ cd navicat-keygen $ make all ``` 编译完成后你会在 `bin/` 文件夹下看到两个可执行文件: ```bash $ ls bin/ navicat-keygen navicat-patcher ``` ## 2. 如何使用这个Keygen 1. 编译好keygen和patcher。__并且打开Navicat Premium至少一次。 2. 备份好Navicat中所有已保存的数据库连接(包括密码)。 3. 移除所有Navicat在 `Keychain Access.app` (即钥匙链)中保存的连接,如果有的话。 你可以通过在 `Keychain Access.app` 中搜索关键词 `navicat` 来找到它们。 4. 使用`navicat-patcher`替换掉公钥: ``` Usage: navicat-patcher [--dry-run] [RSA-2048 Private Key File] [--dry-run] Run patcher without applying any patches. This parameter is optional. Path to `Navicat Premium.app`. Example: /Applications/Navicat\ Premium.app/ This parameter must be specified. [RSA-2048 Private Key File] Path to a PEM-format RSA-2048 private key file. This parameter is optional. ``` __例如:__ ```console $ ./navicat-patcher /Applications/Navicat\ Premium.app/ ``` __Navicat Premium For Mac 15.0.4 英文版__ 已通过测试。样例输出见[这里](example/navicat-patcher.txt)。 * __仅对 Navicat Premium 版本 < 12.0.24 的说明:__ 如果你的Navicat版本小于12.0.24,那么`navicat-patcher`将会终止并且不会修改目标文件。 你必须使用openssl生成`RegPrivateKey.pem`和`rpk`文件: ```console $ openssl genrsa -out RegPrivateKey.pem 2048 $ openssl rsa -in RegPrivateKey.pem -pubout -out rpk ``` 接着用刚生成的`rpk`文件替换 ``` /Applications/Navicat Premium.app/Contents/Resources/rpk ``` 5. __生成一份自签名的代码证书,并总是信任该证书。这一步非常重要。__ __然后用 `codesign` 对 `libcc-premium.dylib` (如果有的话) 和 `Navicat Premium.app` 重签名。__ * __如果你的Navicat Premium版本号高于15.0.0,__ __你必须先签名 `libcc-premium.dylib`,再签名 `Navicat Premium.app`。__ ```console $ codesign -f -s "Your self-signed code-sign certificate name" /Contents/Frameworks/libcc-premium.dylib ``` ```console $ codesign -f -s "Your self-signed code-sign certificate name" ``` __注意:__ "Your self-signed code-sign certificate name"是你证书的名字,不是路径。 __例如:__ ```console $ codesign -f -s "foobar" /Applications/Navicat\ Premium.app/Contents/Frameworks/libcc-premium.dylib $ codesign -f -s "foobar" /Applications/Navicat\ Premium.app/ ``` 6. 接下来使用`navicat-keygen`来生成 __序列号__ 和 __激活码__。 ``` Usage: navicat-keygen [--adv] [--adv] Enable advance mode. This parameter is optional. A path to an RSA-2048 private key file. This parameter must be specified. Example: ./navicat-keygen ./RegPrivateKey.pem ``` __例如:__ ```console $ ./navicat-keygen ./RegPrivateKey.pem ``` 你会被要求选择Navicat的语言以及输入主版本号。之后会随机生成一个 __序列号__。 ```console $ ./navicat-keygen ./RegPrivateKey.pem ********************************************************** * Navicat Keygen (macOS) by @DoubleLabyrinth * * Version: 5.0 * ********************************************************** [*] 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: 0 ~ 15, default: 15)> 15 [*] Serial number: NAVD-ZM3Z-BK6L-JUWD [*] Your name: ``` 你可以使用这个 __序列号__ 暂时激活Navicat。 接下来你会被要求输入`用户名`和`组织名`;请随便填写,但不要太长。 ```console [*] Your name: DoubleLabyrinth [*] Your organization: DoubleLabyrinth [*] Input request code in Base64: (Double press ENTER to end) ``` 之后你会被要求填入请求码。注意 __不要关闭注册机__。 7. __断开网络__ 并打开Navicat。 找到`注册`窗口,填入注册机给你的序列号。然后点击`激活`按钮。 8. 一般来说在线激活肯定会失败,这时候Navicat会询问你是否`手动激活`,直接选吧。 9. 在`手动激活`窗口你会得到一个请求码,复制它并把它粘贴到keygen里。最后别忘了连按至少两下回车结束输入。 ```console [*] Input request code in Base64: (Double press ENTER to end) IF+tuUn0WcDqJ0tthu/UwOxCZAz5/TqGrSG/9y5DcYJ0/5kfu11Tu314T/pUFK7WPzbnK2MFQ9kb9VytT4T10fXHKoHVYRBtOTYDQqCN2lwnmTty1i1SwUVO+CAqXasqqnss/r4ytbQUpsr2EmBqMQeXERhH72winnhfHkXoWgIHhYXgcvRBagKI1a48c8vJTjTB1eYHmO+DQI6orJoQ65ClqVSkdgKwyhAtSv0yMeKQX45UEX5hQCu9rrgqRN13f7mKWXhGZXkYrk4VZaHdfsr0o50zmU/ZhKLdFqRjrLzt4JY41+AIjAxtHd5g/LAUwBfUdfy9KdHjaeXCxdueXQ== [*] Request Info: {"K":"NAVDZM3ZBK6LJUWD", "DI":"78BC84E24E18EFCE1DF7", "P":"MAC"} [*] Response Info: {"K":"NAVDZM3ZBK6LJUWD","DI":"78BC84E24E18EFCE1DF7","N":"DoubleLabyrinth","O":"DoubleLabyrinth","T":1576005483} [*] Activation Code: dJldt4pru2xBtqWiYCdT8s8H0vQ8xe8wI/f3/BLzSf7m3gevql9Z9CfkdMpuCJg35YPYTDHBwYYLnU6heO0bmvnVAF1U6ZKtWXpAAi+w6tGjeV64uachGI+/xb5Q5bQzD0V44PGYmL6cYULYjNtndMAgzhWGFzgsjGtaJOSczWC2OI1R1gAGh+l+pFdx37+VMXtfUtwv7V+qypj5CrzIULsUdh9U5JHXkdVSK6y+8bEeplYLwvQR6Cnavra0WUAP0hSg7khjy+mPiCuXSMwH1EphFqXscp1WUGjkms7pSK/aPtCoxWcJeK3SrgAVberBn2+rqaI1PBBh5DTctDy2SQ== ``` 10. 如果不出意外,你会得到一个看似用Base64编码的激活码。 直接复制它,并把它粘贴到Navicat的`手动激活`窗口,最后点`激活`按钮。 如果没什么意外的话应该能成功激活。