hazelcast License generate

  |  

事情背景

最近在使用 Vert.x 工具集的全家桶做微服务的相关开发,Vert.x默认使用集群管理器是 hazelcast 。在经过相关使用后,惊喜的发现hazelcast提供了可视化的集群管理工具 Management Center 可以进行可视化管理。
喔, so cool. 功能详情

hazelcast

撸起袖子开始干,跟着官方文档把可视化管理工具搭建起来了,突然发现处于开发模式(仅限2个节点)。噗。。。吐血。

hazelcast

跟着引导来到 30-Day License Key 页面,跟着提示一步一步填写了信息,然后就是等。

三天后~

咦~ 为啥我还没有收到申请的试用license呢?翻遍了邮箱的各个角落,最后确认确实是没有收到。额~ 这TM就尴尬了。顿时不爽的感觉就上来了,这他妈让我白等了三天啊。

今天这事就是**,也TM要把它给办咯。

去同性交友网(Github)瞅瞅看有没有大神破解过,吃个现成的。然而可能经过2个小时的搜索,发现大神们都很尊重知识付费( 或者是hazelcast不热门,不屑于去破解吧。哈哈哈,我就当是大神们尊重知识付费吧 )。

那没办法咯,自己琢磨琢磨吧。

hazelcast

先搂一眼这个可视化管理工具包的内容。哎哟哟~ war包啊。那要祭出神器啊 JD-GUI hazelcast

源码阅读

hazelcast-mancenter-3.10.2.war.src

第一眼就看到了 com.hazelcast.license 包,先记着。再瞅瞅看还有没有通过类名就能找到的重点。 com.hazelcast.webmonitor.service.LicenseManager 嗯哼,这个类貌似就是重点了。

com.hazelcast.license.util.LicenseHelper.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

public static License checkLicenseKeyPerFeature(String licenseKey, String versionString, Feature feature) {
License license = getLicense(licenseKey, versionString);
if (!license.getFeatures().contains(feature)) {
throw new InvalidLicenseException("The Feature " + feature.getText() + " is not enabled for your license key." + "Please contact sales@hazelcast.com");
}
return license;
}

public static License getLicense(String licenseKey, String versionString) {
if (licenseKey == null) {
throw new InvalidLicenseException("License Key not configured!");
}
License license = null;
try {
license = LicenseExtractorV2.extractLicense(licenseKey);
} catch (InvalidLicenseException e1) {
try {
license = LicenseExtractorV3.extractLicense(licenseKey);
} catch (InvalidLicenseException e2) {
license = LicenseExtractorV4.extractLicense(licenseKey);
}
}
int version = extractHazelcastMajorMinorVersionAsInt(versionString);
if ((license.getHazelcastVersion() != 99) && (license.getHazelcastVersion() != version)) {
throw new InvalidLicenseException("This license cannot work with your hazelcast version!");
}
if ((license.isTrial()) && (isExpired(license))) {
throw new InvalidLicenseException("Trial license has expired! Please contact sales@hazelcast.com");
}
if (isExpired(license)) {
throw new InvalidLicenseException("Enterprise License has expired! Please contact sales@hazelcast.com");
}
return license;
}

最后跟着代码一步一步找到了 com.hazelcast.license.extractor.LicenseExtractorV4.extractLicense() 方法,代码就不贴了,就是提取license的算法。那这不是来活儿吗?

分析算法规则

LicenseExtractorV4

最后发现个问题,那就是 Expired 的日期最大就到2099年。不过想想2099年啊,那时候还需要人写代码么?哈哈哈~

测试验证

LicenseExtractorV4
LicenseExtractorV4

哈哈哈,妥儿了~

练练手(好久没写Swing了。)

声明:

  • 如需生产环境应用,请购买正版
  • 相关代码纯属研究与爱好,请在学习使用后删除
hazelcast-license-generate




文章目录
  1. 事情背景
  2. 今天这事就是**,也TM要把它给办咯。
    1. 源码阅读
    2. 分析算法规则
    3. 测试验证
    4. 练练手(好久没写Swing了。)
 |   |  10.2k