先标记一下, 后面会详细整理:
用DbVisualizer来直接使用ElasticSearch, 第一件事就是破解x-pack-core-6.4.0.
不然你用Dbvis连接es会报错:
dbvisualizer current license is non-compliant for [jdbc]
dbvisualizer current license is non-compliant for [jdbc]
所以别慌,大概思路是这样的:
- 找到es中的x-pack-core-6.4.0.jar
- 解压x-pack-core-6.4.0
- 反编译x-pack-core-6.4.0
- 修改证书验证类LicenseVerifier和XPackBuild
- 然后重新编译
- 替换旧的x-pack-core-6.4.0
- 此时elasticsearch失去了验证功能,缺的只有是一个铂金证书
- 去官网申请一个basic证书
- 修改证书为为
platinum证书(铂金版)
- 将证书上传到elasticsearch(服务已开启)
- 重新用DbVisualizer链接es
话不多说,直接上方法,下面的破解原文是来自大菜菜的博客, [原文链接], 我这里稍作修改
你可直接下载我已经破解的x-pack-core-6.4.0.jar
点击下载破解包: x-pack-core-6.4.0.jar
点击下载dbvis驱动:x-pack-sql-jdbc-6.4.0.jar
步骤一:破解x-pack-core-6.4.0
下载 elasticsearch
下载页面:https://www.elastic.co/downloads/elasticsearch
下载下来,解压压缩包,x-pack-core-6.4.0.jar 就位于 elasticsearch-6.4.0/modules/x-pack-core 目录下面
使用luyten反编译x-pack-core-6.4.0.jar
下载 luyten
下载页面:https://github.com/deathmarine/Luyten/releases
软件下载下来,打开软件,把x-pack-core-6.4.0.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.io.*;
import java.net.*;
import org.elasticsearch.common.*;
import java.nio.file.*;
import java.io.*;
import java.util.jar.*;
public class XPackBuild
{
public static final XPackBuild CURRENT;
private String shortHash;
private String date;
@SuppressForbidden(reason = "looks up path of xpack.jar directly")
static Path getElasticsearchCodebase() {
final URL url = XPackBuild.class.getProtectionDomain().getCodeSource().getLocation();
try {
return PathUtils.get(url.toURI());
}
catch (URISyntaxException bogus) {
throw new RuntimeException(bogus);
}
}
XPackBuild(final String shortHash, final String date) {
this.shortHash = shortHash;
this.date = date;
}
public String shortHash() {
return this.shortHash;
}
public String date() {
return this.date;
}
static {
final Path path = getElasticsearchCodebase();
String shortHash = null;
String date = null;
Label_0157: {
shortHash = "Unknown";
date = "Unknown";
}
CURRENT = new XPackBuild(shortHash, date);
}
}
可能你的版本没有Label_0157标签, 那么就是这样
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
导入授权文件
1、 先从官网申请basic授权文件
https://license.elastic.co/registration
注意邮箱要正确,地区写中国,保证能收到邮件,然后从邮箱里面的链接获取basic证书
2、 授权文件修改
原始证书:
{
"license": {
"uid": "9f9443d7-f48f-4141-a7df-551dd7868e0d",
"type": "basic",
"issue_date_in_millis": 1536105600000,
"expiry_date_in_millis": 1567727999999,
"max_nodes": 100,
"issued_to": "Li Si (MYHONE)",
"issuer": "Web Form",
"signature": "AAAAAwAAAA2OamcbwjbOtF7/y1QJAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1XXXXlZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQBAXDSpRK5vJaJ4DduuK35/flhEXes5cCAKJ40rIkR0kDx9Nd5ZaiIxiEXQLbpT2ZG5H6znytn1/BITYvP9pOZsDgZBK7hL32UPC4j8Lar05A009NDIX8Tp0bhHT0iFB4dvYGmE3eZpgAoKD5FvRRsM9YuS3bUyMhVJwCdJqi2g6GfD2MTywEXSj+2CNMv5gUCMa2CM2x2Z+iIx+FbbpSpnsk4F3jqr+U83i1Fpkitv+ZSSSOD6yWc692MHFUBVGnTDW5vkxp+gMK6RK30kvZvmobOjqUvgaXbBPav7DEW1EGpfgXsdsMbZ6ZzvmF28tPUHpZxb4jUbHDjHRCggNXXB",
"start_date_in_millis": 1536105600000
}
}
时间戳、时间转换工具:https://tool.lu/timestamp
修改expiry_date_in_millis(到期日期,我写的2050年)后的证书:
platinum
表示白金版,可以使用所有功能
{
"license": {
"uid": "9f9443d7-f48f-4141-a7df-551dd7868e0d",
"type": "platinum", # 修改授权为白金版本
"issue_date_in_millis": 1536105600000,
"expiry_date_in_millis": 2546011910000, # 修改到期时间
"start_date_in_millis": 1536105600000,
"max_nodes": 100,
"issued_to": "Li Si (MYHONE)",
"issuer": "Web Form",
"signature": "AAAAAwAAAA2OamcbwjbOtF7/y1QJAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1XXXXlZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQBAXDSpRK5vJaJ4DduuK35/flhEXes5cCAKJ40rIkR0kDx9Nd5ZaiIxiEXQLbpT2ZG5H6znytn1/BITYvP9pOZsDgZBK7hL32UPC4j8Lar05A009NDIX8Tp0bhHT0iFB4dvYGmE3eZpgAoKD5FvRRsM9YuS3bUyMhVJwCdJqi2g6GfD2MTywEXSj+2CNMv5gUCMa2CM2x2Z+iIx+FbbpSpnsk4F3jqr+U83i1Fpkitv+ZSSSOD6yWc692MHFUBVGnTDW5vkxp+gMK6RK30kvZvmobOjqUvgaXbBPav7DEW1EGpfgXsdsMbZ6ZzvmF28tPUHpZxb4jUbHDjHRCggNXXB",
}
}
3.上传证书到elasticSearch
注意:这里你可能上传失败,碰到:Cannot install a [PLATINUM] license unless TLS is configured or security is disabled,
需要去修改elasticsearch.yml,在最后加上
xpack.security.enabled: false
记得在上传证书的过程之前保证开启elasticsearch服务
3.1 可以通过API接口上传
curl -u elastic:elastic -XPUT ‘http://es-ip:port/_xpack/license’ -H “Content-Type: application/json” -d @/tmp/license.json
或者不适用账号密码
curl -XPUT 'http://xx.xx.xx.xx:9200/_xpack/license?acknowledge=true' -H "Content-Type: application/json" -d @abc.json
3.2 也可以直接通过post方法
http://127.0.0.1:9200/_license?acknowledge=true
or
http://你服务器ip:9200/_license?acknowledge=true
直接把修改的证书post过去,我用的postman工具
步骤二:
下载DbVisualizer10.0破解版,网上有很多,随便找一个
然后连接elasticsearch就可以完整的适用了
Dbvis怎么连接elasticsearch可以参考 : https://elasticsearch.cn/article/687
下载DbVisualizer10.0可以用这个 链接:https://pan.baidu.com/s/1EzgzrKId7A8g-6Nr3BEB4A 密码:hbpm
其他参考:
https://www.jianshu.com/p/76abe4419465
https://www.xiaocaicai.com/2018/08/28/x-pack-6-4-0-%E7%A0%B4%E8%A7%A3/