Deepin20下安裝navicat15
Deepin20下安裝navicat15
適用於Linix/Unix核心的安裝,不限於Deepin
deepin20的安裝就不說了,建議在實體機上直接裝,流暢度比vmware高太多了,可用作為第一生產力機器來用了,換個介面換種心情。
deepin 15.6之前是可以使用deepin的官方安裝器免U盤安裝的,15.6之後不支援體驗安裝,只能用u盤了,喜歡的朋友快上
好吧,開始安裝navicat15.
連結: https://pan.baidu.com/s/1G7yoCW2Vl36-aXFISECUtQ 密碼: anjs
直接下載整個資料夾。
只能啟用當前資料夾下的navicat15,不要去官網新下載,無法啟用!!!已經嘗試過!
準備工作keygen和patcher
這裡的kengen和patcher已經編譯好了, 因此只需要確保你裝了以下幾個庫, 就可以跳過此節了。
前提條件
- 但是請確保你安裝了下面幾個庫:
capstone
keystone
rapidjson
openssl
你可以通過下面的命令來安裝它們:
# install capstone
$ sudo apt-get install libcapstone-dev
# install keystone
$ sudo apt-get install cmake
$ git clone https://github.com/keystone-engine/keystone.git
$ cd keystone
$ mkdir build
$ cd build
$ ../make-share.sh
$ sudo make install
$ sudo ldconfig
# install rapidjson
$ sudo apt-get install rapidjson-dev
# install openssl
$ sudo apt-get install openssl
- 你的gcc支援C++17特性。
編譯
$ git clone -b linux --single-branch https://github.com/DoubleLabyrinth/navicat-keygen.git
$ cd navicat-keygen
$ make all
生成完成後,你會在 bin/
資料夾下看到編譯後的keygen/patcher。
掛載並提取檔案
假設你的目錄直接就是從網盤下載好的Navicat15,且和我一樣路徑~/Navicat15,以下操作全部在這個目錄下
## 把navicat15-premium-cs.AppImage掛載到一個目錄,以便於把內部檔案提取出來用patcher破解
# 掛載
$ mkdir navicat15-premium-cs
$ sudo mount -o loop avicat15-premium-cs.AppImage navicat15-premium-cs
# 提取檔案
$ cp -r /navicat15-premium-cs navicat15-premium-cs-patched
檔案提取完之後,掛載點就可用刪了,我會在安裝完畢之後一起來清理這些東西。
Patcher破解
# 破解
$ chmod +x navicat-patcher
./navicat-patcher navicat15-premium-cs-patched
以上沒有報錯的話會有如下類似輸出。
**********************************************************
* Navicat Patcher (Linux) by @DoubleLabyrinth *
* Version: 1.0 *
**********************************************************
Press ENTER to continue or Ctrl + C to abort.
[+] Try to open libcc.so ... Ok!
[+] PatchSolution0 ...... Ready to apply
RefSegment = 1
MachineCodeRva = 0x0000000001413e10
PatchMarkOffset = +0x00000000029ecf40
[*] Generating new RSA private key, it may take a long time...
[*] Your RSA private key:
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEArRsg1+6JZxZNMhGyuM8d+Ue/ky9LSv/XyKh+wppQMS5wx7QE
XFcdDgaByNZeLMenh8sgungahWbPo/5jmkDuuHHrVMU748q2JLL1E3nFraPZqoRD
...
...
B1Z5AoGBAK8cWMvNYf1pfQ9w6nD4gc3NgRVYLctxFLmkGylqrzs8faoLLBkFq3iI
s2vdYwF//wuN2aq8JHldGriyb6xkDjdqiEk+0c98LmyKNmEVt8XghjrZuUrn8dA0
0hfInLdRpaB7b+UeIQavw9yLH0ilijAcMkGzzom7vdqDPizoLpXQ
-----END RSA PRIVATE KEY-----
[*] Your RSA public key:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArRsg1+6JZxZNMhGyuM8d
+Ue/ky9LSv/XyKh+wppQMS5wx7QEXFcdDgaByNZeLMenh8sgungahWbPo/5jmkDu
...
...
GrVJ3o8aDm35EzGymp4ON+A0fdAkweqKV6FqxEJqLWIDRYh+Z01JXUZIrKmnCkgf
QQIDAQAB
-----END PUBLIC KEY-----
*******************************************************
* PatchSolution0 *
*******************************************************
[*] Previous:
+0x0000000000000070 01 00 00 00 05 00 00 00 ........
+0x0000000000000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+0x0000000000000090 00 00 00 00 00 00 00 00 40 cf 9e 02 00 00 00 00 ........@.......
+0x00000000000000a0 40 cf 9e 02 00 00 00 00 00 10 00 00 00 00 00 00 @...............
[*] After:
+0x0000000000000070 01 00 00 00 05 00 00 00 ........
+0x0000000000000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+0x0000000000000090 00 00 00 00 00 00 00 00 d0 d0 9e 02 00 00 00 00 ................
+0x00000000000000a0 d0 d0 9e 02 00 00 00 00 00 10 00 00 00 00 00 00 ................
[*] Previous:
+0x00000000029ecf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+0x00000000029ecf50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+0x00000000029ecf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
...
+0x00000000029ed0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
[*] After:
+0x00000000029ecf40 ef be ad de 4d 49 49 42 49 6a 41 4e 42 67 6b 71 ....MIIBIjANBgkq
+0x00000000029ecf50 68 6b 69 47 39 77 30 42 41 51 45 46 41 41 4f 43 hkiG9w0BAQEFAAOC
+0x00000000029ecf60 41 51 38 41 4d 49 49 42 43 67 4b 43 41 51 45 41 AQ8AMIIBCgKCAQEA
...
...
...
+0x00000000029ed0c0 43 6b 67 66 51 51 49 44 41 51 41 42 ad de ef be CkgfQQIDAQAB....
[*] Previous:
+0x0000000001413e10 44 0f b6 24 18 48 8b 44 24 28 8b 50 f8 85 d2 79 D..$.H.D$(.P...y
+0x0000000001413e20 6f o
[*] After:
+0x0000000001413e10 45 31 e4 48 8d 05 2a 91 5d 01 90 90 90 90 90 90 E1.H..*.].......
+0x0000000001413e20 90 .
[*] New RSA-2048 private key has been saved to
/home/doublesine/github.com/navicat-keygen/RegPrivateKey.pem
*******************************************************
* PATCH HAS BEEN DONE SUCCESSFULLY! *
* HAVE FUN AND ENJOY~ *
*******************************************************
重新打包
將破解後的資料夾重新打包成AppImage.
$ chmod +x appimagetool-x86_64.AppImage
$ ./appimagetool-x86_64.AppImage navicat15-premium-cs-patched navicat15-premium-cs-patched.AppImage
keygen啟用
後續所有操作在斷網下進行!!!
後續所有操作在斷網下進行!!!
後續所有操作在斷網下進行!!!
patcher破解完之後,當前資料夾下會有一個名為RegPrivateKey.pem的檔案,如果當前檔案沒有,那麼後續就無法在進行下去了。
啟用
$ ./navicat-keygen --text RegPrivateKey.pem
類似如下輸出和操作:
第一步選product: 1 premium
第二步選語言: 1 simple chinese
我當前的這個是中文版本的,選0會導致序列號不對而導致後續無法點選啟用按鈕
第三步選主版本: 15
然後你會得到一個序列號,且當前介面會停住,讓你輸入name等資訊。
先別動,不要關視窗!
**********************************************************
* Navicat Keygen (Linux) by @DoubleLabyrinth *
* Version: 1.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: 0 ~ 15, default: 12)> 15
[*] Serial number:
NGHK-LKCJ-EO8J-KRGL
[*] Your name:
第四步: 執行navicat,也就是我們重新打包後的AppImage.
$ chmod +x navicat15-premium-cs-patched.AppImage
$ ./navicat15-premium-cs-patched.AppImage
網上很多教程都是先執行,然後執行keygen,我這裡是先執行的keygen,沒有任何問題,如果你遇到了問題,你也可以試試這種方式。
執行之後navicat打開了,輸入剛剛的序列號,啟用,因為沒有聯網,所以會啟用失敗,有個彈窗,點選手動啟用,並複製手動啟用視窗中的那串請求碼(啟用過windows版本的朋友應該很熟悉了)。
第五步: 回到keygen視窗,輸入你的名字和組織,隨便輸,短一點。
[*] Your name: kid
[*] Your organization: qita
[*] Input request code in Base64: (Double press ENTER to end)
然後輸入剛剛從手動啟用視窗中複製的請求碼,兩次回車結束。
[*] Input request code in Base64: (Double press ENTER to end)
OaGPC3MNjJ/pINbajFzLRkrV2OaSXYLr2tNLDW0fIthPOJQFXr84OOroCY1XN8R2xl2j7epZ182PL6q+BRaSC6hnHev/cZwhq/4LFNcLu0T0D/QUhEEBJl4QzFr8TlFSYI1qhWGLIxkGZggA8vMLMb/sLHYn9QebBigvleP9dNCS4sO82bilFrKFUtq3ch8r7V3mbcbXJCfLhXgrHRvT2FV/s1BFuZzuWZUujxlp37U6Y2PFD8fQgsgBUwrxYbF0XxnXKbCmvtgh2yaB3w9YnQLoDiipKp7io1IxEFMYHCpjmfTGk4WU01mSbdi2OS/wm9pq2Y62xvwawsq1WQJoMg==
[*] Request Info:
{"K":"NAVMRTVJEO42IODD", "DI":"4A12F84C6A088104D23E", "P":"linux"}
[*] Response Info:
{"K":"NAVMRTVJEO42IODD","DI":"4A12F84C6A088104D23E","N":"DoubleLabyrinth","O":"DoubleLabyrinth","T":1575543648}
[*] Activation Code:
i45HIr7T1g69Cm9g3bN1DBpM/Zio8idBw3LOFGXFQjXj0nPfy9yRGuxaUBQkWXSOWa5EAv7S9Z1sljlkZP6cKdfDGYsBb/4N1W5Oj1qogzNtRo5LGwKe9Re3zPY3SO8RXACfpNaKjdjpoOQa9GjQ/igDVH8r1k+Oc7nEnRPZBm0w9aJIM9kS42lbjynVuOJMZIotZbk1NloCodNyRQw3vEEP7kq6bRZsQFp2qF/mr+hIPH8lo/WF3hh+2NivdrzmrKKhPnoqSgSsEttL9a6ueGOP7Io3j2lAFqb9hEj1uC3tPRpYcBpTZX7GAloAENSasFwMdBIdszifDrRW42wzXw==
最後一步: 複製Activation Code到手動啟用視窗,點選啟用。
可能遇到的錯誤
序列號輸入後顯示x,啟用按鈕無法點選.
檢查是否是product或者語言或者版本號選擇,填寫錯誤。
我遇到的就是語言選成了0 English,然後啟用按鈕無法點選。
keygen執行時會報錯:
[-] ./navicat-keygen/main.cpp:174 ->
BIO_new_file failed.
如果這個檔案有問題,會報錯:
[-] ./navicat-keygen/main.cpp:63 ->
PEM_read_bio_RSAPrivateKey failed.
Hints: Are you sure that you DO provide a valid RSA private key file?
我目前只遇到過上面這些錯誤,但都是操作不對引起的,正常流程不會有錯。
最後工作
現在Navicat15資料夾下的navicat15-premium-cs-patched.AppImage
就是最終破解了的應用,複製這個應用到你想要的地方就行。
閒麻煩的直接執行就用命令,會啟動一個終端。
$ ./navicat15-premium-cs-patched.AppImage
優化,將其新增到啟動器當中
來自一個優秀(菜逼)程式設計師的強迫症,制止了我直接使用命令列啟動的方式。
我當前是deepin系統
。開啟/usr/share/applicaions資料夾,這裡面能看到所有的應用。
我們為navicat15建立一個叫navicat15.desktop的傢伙。
[Desktop Entry]
Name=navicat15
Comment=navicat15
Exec=/home/wangtao/app/navicat15/navicat15-premium-cs-patched.AppImage
Icon=/home/wangtao/app/navicat15/navicat15.png
Terminal=false
Categories=Development
Type=Application
說明
第一行是必須的,就像shell指令碼要加入#!/bin/bash一樣,用於系統識別
第二行Name自己隨意填,用於顯示和搜尋
第三行Comment備註,和Name填一樣就行
第四行Exec是指應用可執行檔案路徑
第五行Icon是指應用圖示的路徑
第六行Terminal表示啟動時是否需要顯示終端,建議設定為false
第七行是指這個應用的分類
第八行Type就填Application
建立好之後就開啟啟動器就會看到,且能正常啟動了。
安裝後清理
# 取消掛載,掛載點用全路徑,不確定全路徑的用df -h直接看或者pwd
$ sudo umount /home/wangtao/Navicat15/navicat15-premium-cs-patched
# 清理多餘檔案
$ sudo rm -rf Navicat15/
- Kotlin常用的by lazy你真的瞭解嗎
- Kotlin物件的懶載入方式?by lazy 與 lateinit 的異同
- Vue2 中自定義圖片懶載入指令 v-lazy
- 畢昇編譯器優化:Lazy Code Motion
- 能說一說 Kotlin 中 lateinit 和 lazy 的區別嗎?
- kotlin - 你真的瞭解 by lazy嗎
- 防抖輔助繪畫神器 —— Lazy Nezumi Pro 入門(一)【預設】
- Lazy Nezumi Pro 的 L-System 教程(一)
- 防抖輔助繪畫神器 —— Lazy Nezumi Pro 入門(七)【尺規】
- Spring系列之@Scope、@DependsOn、@ImportResource、@Lazy 詳解
- 「實戰」用原生的 Intersection Observer API 實現 Lazy Loading
- Swift-漏掉lazy引發的一個神奇的bug
- 當 Swift 中的 lazy、weak 碰上 NSObject
- Swift 中的關鍵字——Lazy
- 演算法解析:查詢連結串列環結構的入口結點
- [mit6.s081] 筆記 Lab5: Lazy Page Allocation | 記憶體頁懶分配
- 逆變與協變---徹底弄懂TS相容性檢查
- 寫更好的 Swift 程式碼:效能優化利器 Lazy
- 鴻蒙開源第三方元件——SkinSprite晝夜模式切換元件
- Deepin20下安裝navicat15