环境说明 推荐使用 https://github.com/117503445/elasticsearch-deploy 进行快速的部署,就不用进行下述的手动破解了,部署完 把 https://github.com/117503445/elasticsearch-deploy/blob/main/license.json 传到 ES 上直接就激活了。
破解 正常激活流程 用户要先去官网申请/购买个 License,形如 https://github.com/117503445/elasticsearch-deploy/blob/main/license.json ,然后把这个 License 上传到 ES 的后台。ES 会检查这个 License 有没有被篡改,没被篡改的话再根据这个 License 的信息进行激活。
破解思路 license 中有个 signature 字段,ES 会根据这个字段判断 License 是否被篡改。只要取消 ES 的这个判断逻辑,就可以随便篡改 License,达到激活的目的了。
具体步骤 我是基于 官方 ES Docker 镜像 7.12.0 版本进行破解的。 关键路径
/use/local/bin/docker-entrypoint.sh Docker 镜像启动脚本
/usr/share/elasticsearch ES安装位置
因为涉及 Java 编译,先装上相关依赖。yum install java-devel
,保证有 javac 这个命令。
然后
1 2 3 cd /rootmkdir crack cd crack
创建 2 个文件
/root/crack/LicenseVerifier.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package org.elasticsearch.license;import java.nio.*;import org.elasticsearch.common.bytes.*;import java.security.*;import java.util.*;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 [] publicKeyData) { return true ; } public static boolean verifyLicense (final License license) { return true ; } }
/root/crack/XPackBuild.java
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 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_0109: { shortHash = "Unknown" ; date = "Unknown" ; } CURRENT = new XPackBuild(shortHash, date); } }
这 2 个代码是对 /usr/share/elasticsearch/modules/x-pack-core/x-pack-core-7.12.0.jar 进行解包以后反编译出来的,然后删掉了验证相关的代码。具体怎么做的可以看引用的博客。
有了这 2 个 Java 文件以后,就可以进行编译了。
1 2 3 4 5 6 7 8 ES_HOME="/usr/share/elasticsearch" ES_JAR=$(cd $ES_HOME && ls lib/elasticsearch-[0-9]*.jar) ESCORE_JAR=$(cd $ES_HOME && ls lib/elasticsearch-core-*.jar) LUCENE_JAR=$(cd $ES_HOME && ls lib/lucene-core-*.jar) XPACK_JAR=$(cd $ES_HOME && ls modules/x-pack-core/x-pack-core-*.jar) javac -cp "${ES_HOME} /${ES_JAR} :${ES_HOME} /${LUCENE_JAR} :${ES_HOME} /${XPACK_JAR} :${ES_HOME} /${ESCORE_JAR} " LicenseVerifier.java javac -cp "${ES_HOME} /${ES_JAR} :${ES_HOME} /${LUCENE_JAR} :${ES_HOME} /${XPACK_JAR} :${ES_HOME} /${ESCORE_JAR} " XPackBuild.java
执行 这段脚本,就可以得到 2 个 Java 代码 对应的 class 文件。
然后 把 x-pack-core-7.12.0.jar 解压,替换掉 2 个 class 文件,再打包再丢回去,破解就成功了。
Ref Elasticsearch 7.x 白金版
最后更新时间:2023-04-25 15:38:21