先正常安裝 elasticSearch, kibana。
1. 如果是6.5.2版本,可以直接下載jar文件:https://download.csdn.net/download/bigben0123/10932740。跳過此步。
重寫x-pack下的2個類:LicenseVerifier.java和XPackBuild.java
直接拿走重寫完的類
鏈接: https://pan.baidu.com/s/1ESqoZW8eieO7Zdgs31hxsQ 密碼: uqnd
覆蓋流程
1.用zip軟件打開 找到的目標jar包 elasticsearch-6.5.2\modules\x-pack\x-pack-core\x-pack-core-6.5.2.jar。
2.用LicenseVerifier.class
覆蓋x-pack-core-6.5.2.jar\org\elasticsearch\license
目錄下的同名文件
3.同理用 XPackBuild.class
覆蓋 x-pack-core-6.5.2.jar\org\elasticsearch\xpack\core
目錄下的同名文件
直接保存成新的jar。替換以前的即可。
2. 在elasticsearch.yml 中 添加一下配置
xpack.security.enabled:false
重啟elasticsearch
3. 在kibana的左邊菜單 Management-> Licence -> apply trail license。等待幾個小時后收到 license,修改如下兩項:
"type":"platinum","issue_date_in_millis":1548115200000,"expiry_date_in_millis":3107746200000
4,在kibana的左邊菜單 Management-> Licence ->update license即可。
參考:
https://www.plaza4me.com/article/20180825223849878 靠譜
https://www.jianshu.com/p/6acfeabb44f8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
https://www.jianshu.com/p/1ff67bb363dd
https://blog.csdn.net/q258523454/article/details/82426837
破解原理:
用Luyten 反編譯x-pack-core-6.5.2.jar文件。Luyten下載地址:https://github.com/deathmarine/Luyten/releases/tag/v0.5.3。
軟件下載下來,打開軟件,把x-pack-core-6.5.2.jar 丟進去,就能看到我們jar包的源代碼了。
我們需要把2個文件提取出來進行修改。
org.elasticsearch.license.LicenseVerifier
org.elasticsearch.xpack.core.XPackBuild
1、修改LicenseVerifier
LicenseVerifier 中有兩個靜態方法,這就是驗證授權文件是否有效的方法,我們把它修改為全部返回true.

package org.elasticsearch.license; import java.nio.*; import org.elasticsearch.common.bytes.*; import java.util.*; import java.security.*; import org.elasticsearch.common.xcontent.*; import org.apache.lucene.util.*; import org.elasticsearch.core.internal.io.*; import java.io.*; public class LicenseVerifier { public static boolean verifyLicense(final License license, final byte[] encryptedPublicKeyData) { return true; } public static boolean verifyLicense(final License license) { return true; } }
2、修改XPackBuild
XPackBuild 中最后一個靜態代碼塊中 try的部分全部刪除,這部分會驗證jar包是否被修改.
package org.elasticsearch.xpack.core; import org.elasticsearch.common.SuppressForbidden; import org.elasticsearch.common.io.PathUtils; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Path; public class XPackBuild { public static final XPackBuild CURRENT; private String shortHash; private String date; static { String shortHash; String date; shortHash = "Unknown"; date = "Unknown"; CURRENT = new XPackBuild(shortHash, date); } @SuppressForbidden(reason = "looks up path of xpack.jar directly") static Path getElasticsearchCodebase() { URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation(); try { return PathUtils.get(url.toURI()); } catch (URISyntaxException bogus) { throw new RuntimeException(bogus); } } XPackBuild(String shortHash, String date) { this.shortHash = shortHash; this.date = date; } public String shortHash() { return shortHash; } public String date() { return date; } }
編譯修改后的java文件
原文寫的是:
-
javac -cp ".:./x-pack-core-6.3.2.jar:./elasticsearch-6.4.0/lib/*" LicenseVerifier.java
-
javac -cp ".:./x-pack-core-6.3.2.jar:./elasticsearch-6.4.0/lib/*" XPackBuild.java
我使用的是:
-
javac -cp "/Users/mac/Documents/elasticsearch-6.4.0/modules/x-pack-core/x-pack-core-6.4.0.jar:/Users/mac/Documents/elasticsearch-6.4.0/lib/*" LicenseVerifier.java
-
javac -cp "/Users/mac/Documents/elasticsearch-6.4.0/modules/x-pack-core/x-pack-core-6.4.0.jar:/Users/mac/Documents/elasticsearch-6.4.0/lib/*" XPackBuild.java
需要注意的是,編譯這兩個文件的時候 需要指定依賴包的位置 如果你的位置和我的有區別,注意修改。
將編譯好的class文件重新壓回x-pack-core-6.4.0.jar
解壓x-pack-core-6.4.0.jar 會得到一個 x-pack-core-6.4.0目錄,按照其位置將編譯好的2個 class文件放到我們目錄里面,替換老的。
-
直接用命令即可
-
[unjar] jar -xvf abc.jar
-
[jar] jar cf abc.jar input-files